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 7 Next »

После вызова метода оплаты сделки платежи за товар и за доставку инициируют оплату и зачастую могут ожидать подтверждения плательщиком.

Для того чтобы узнать что платеж требует подтверждения вызываем метод получение данных по сделки и в ответе смотрим на объекты платежей data.productPayment и data.handlerPayment. Статус самого платежа status остается в "NEW", но статус waitingFor должен быть в статусе "CONFIRMATION", это означает что этот платеж нужно подтверждать. В поле details.confirmation, будет храниться объект, который нужен для подтверждения платежа.

Пример:

...
"productPayment": {
    "id": 994,
    "amount": 10000,
    "commissionAmount": 600,
    "status": "NEW",
    "statusCode": "NEEDS_CONFIRMATION",
    "statusText": null,
    "type": "P2P",
    "waitingFor": "CONFIRMATION",
    "details": {
        "confirmation": {
            "type": "LOOKUP",
            "attemptsLeft": 3,
            "redirectUrl": "https://api.escrowbox.stage.uapay.ua/api/payments/994/confirmations"
        }
    },
    "payReceipt": "https://api.stage.uapay.ua/api/receipts/f8c2f0dd-454e-4264-8051-80a51fd4d167.pdf",
    "reverseReceipt": null,
    "finishReceipt": null
},
...

Существуют несколько видов подтверждения платежа, чтобы понять какой вид у данного платежа смотрим на details.confirmation.type.

Подтверждения LOOKUP

Поле details.confirmation.type = "LOOKUP".

Пример объекта details.confirmation:

{
    "type": "LOOKUP",
    "attemptsLeft": 3,
    "redirectUrl": "https://api.escrowbox.demo.uapay.ua/api/payments/994/confirmations"
}

Процедура подтверждения платежа заключаеться в том, что плательщику приходит смс с кодом подтверждения от банка-эмитента, который нужно передать в метод подтверждения платежа системы Escrow Box. Процесс передачи этого кода от плательщика до системы Escrow Box лежит на реализации клиента-интегратора. Как пример, это просто обычная форма с одним полем и кнопкой "Отправить" на клиентской части сервиса клиента-интегратора, которая вызовет метод сервиса клиента-интегратора, а он в свою очередь вызовет метод подтверждения платежа системы Escrow Box c параметром code, в этом случае details.confirmation.redirectUrl являеться URL-ом на который нужно отпрвить подтверждение. 

Подтверждения 3DS

Поле details.confirmation.type = "3DS".

Пример объекта details.confirmation:

{
  "type": "3DS",
  "url": "https://3ds.ukrsotsbank.com:443/way4acs/pa?id=W6yNkAC_RQUjjjRwIyPCsg",
  "form": {
    "PaReq": "eJxVUttuo0AMfc5foH4Ac0kgQzQZiZaHjVRatqXqY4WIldDdTMgMZJt+/dpAVtmRRtg+Z2yObV3uHUD2CnXvwOgcvK92EDTb9V2RvsDpQ0RzxecRV2qRqDsz00PYzGb6DM43R2tEyEOp2dVFpK2siaKlEnwpZMzjSM6VZhRFMAdX7yvboT3TVX263zyZSMZJLDSbXEIO4DaZ4eOR4wcZY5gItjqAKcF3wTVjUFb+sbG/As0GkFj1sbeduxjFF5pdHQJ699vsu65dMSbkEiXwUKzmeFhebNgL+PZoPRTuWGNLGrsLP32rGb3Cx+xGhC56sv1Y76vZmrx8+37O0u+nMl08Zz8jtP/k411rRgxibqsOjORC8UQuA8FXkVpxbNMQH3pzoN81cUi6J4fiLdVLJ5Cw28CguXcObH0xieIo+uoRBF8oC5CHA/tnk6AbEfrhxzSbusNepxV/3xT95fHs2sX58N7vT01ns+0bl680sYE05W6wuSIhFZNDqSkdFhjWhjo3bBha/23eX56EwQw="
  },
  "redirectUrl": "https://api.escrowbox.demo.uapay.ua/api/payments/564/confirmations"
}

Процедура подтверждения платежа заключаеться в том, что плательщику приходит смс с кодом подтверждения от банка-эмитента, который нужно ввести на странице подтверждения(ACS) банка-эмитента. Процес вызова этой страницы лежит на реализации клиента-интегратора. На клиентской части сервиса клиента-интегратора нужно реализовать форму с методом отправки POST запроса при submit на action details.confirmation.url c двома полями: "TermUrl"(в значение указать URL системы-интегратора на который прийдет postback от банка с данными для подтверждения платежа) и "PaReq"(в значение указать значение из details.confirmation.form.PaReq). После вызова данной формы, плательщика редиректит на страницу подтверждения платежа банка-эмитента, там он подтверждает платеж и после успешного подтверждения банк отправляет postback на URL, который был указан в форме. Есть ситуации, когда банк не показывает страницу подтверждения платежа, а сразу отправляет postback, смотрите ниже информацию по quasi-3DS. В ответ прийдет объект с параметром "PaRes" и от некоторых банков может быть параметр "MD", эти параметры нужно отправить в метод подтверждения платежа системы Escrow Box на URL details.confirmation.redirectUrl.

Пример формы:

<html>

<body>
    <form action="https://acs.privatbank.ua/pPaReqMC.jsp" method="POST">
        <input name="TermUrl" value="https://api.escrowbox.stage.uapay.ua/api/payments/1072/confirmations"></input><br>
        <input name="PaReq" value="eJxVUsFuwjAMPfMXFR/QJC2lDQqR2DgMaR1o685TVSzoNkJJ2g34+tkpIBa1qu337NTPVsXWAszfoOosaJWDc+UGgno9Ha5mr3D4EEksucxiEWcjOdQD5cN6MFA/YF29N1qEPIwUu7qINKXRiRhnaZLGPEtTLtNEMYoimIOttqVp0R6osjo8LF50Eo3lWCh2cQnZgV3MNe9P1H+Q0YeJYMod6AJcG1wrBkXpnmvzFSjmQWJV+8609qQzPlLs6hDQ2W+9bdtmwpiIUmyBh2IS42H5asFewTV742Bl9xVKUptN+OkaxSgLk9ldE2rVke36+471WufF+3lZzJLlPD/m5w1H+zef+3eqGDGIuS5b0BEXmeBcBiKb4BPHivm412ZHv6sFH4ecoza9S0hDN85uMKH3Id93Zy2Y6qRlhujNIwiO2BogD4d2s6mpu0bU49NlPlWLesc84VKmEmdKQ/KxS6ka9cTxjHyt2ourGGVjPb8pJJZfKrT+LdsfSpO6aw=="></input><br>
        <button>Submit</button>
    </form>
</body>

</html>

Завершающий этап подтверждения

Подтвержденным платеж будет считаться, когда его статус смениться с "NEW" на "PAID", а не когда вызоветься метод подтверждения платежа. В связи с этим, после вызова метода подтверждения платежа при любом подтверждении, нужно трекать состояния сделки и смотреть на состояние платежей. 

Есть еще одна разновидность подтверждения платежа - quasi-3DS, он не вынесен как отдельный тип подтверждения, так как включает в себя оба подтверждения. Сначала нужно будет подтвердить 3DS(страница банка-эмитента тут не показывается, сразу идет редирект, без подтверждения плательщика), а потом платеж становиться с подтверждением LOOKUP.

  • No labels