Після того, як у відповідь на метод 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}

де:

Приклад відповіді на метод 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"
  }
}

Приклад сформованого TermUrl:
https://api.demo.uapay.ua/api/payments/ecom/confirm?id=d00c4a4e-30e6-499c-8dba-9fae2816094c&redirect=https://uapay.ua/

Щоб зробити 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);

    form.submit();
    </script>
    </body>

</html>

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