Payment Reception Form
Description of the Working Scheme.
On the client's web server, a payment form is generated and provided to the user for submission.
After submitting the form, the user is redirected to the processing page to complete the payment.
After the payment is processed, the user is redirected either to the SUCCESS_URL or the FAIL_URL. At the same time, an empty GET request is sent to the STATUS_URL, and upon receiving it, the payment status should be requested (using the /api/einvoice/status endpoint). The INVOICE_ID from the previously generated form should be passed, and further actions should be taken based on the received response.
If you need to accept payment without redirecting to the processing site, you should pass the form as GET parameters to the same address and open the page in an IFRAME on the merchant's website.
<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>
Field Decryption (fields marked with an asterisk are mandatory)
Field | Discription |
---|---|
CLIENT_ID* | Cash register number from the personal account |
SIGN* | Request signature |
SIGN_ORDER* | Order of field concatenation when forming the signature |
INVOICE_ID* | Invoice number in the merchant's accounting system. Invoice numbers must be unique (uniqueness is checked)!!! With one number, you can accept payment only once!!! |
AMOUNT* | The amount to be debited |
ACCOUNT | User identifier in the merchant's system (account number or any other unique identifier) |
CURRENCY* | Currency for issuing the invoice. Available currencies: UAH, USD, EUR, LTC, BTC, BCH, USDT |
PAYMENT_CURRENCY | Currency in which the payment should be accepted. Available currencies: Airtel Money, MGA - airtel.mga Airtel Money, USD CONGO - airtel-congo.usd Airtel Money, CDF CONGO - airtel-congo.cdf Airtel Money, XAF CAMEROON - airtel-cameroon.xaf Airtel Money, XAF CONGO-BRAZZAVILLE - airtel-congo-brazzaville.xaf Airtel Money, GHS GHANA - airtel-ghana.ghs Airtel Money, KES KENYA - airtel-kenya.kes Airtel Money, MWK MALAWI - airtel-malawi.mwk Airtel Money, RWF RWANDA - airtel-rwanda.rwf Airtel Money, TZS TANZANIA - airtel-tanzania.tzs Airtel Money, UGX UGANDA - airtel-uganda.ugx Airtel Money, ZMW ZAMBIA - airtel-zambia.zmw Bank Transfer, NGN - bank.ngn Bitcoin, BTC - bitcoin Bitcoin Cash, BCH - bitcoin_cash ChainLink, LINK - link EFT, ZAR SOUTH-AFRICA - eft-south-africa.zar Ethereum, ETH - ethereum Expresso, XOF SENEGAL - expresso-senegal.xof FreeMoney, XOF SENEGAL - free_money-senegal.xof Halotel, TZS TANZANIA - halotel-tanzania.tzs 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 MPesa, KES KENYA - mpesa-kenya.kes MPesa, TZS TANZANIA - mpesa-tanzania.tzs MTN, XOF TOGO - mtn-togo.xof MTN, XOF CI - mtn-ci.xof MTN, XOF BENIN - mtn-benin.xof MTN, GNF GUINEA - mtn-guinea.gnf MTN, XAF CAMEROON - mtn-cameroon.xaf MTN, GHS GHANA - mtn-ghana.ghs MTN, RWF RWANDA - mtn-rwanda.rwf MTN, UGX UGANDA - mtn-uganda.ugx MTN, ZMW ZAMBIA - mtn-zambia.zmw MVola, MGA - mvola.mga OPay, NGN - opay.ngn 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 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 Orange Money, XAF CAMEROON - orange_money-cameroon.xaf Orange Money, RWF RWANDA - orange_money-rwanda.rwf Orange Money, SLL SIERRA-LEONE - orange_money-sierra-leone.sll PalmPay, NGN - palmpay.ngn PayTM, INR - paytm.inr Phone PE, INR - phonepe.inr T-Money, XOF - tmoney.xof TCash, KES KENYA - tcash-kenya.kes Tether ERC20, USDT ERC20 - usdt_erc20 Tether TRC20, USDT TRC20 - usdt_trc20 Tigo, GHS GHANA - tigo-ghana.ghs Tigo, TZS TANZANIA - tigo-tanzania.tzs TNM, MWK MALAWI - tnm-malawi.mwk Tron, TRX - tron UPI, INR - upi.inr USDC TRC20, USDC TRC20 - usdc_trc20 Vanilla Pay, MGA - vanilla_pay.mga Verve, NGN - verve.ngn VisaMaster, UAH - visamaster.uah VisaMaster, USD - visamaster.usd VisaMaster, EUR - visamaster.eur VisaMaster, NGN - visamaster.ngn VisaMaster, XOF - visamaster.xof Vodafone, CDF CONGO - vodafone-congo.cdf Vodafone, GHS GHANA - vodafone-ghana.ghs Vodafone, TZS TANZANIA - vodafone-tanzania.tzs Wave, XOF SENEGAL - wave-senegal.xof Wave, XOF CI - wave-ci.xof WizAll, XOF SENEGAL - wiz_all-senegal.xof Zamtel, ZMW ZAMBIA - zamtel-zambia.zmw , NGN - cash_terminal.ngn |
DESCRIPTION | Description of the invoice |
SUCCESS_URL* | URL to which the user will be redirected after successful payment |
FAIL_URL* | URL to which the user will be redirected after unsuccessful payment |
STATUS_URL* | URL to which a callback is sent when the invoice reaches its final status. An empty GET request is sent, and upon receiving it, the merchant should request the invoice status via the API and make decisions based on the received data |
When making the request, either the CURRENCY or PAYMENT_CURRENCY field is mandatory. In case both fields are provided, the priority is given to PAYMENT_CURRENCY, and the CURRENCY field is ignored.
Example of signature formation in 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;