Підтвердження платежу 3DS

Після того, як у відповідь на метод POST/api/payments/p2p/show було отримано data.status=NEEDS_CONFIRMATION та data.confirmation.type=3DS, необхідно перенаправити користувача на ACS-сторінку банка емітента для виконання підтвердження платежу.


Для цього потрібно виконати запит методом POST на URL data.confirmation.url. Якщо є параметри в об'єкті data.confirmation.form - їх потрібно передати в запиті (всі вони не є обов'язковими). Обов'язково потрібно передати параметр TermUrl, його потрібно сформувати за принципом URL + query string параметри: id, redirect, key (не є обов'язковим):

${redirectUrl}?id=${redirectParamsId}&key=${key}&redirect=${redirect}

де:

  • ${redirectUrl} - значення поля data.redirect.url з відповіді на запит отримання статусу платежу

  • ${redirectParamsId} - значення поля data.redirect.params.id з відповіді на запит отримання статусу платежу

  • ${key} - значення поля data.key з відповіді на запит створення платежу

  • ${redirect} - URL, на який буде виконано перенаправлення після завершення підтвердження на ACS-сторінці (зазвичай URL сторінки мерчанта)


Приклад відповіді на метод POST /api/payments/p2p/show:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 { "status":1, "data":{ "id":"6bb07565-6602-4482-b695-bbf410506a7d", "status":"NEEDS_CONFIRMATION", "number":"16851", "amount":100, "externalId":"123", "recipient":{ "phone":"380961234567", "email":null }, "confirmation":{ "type":"3DS", "url":"https://acs.privatbank.ua/pPaReqMC.jsp", "form":{ "PaReq":"eJxVUttOwzAMfd5fVHxAc1nTtVOINNgDk+g0wXjYE6o6i3WwrEtaYHw9dtqhESmqfY5j99jW650DmD9D1TkwugDvyzeI6u3tzWr2BKdXoWSaJmMpJ6lKbsxIB9iMRvoTnK+P1oiYx1Kzi4tMU1qjxulYJTLlUqlMcaUZoUgW4KpdaVu0R7qsTneLpcEaeSo0G1xiDuAWc8P7I/sPRvQwBdjyAGYNvo0uGaN16R9r+x5pFkiKqo6dbd3ZZDzR7OIQ0bkPs2vbZsqYkBOUwGMxHeNhxWrBnsA3R+th5Y4VtqS2b/HeN5rRK3zMrkToVUe27+t911tTrF/Oy/2GFz+L8/JnI5bz2VfR31vNKIIit2ULRnKRcSWySCRYfJpMNAt46M2BftekMekeHMIbqjcbSOKugaC5cw5sdTZ5xlH0xSMKvlEWYBwO7M8mQVci9P3DMJuqxV7LTOYqyZXkExpQwIZUNfYSR5OHXHVorGb0GvOFLaFGhYVC69+i/QK+brnK" } }, "redirect":{ "url":"https://api.demo.uapay.ua:443/api/payments/p2p/confirm", "params":{ "id":"6bb07565-6602-4482-b695-bbf410506a7d" } } } }

 


Щоб зробити POST-запит до банку емітенту, потрібно створити і викликати HTML-форму.

Приклад з використанням JavaScript:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <!DOCTYPE html> <html> <head> <title>Example call ACS</title> </head> <body> <script type="text/javascript"> var form = document.createElement('form'); form.setAttribute('method', 'POST'); form.setAttribute('action', data.confirmation.url); var paReq = document.createElement('input'); paReq.setAttribute('type', 'hiden '); paReq.setAttribute('name', 'PaReq'); paReq.setAttribute('value', data.confirmation.form.PaReq); form.appendChild(paReq); var md = document.createElement('input'); md.setAttribute('type', 'hiden '); md.setAttribute('name', 'MD'); md.setAttribute('value', data.confirmation.form.MD); form.appendChild(md); var termUrl = document.createElement('input'); termUrl.setAttribute('type', 'hiden'); termUrl.setAttribute('name', 'TermUrl'); termUrl.setAttribute('value', termUrl); form.appendChild(termUrl); document.body.appendChild(form); form.submit(); </script> </body> </html>


Після повернення користувача на сторінку необхідно продовжувати відправляти запит show, до тих пір, поки не буде отримано фінальний статус платежу.