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 Bank Transfer, NGN - bank.ngn Bitcoin, BTC - bitcoin Bitcoin Cash, BCH - bitcoin_cash ChainLink, LINK - link Ethereum, ETH - ethereum 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 MTN, XOF TOGO - mtn-togo.xof MTN, XOF CI - mtn-ci.xof MTN, XOF BENIN - mtn-benin.xof 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 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 |
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;