/
Підтвердження платежу 3DS (3-D Secure)

UAPAY - національний платіжний сервіс

Підтвердження платежу 3DS (3-D Secure)

Після того, як у відповідь на метод POST /api/invoicer/payments/checkStatus було отримано 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/invoicer/payments/checkStatus:

{ "status": 1, "data": { "id": "d00c4a4e-30e6-499c-8dba-9fae2816094c", "externalId": "ab527192-0f81-423d-a192-d6d270d3a9d2.1611586242200", "receiptId": "8SRY8F4AK95E", "status": "NEEDS_CONFIRMATION", "amount": 1200, "pluginId": 38, "key": "7qAux1wS9QrEjMutPcahmtHvUBECmXuiyYu6AhQrCgZu.kkcou74107632189319", "confirmation": { "type": "3DS", "url": "https://api.demo.uapay.ua/api/acs/virtual/form", "form": { "PaReq": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvcmRlcklkIjoiMjc5MTZjODEtOTIwYi00YWFlLTkxNWYtZjEwNjBiZDdkOGYxIiwiYW1vdW50IjoxMzI0LCJwYW5NYXNrZWQiOiI1NDU0NTQ1NDU0IiwiaWF0IjoxNjExNTg2MjQzfQ.Wof7YYGOed6AJdeuPGzQZ8T6sZEz_i9zq1o84CjAgEM", "MD": "27916c81-920b-4aae-915f-f1060bd7d8f1" } }, "redirect": { "url": "https://api.demo.uapay.ua/api/payments/ecom/confirm", "params": { "id": "d00c4a4e-30e6-499c-8dba-9fae2816094c" }, "directAcs": null }, "paymentStatus": "NEW" } }

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

<!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', 'hidden'); paReq.setAttribute('name', 'PaReq'); paReq.setAttribute('value', data.confirmation.form.PaReq); form.appendChild(paReq); var md = document.createElement('input'); md.setAttribute('type', 'hidden'); md.setAttribute('name', 'MD'); md.setAttribute('value', data.confirmation.form.MD); form.appendChild(md); var termUrl = document.createElement('input'); termUrl.setAttribute('type', 'hidden'); termUrl.setAttribute('name', 'TermUrl'); termUrl.setAttribute('value', termUrl); form.appendChild(termUrl); document.body.append(form); form.submit(); </script> </body> </html>

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

Related content

Створення платежу по інвойсу (Invoices payments create)
Створення платежу по інвойсу (Invoices payments create)
More like this
Завершення платежу (Invoices payments complete)
Завершення платежу (Invoices payments complete)
More like this
Підтвердження платежу 3DS
Підтвердження платежу 3DS
More like this
Створення інвойсу (Invoice create)
Створення інвойсу (Invoice create)
Read with this
Підтвердження платежу по інвойсу (Invoices payments confirm)
Підтвердження платежу по інвойсу (Invoices payments confirm)
More like this

UAPAY - національний платіжний сервіс
pay@uapay.ua