Formulaire d'acceptation de paiement
Description du schéma de fonctionnement.
Côté serveur Web du client, un formulaire de paiement est généré et envoyé à l'utilisateur pour soumission.
Après avoir soumis le formulaire, l'utilisateur est redirigé vers le traitement pour effectuer un paiement.
Une fois le paiement effectué, l'utilisateur revient soit à SUCCESS_URL, soit à FAIL_URL. Un GET vide est à son tour envoyé à STATUS_URL une demande à réception de laquelle vous devez demander l'état du paiement (request /api/einvoice/status Accounts - Vérification de l'état actuel du compte) en transmettant INVOICE_ID à partir du formulaire généré précédemment et, en fonction de la réponse reçue, prenez d'autres mesures.
Si vous devez accepter un paiement sans vous rendre sur le site de traitement, alors le formulaire doit être envoyé en tant que paramètres GET à la même adresse et ouvrir la page dans IFRAME sur le site Internet du commerçant. p>
<form action="https://acs.dpay.africa/acs" method="POST"> <input type="hidden" name="CLIENT_ID" value="numéro de caisse" /> <input type="hidden" name="SIGN" value="signature du formulaire" /> <input type="hidden" name="SIGN_ORDER" value="AMOUNT;CURRENCY;..." /> <input type="hidden" name="INVOICE_ID" value="numéro de commande" /> <input type="hidden" name="AMOUNT" value="100.00" /> <input type="hidden" name="ACCOUNT" value="123" /> <input type="hidden" name="CURRENCY" value="USD" /> <input type="hidden" name="PAYMENT_CURRENCY" value="visamaster.usd" /> <input type="hidden" name="DESCRIPTION" value="Some payment description" /> <input type="hidden" name="SUCCESS_URL" value="https://test.com/success/invoice_id" /> <input type="hidden" name="FAIL_URL" value="https://test.com/fail/invoice_id" /> <input type="hidden" name="STATUS_URL" value="https://test.com/status/invoice_id" /> </form>
Explication des champs (les champs marqués d'un astérisque sont obligatoires)
Champ | Description |
---|---|
CLIENT_ID* | Numéro de caissier de votre compte personnel |
SIGN* | Demander une signature |
SIGN_ORDER* | L'ordre de concaténation des champs lors de la génération d'une signature |
INVOICE_ID* | Numéro de compte dans le système comptable du magasin. Les numéros de compte doivent être uniques (l'unicité est vérifiée) !!! Avec un seul numéro, vous ne pouvez accepter le paiement qu'une seule fois !!! |
AMOUNT* | Montant à radier |
ACCOUNT | ID utilisateur dans le système marchand (numéro de compte ou tout autre identifiant unique) |
CURRENCY* | Devise de facturation. Devises disponibles: UAH, USD, EUR, LTC, BTC, BCH, USDT |
PAYMENT_CURRENCY | Devise dans laquelle le paiement doit être accepté. Devises disponibles: , CDF CONGO - afrimoney-congo.cdf , MGA - airtel.mga , USD CONGO - airtel-congo.usd , CDF CONGO - airtel-congo.cdf , XAF CAMEROON - airtel-cameroon.xaf , XAF CONGO-BRAZZAVILLE - airtel-congo-brazzaville.xaf , GHS GHANA - airtel-ghana.ghs , KES KENYA - airtel-kenya.kes , MWK MALAWI - airtel-malawi.mwk , RWF RWANDA - airtel-rwanda.rwf , TZS TANZANIA - airtel-tanzania.tzs , UGX UGANDA - airtel-uganda.ugx , ZMW ZAMBIA - airtel-zambia.zmw , NGN - bank.ngn Bitcoin, BTC - bitcoin , BCH - bitcoin_cash , LINK - link , XOF BURKINA-FASO - coris-burkina-faso.xof , ZAR SOUTH-AFRICA - eft-south-africa.zar Ethereum, ETH - ethereum , XOF SENEGAL - expresso-senegal.xof FreeMoney, XOF SENEGAL - free_money-senegal.xof , TZS TANZANIA - halotel-tanzania.tzs , 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 , USD CONGO - mpesa-congo.usd , CDF CONGO - mpesa-congo.cdf , KES KENYA - mpesa-kenya.kes , 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 , MGA - mvola.mga , 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, SLE SIERRA-LEONE - orange_money-sierra-leone.sle , NGN - palmpay.ngn , INR - paytm.inr , INR - phonepe.inr T-Money, XOF TOGO - tmoney.xof , KES KENYA - tcash-kenya.kes Tether ERC20, USDT ERC20 - usdt_erc20 Tether TRC20, USDT TRC20 - usdt_trc20 , GHS GHANA - tigo-ghana.ghs , TZS TANZANIA - tigo-tanzania.tzs , MWK MALAWI - tnm-malawi.mwk Tron, TRX - tron , INR - upi.inr , USDC TRC20 - usdc_trc20 , MGA - vanilla_pay.mga , NGN - verve.ngn Visa/Master, UAH - visamaster.uah Visa/Master, USD - visamaster.usd Visa/Master, EUR - visamaster.eur Visa/Master, NGN - visamaster.ngn , CDF CONGO - vodafone-congo.cdf , GHS GHANA - vodafone-ghana.ghs , TZS TANZANIA - vodafone-tanzania.tzs Wave, XOF SENEGAL - wave-senegal.xof Wave, XOF CI - wave-ci.xof , XOF SENEGAL - wiz_all-senegal.xof , ZMW ZAMBIA - zamtel-zambia.zmw , NGN - cash_terminal.ngn , AFG - cash_terminal.afg |
DESCRIPTION | Description du compte |
SUCCESS_URL* | URL vers laquelle l'utilisateur sera redirigé après un paiement réussi |
FAIL_URL* | URL vers laquelle l'utilisateur sera redirigé après un paiement infructueux |
STATUS_URL* | URL vers laquelle un callback sera envoyé lorsque le compte passera au statut final. Une requête GET vide est envoyée, à réception de laquelle le commerçant doit demander l'état du compte via l'API et prendre une décision sur la base des données reçues |
Lors de la soumission d'une demande, l'un des champs CURRENCY ou PAYMENT_CURRENCY est obligatoire. Si deux champs sont renseignés, la priorité est donnée à PAYMENT_CURRENCY et le champ CURRENCY est ignoré.
Un exemple de formation d'une signature en PHP.
$clientID = 123; $secret = "qwertyuiop123456"; $data = [ "CLIENT_ID" => $clientID, "INVOICE_ID" => "1", "AMOUNT" => "100", "CURRENCY" => "USD", "PAYMENT_CURRENCY" => "visamaster.usd", "DESCRIPTION" => "Test payment", "SUCCESS_URL" => "https://test.com/success/1", "FAIL_URL" => "https://test.com/fail/1", "STATUS_URL" => "https://test.com/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;