Форма приема платежей
Описание схемы работы.
На стороне веб-сервера клиента формируется платежная форма и отдается пользователю на сабмит.
После сабмита формы пользователь перенаправляется на процессинг для совершения оплаты.
После проведения оплаты пользователь возвращается либо на SUCCESS_URL либо на FAIL_URL. На STATUS_URL в свою очередь отправляется пустой GET запрос при получении которого следует запросить статус платежа (запрос /api/einvoice/status Счета - Проверка текущего статуса счета) передав INVOICE_ID из сформированной ранее формы и на основании полученного ответа предпринимать дальнейшие действия.
Если следует принять оплату без перехода на сайт процессинга, то форму следует передавать как GET параметры на тот-же адрес и открывать страницу в IFRAME на сайте торговца.
<form action="https://acquiring.obmenka.ua/acs" method="POST">
<input type="hidden" name="CLIENT_ID" value="номер кассы" />
<input type="hidden" name="SIGN" value="подпись формы" />
<input type="hidden" name="SIGN_ORDER" value="AMOUNT;CURRENCY;..." />
<input type="hidden" name="INVOICE_ID" value="номер заказа" />
<input type="hidden" name="AMOUNT" value="100.00" />
<input type="hidden" name="ACCOUNT" value="123" />
<input type="hidden" name="CURRENCY" value="UAH" />
<input type="hidden" name="PAYMENT_CURRENCY" value="visamaster.uah" />
<input type="hidden" name="DESCRIPTION" value="Some payment description" />
<input type="hidden" name="SUCCESS_URL" value="https://test.ua/success/invoice_id" />
<input type="hidden" name="FAIL_URL" value="https://test.ua/fail/invoice_id" />
<input type="hidden" name="STATUS_URL" value="https://test.ua/status/invoice_id" />
</form>
Расшифровка полей (поля, помеченные звездочкой, обязательны)
Поле | Описание |
---|---|
CLIENT_ID* | Номер кассы из личного кабинете |
SIGN* | Подпись запроса |
SIGN_ORDER* | Порядок конкатенации полей при формировании подписи |
INVOICE_ID* | Номер счета в системе учета магазина. Номера счетов должны быть уникальны (уникальность проверяется)!!! С одним номером можно принять оплату только один раз!!! |
AMOUNT* | Сумма которую следует списать |
ACCOUNT | идентификатор пользователя в системе мерчанта (номер аккаунта или любой другой уникальный идентификатор) |
CURRENCY* | Валюта выставления счета. Доспуные валюты: UAH, USD, EUR, LTC, BTC, BCH, USDT |
PAYMENT_CURRENCY | Валюта в которой следует принять оплату. Доступные валюты: Bitcoin, BTC - bitcoin Bitcoin Cash, BCH - bitcoin_cash ChainLink, LINK - link Ethereum, ETH - ethereum IMPS, INR - imps.inr Litecoin, LTC - litecoin Monero, XMR - monero PayTM, INR - paytm.inr Phone PE, INR - phonepe.inr Tether ERC20, USDT ERC20 - usdt_erc20 Tether TRC20, USDT TRC20 - usdt_trc20 Tron, TRX - tron UPI, INR - upi.inr USDC TRC20, USDC TRC20 - usdc_trc20 Visa/Master, UAH - visamaster.uah |
DESCRIPTION | Описание счета |
SUCCESS_URL* | URL на который будет перенаправлен пользователь после успешной оплаты |
FAIL_URL* | URL на который будет перенаправлен пользователь после неуспешной оплаты |
STATUS_URL* | URL на который будет отправлен callback при переходе счета в финальный статус. Отправляется пустой GET запрос, при получении которого мерчант должен запросить статус счета по API и принимать решение на основании полученных данных |
При передаче запроса одно из полей CURRENCY или PAYMENT_CURRENCY обязательно. В случае передачи двух полей приоритет отдается PAYMENT_CURRENCY и поле CURRENCY игнорируется.
Пример формирования подписи на PHP.
$clientID = 123;
$secret = "qwertyuiop123456";
$data = [
"CLIENT_ID" => $clientID,
"INVOICE_ID" => "1",
"AMOUNT" => "100",
"CURRENCY" => "UAH",
"PAYMENT_CURRENCY" => "visamaster.uah",
"DESCRIPTION" => "Test payment",
"SUCCESS_URL" => "https://test.ua/success/1",
"FAIL_URL" => "https://test.ua/fail/1",
"STATUS_URL" => "https://test.ua/status/1"
];
$sign = base64_encode(md5($secret . base64_encode(sha1(implode("", $data), true)) . $secret, true));
$data["SIGN_ORDER"] = implode(";", array_keys($data));
$data["SIGN"] = $sign;