Після проходження клієнтом аутентифікації і редиректу на TempUrl з результатом, отриманим від емітента, мерчант направляє запит COMPLETE_3DS.
Запит Charge використовується для швидкого проведення платежу однією дією. Виконується в рамках одностадійної схеми.
Результатом обробки запиту є списання грошових коштів з картки клієнта.
Параметри запиту
Запит з необхідними параметрами формується на стороні продавця та передається методом POST по протоколу HTTP на URL https://api.wayforpay.com/api
З метою підтвердження валідності даних необхідно згенерувати і передати в запиті HMAC_MD5 контрольний підпис з використанням SecretKey торговця.
Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів merchantAccount, merchantDomainName, orderReference, orderDate, amount, currency, productName[0], productName[1]..., productName[n], productCount[0], productCount[1],..., productCount[n], productPrice[0], productPrice[1],..., productPrice[n] розділених “;” (крапка з комою) в кодуванні UTF-8
Параметр | Опис | Обов'язкове |
transactionType | CHARGE | так |
merchantAccount | Ідентифікатор продавця. Дане значення присвоюється Вам з боку WayForPay | так |
merchantAuthType | Тип авторизації. Може приймати одне з наступних значень: - SimpleSignature (за замовчуванням) | ні |
merchantDomainName | Доменне ім'я веб-сайту торговця | так |
merchantTransactionType | Тип транзакції. Може приймати одне з наступних значень: - SALE - списання коштів з картки - AUTH - блокування коштів на картці | так |
merchantTransactionSecureType | Тип безпеки для проходження транзакції. Може приймати одне з наступних значень: - AUTO - 3DS - NON3DS | так |
merchantSignature | Підпис запиту | так |
apiVersion | Версія протоколу. Значення за замовчуванням: 1 | так |
serviceUrl | URL, на який система повинна відправляти відповідь з результатом платежу безпосередньо мерчанту | ні |
orderReference | Унікальний номер замовлення в системі торговця | так |
orderDate | Дата розміщення замовлення | так |
amount | Сума замовлення | так |
currency | Валюта замовлення: UAH (USD, EUR) | так |
holdTimeout | Час дії блокування коштів в секундах. За замовчуванням: 1 728 000 (20 днів). Максимально 1 728 000 (20 днів). Мінімальне значення 60 (1 хвилина). | ні |
card | Номер карти 16 цифр | ні |
expMonth | Місяць закінчення терміну дії карти - MM | ні |
expYear | Рік закінчення терміну дії карти - YYYY | ні |
cardCvv | Секретний код карти CVV / CVV2 | ні |
cardHolder | ім'я власника карти, як зазначено на карті | ні |
recToken | Токен карти - для повторного списання без участі клієнта (без передачі реквізитів карти) | ні |
productName[] | Масив з найменуванням замовлених товарів | так |
productPrice[] | Масив з цінами за одиницю товару. Дана інформація буде відображена на сторінці оплати замовлення | так |
productCount[] | Масив з кількістю замовленого товару по кожній позиції. | так |
clientAccountId | унікальний ідентифікатор клієнта в системі торговця (логін, email і т.д.) | ні |
socialUri | Унікальний ідентифікатор ресурсу. | ні |
clientFirstName | ім'я клієнта | так |
clientLastName | Прізвище клієнта | так |
clientEmail | Email клієнта | так |
clientPhone | Номер телефону клієнта | так |
clientCountry | Країна клієнта | так |
clientIpAddress | ip-адреса, з якого заходив клієнт на сторінку мерчанта для здійснення покупки | ні |
clientAddress | Адреса клієнта | ні |
clientCity | Місто клієнту | ні |
clientState | Штат/Область клієнта | ні |
clientZipCode | Поштовий індекс клієнта | ні |
Примітка: поля (card + expMonth + expYear + cardCvv + cardHolder) або recToken має бути обов'язковим.
При merchantTransactionSecureType = 3DS, первинно виконується перевірка карти на участь в програмі 3d secure.
Якщо карта не підтримує 3D Secure - повернеться відповідь Declined, код 1120, опис Authentication unavailable.
Якщо карта підтримує 3D Secure верифікацію, система Wayforpay поверне параметри для аутентифікації клієнта.
З даними параметрами мерчанту необхідно перенаправити клієнта на url емітента для аутентифікації.
Час протягом якого живе сесія на верифікацію - 15 хвилин. Якщо протягом 15 хвилин не буде отриманий COMPLETE_3DS, система відхилить транзакцію як неуспішну.
Параметр | Опис | Приклад |
merchantAccount | Ідентифікатор продавця | test_merch_n1 |
orderReference | Унікальний номер замовлення в системі торговця | order-1430206527 |
amount | Сума замовлення | 0.31 |
currency | Валюта замовлення | UAH |
authCode | код авторизації - присвоюється банком | null |
createdDate | дата створення запиту в psp | 1430206630 |
processingDate | дата процесування транзакції | null |
recToken | токен карти для рекаренгових списань | |
reason | Wait 3ds data | |
transactionStatus | статус транзакції | InProcessing |
reasonCode | код відмови | 5100 |
fee | сума комісії | 1 |
d3AcsUrl | адреса ACS сервера емітента, на який необхідно перенаправити користувача для аутентифікації | |
d3Md | Унікальний ідентифікатор, який необхідно передати на url методом POST під час перенаправлення клієнта | ODMyNzRmNjgtMjEyYS00ODAyLWExYjMtZTc1Y2ZkZTNjYTBi |
d3Pareq | PaReq повідомлення, яке необхідно передати на url методом POST під час перенаправлення клієнта | eJx1kmFvgjAQhv+K8QfQFkHBnE3YNNFF0ajZol+WBi+CAcRSVPbr 1yrO7cP66Z43vXvvroV1LBGH\nK4wqiRxmWJZij61kN2gvgk+bOZ7 TZW0Oi2CJJw5nlGVyzDmzqGUDeaDOk1EscsVBRKeXSchdx+1R\ nD0iDkKGcDDmjzfGZ51IXyF2GXGTI11iq1lSocyKA3BSIjlWuZM 096gB5AFQy5bFSRdknBKNjpotE\naKXJqRC1pfkpkqxIdJsmAcizx0Vlol IbXJMdnw9ndfi1zMLDXs0Oo3qzonQ+DOrpx2gAxNyAnVDI\n bcpc6thei9F+p9dnuvBNB5GZzji1OkwPfAcojEdwB6P\/5n\/m0k8gMY9q 7ntUyw8CvBbHHHWedvyJ\ngTyneB2bvUdKr3I\/3V5UuHo\/+7F MxsXhknbtFN+2m11qmrtfMhUT7ch8498AEFOGNA9Nmp+goz8\/\n5Bt+QbuA |
authTicket | тікет авторизації | d185a769977cc297b13bfd0edd9bdd29 |
merchantSignature | підпис запиту | 09c85c95722fee7c2283d5f189902035 |
Після отримання даних від системи Wayforpay, мерчанту необхідно передати на d3AcsUr методом POST параметри d3Pareq і d3Md у такій формі:
<FORM NAME="MPIFORM" ACTION='${D3ACSURL}' METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="PaReq" VALUE='${D3PAREQ }'>
<INPUT TYPE="HIDDEN" NAME="MD" VALUE='${D3MD }'>
<INPUT TYPE="HIDDEN" NAME="TermUrl" VALUE='${TEMPURL}'>
</FORM>
TempUrl - url переданий мерчантом, на який емітент поверне відповідь після аутентифікації клієнта.
Підтвердження 3d secure верифікації
Після проходження клієнтом аутентифікації і редиректу на TempUrl з результатом отриманим від емітента, мерчант направляє запит COMPLETE_3DS.
Параметр | Опис | Обов'язкове |
transactionType | COMPLETE_3DS | так |
authorization_ticket | тікет авторизації | так |
d3ds_md |
| ні |
d3ds_pares |
| так |
Параметри відповіді
При merchantTransactionSecureType= 3DS, первинно виконується перевірка карти на участь в програмі 3d secure.
Якщо карта не підтримує 3D Secure - повернеться відповідь Declined, код 1120, опис Authentication unavailable.
Якщо карта підтримує 3D Secure верифікацію, система Wayforpay поверне параметри для аутентифікації клієнта.
З даними параметрами Мерчант необхідно перенаправити клієнта на url емітента для аутентифікації.
Час протягом якого живе сесія на верифікацію - 15 хвилин. Якщо протягом 15 хвилин не буде отриманий COMPLETE_3DS, система відхилить транзакцію як неуспішну.
Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів merchantAccount, orderReference, amount, currency, authCode, cardPan, transactionStatus, reasonCode розділених ";" (крапка з комою) в кодуванні UTF-8
Параметр | Опис | Приклад |
merchantAccount | ідентифікатор продавця | test_merch_n1 |
orderReference | Унікальний номер замовлення в системі торговця | 1212dd1 |
merchantSignature | hash_hmac | |
amount | Сума замовлення | 100 |
currency | Валюта замовлення | UAH |
authCode | код авторизації - присвоюється банком | 324567 |
createdDate | дата створення запиту в psp (UTC) | 123456789 |
processingDate | дата процесування транзакції (UTC) | 12345678 |
cardPan | маскований номер карти (44 **** 4444) | 42****4242 |
cardType | типу карти: Visa / MasterCard | Visa |
issuerBankCountry | Країна карти в цифровому ISO 3166-1-Alpha 3 | 980 |
issuerBankName | Ім'я Банку карти | PrivatBank |
recToken | токен карти для рекаренгових списань | 121213321-3213213-3213213-321-3 |
transactionStatus | статус транзакції | Approved |
reason | Причина відмови | Ok |
reasonCode | код відмови | 1100 |
fee | Комісія psp | 0.00 |
paymentSystem | Платіжна система, через яку був здійснений платіж. | card |
Приклад запиту і відповіді
{
"transactionType":"CHARGE",
"merchantAccount":"test_merch_n1",
"merchantAuthType":"SimpleSignature",
"merchantDomainName":"www.super.org",
"merchantTransactionType":"AUTH",
"merchantTransactionSecureType": "NON3DS",
"merchantSignature":"60c5d743b71f79abe48c7183ada4b451",
"apiVersion":1,
"orderReference":"myOrder1",
"orderDate":1421412898,
"amount":0.13,
"currency":"UAH",
"card":"4111111111111111",
"expMonth":"11",
"expYear":"2020",
"cardCvv":"111",
"cardHolder":"TARAS BULBA",
"productName":["Samsung WB1100F","Samsung Galaxy Tab 4 7.0 8GB 3G Black"],
"productPrice":[21.1,30.99],
"productCount":[1,2],
"clientFirstName":"Bulba",
"clientLastName":"Taras",
"clientCountry":"UKR",
"clientEmail":"rob@mail.com",
"clientPhone":"380556667788",
"clientIpAdress":" "
}
{
"merchantAccount":"test_merch_n1",
"orderReference":"DH783023",
"merchantSignature":"",
"amount":1547.36,
"currency":"UAH",
"authCode":"541963",
"createdDate":12345678,
"processingDate":12345678,
"cardPan":"41****8217",
"cardType":"visa",
"issuerBankCountry":"980",
"issuerBankName":"Privatbank",
"recToken":"121213321-3213213-3213213-321-3",
"transactionStatus":"Approved",
"reason":"ok",
"reasonCode":"1100",
"fee":0,
"paymentSystem":"card"
}
Приклад коректної відповіді від мерчанту
Система WayForPay очікує отримати від серверу торговца наступну відповідь:
{
"orderReference":"DH783023",
"status":"accept",
"time":1415379863,
"signature":""
}
При merchantTransactionSecureType= 3DS, первинна виконуватись перевірка карти на участь в програмі 3d secure.
Якщо карта не підтримує 3D Secure - повернеться відповідь Declined, код 1120, опис Authentication unavailable.
Якщо карта підтримує 3D Secure верифікацію, система Wayforpay поверне параметри для аутентифікації клієнта.
З даними параметрами мерчанту необхідно перенаправити клієнта на url емітента для аутентифікації.
Час протягом якого живе сесія на верифікацію - 15 хвилин. Якщо протягом 15 хвилин не буде отриманий COMPLETE_3DS, система відхилить транзакцію як неуспішну.
Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів orderReference, status, time розділених ";" (крапка з комою) в кодуванні UTF-8
Повідомлення мерчанта про статус транзакції
Для авторизованих і перевірених замовлень (а також при зміні статусу замовлення) серевер WayForPay направляє на serviceUrl запит (HTTP_POST) що включає в себе дані замовлення. Дана інформація доповнюється контрольної підписом HMAC_MD5.
У разі, якщо WayForPay НЕ отримає коректну відповідь від сервера торговця, то система буде направляти запити на протязі 4-х діб або до отримання правильної відповіді.
Запит Charge вікорістовується для швидкого проведення платежу однією дією. Віконується в межах одностадійної схеми.
Результатом ОБРОБКИ запиту є списання коштів з картки клієнта.