Форма приема платежей
Описание схемы работы.
На стороне веб-сервера клиента формируется платежная форма и отдается пользователю на сабмит.
После сабмита формы пользователь перенаправляется на процессинг для совершения оплаты.
После проведения оплаты пользователь возвращается либо на 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 | Валюта в которой следует принять оплату. Доступные валюты: Airtel Money, MGA - airtel.mga Airtel Money, USD CONGO - airtel-congo.usd Airtel Money, CDF CONGO - airtel-congo.cdf Bank Transfer, NGN - bank.ngn Bitcoin, BTC - bitcoin Bitcoin Cash, BCH - bitcoin_cash ChainLink, LINK - link Ethereum, ETH - ethereum Expresso, XOF SENEGAL - expresso-senegal.xof FreeMoney, XOF SENEGAL - free_money-senegal.xof IMPS, INR - imps.inr Litecoin, LTC - litecoin Monero, XMR - monero MOOV, XOF TOGO - moov-togo.xof MOOV, XOF CI - moov-ci.xof MOOV, XOF BENIN - moov-benin.xof MOOV, XOF MALI - moov-mali.xof MOOV, XOF BURKINA-FASO - moov-burkina-faso.xof MPesa, USD CONGO - mpesa-congo.usd MPesa, CDF CONGO - mpesa-congo.cdf MTN, XOF TOGO - mtn-togo.xof MTN, XOF CI - mtn-ci.xof MTN, XOF BENIN - mtn-benin.xof MTN, GNF GUINEA - mtn-guinea.gnf MVola, MGA - mvola.mga Orange Money, MGA - orange_money.mga Orange Money, XOF TOGO - orange_money-togo.xof Orange Money, XOF CI - orange_money-ci.xof Orange Money, XOF BENIN - orange_money-benin.xof Orange Money, XOF SENEGAL - orange_money-senegal.xof Orange Money, XOF BURKINA-FASO - orange_money-burkina-faso.xof Orange Money, XOF MALI - orange_money-mali.xof Orange Money, USD CONGO - orange_money-congo.usd Orange Money, CDF CONGO - orange_money-congo.cdf Orange Money, GNF GUINEA - orange_money-guinea.gnf PayTM, INR - paytm.inr Phone PE, INR - phonepe.inr T-Money, XOF - tmoney.xof 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 Vanilla Pay, MGA - vanilla_pay.mga Verve, NGN - verve.ngn Visa/Master, UAH - visamaster.uah Visa/Master, USD - visamaster.usd Visa/Master, NGN - visamaster.ngn Visa/Master, XOF - visamaster.xof Wave, XOF SENEGAL - wave-senegal.xof Wave, XOF CI - wave-ci.xof WizAll, XOF SENEGAL - wiz_all-senegal.xof |
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;