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 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 VisaMaster, UAH - visamaster.uah VisaMaster, USD - visamaster.usd VisaMaster, NGN - visamaster.ngn VisaMaster, XOF - visamaster.xof Wave, XOF SENEGAL - wave-senegal.xof Wave, XOF CI - wave-ci.xof WizAll, XOF SENEGAL - wiz_all-senegal.xof |
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;