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

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Current »

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

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

</html>

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

  • No labels