Прийняти платіж з введенням реквізитів на сторінці магазину (Charge)

Після проходження клієнтом аутентифікації і редиректу на 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 має бути обов'язковим.

Примітка: поля (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 сервера емітента, на який необхідно перенаправити користувача для аутентифікації

https://3dsecure.ukrsibbank.com/acs/auth/start.do

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":" "
}
Приклад запиту на serviceUrl
{
"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 вікорістовується для швидкого проведення платежу однією дією. Віконується в межах одностадійної схеми.
Результатом ОБРОБКИ запиту є списання  коштів з картки клієнта.