Créer un remboursement
L'appel qui restitue des fonds sur un paiement réussi, ses paramètres et sa réponse.
Le paiement est désigné par son id Wajub. Votre propre reference sur le paiement n'est pas
acceptée ici, car la recherche porte sur l'id du paiement et rien d'autre.
https://api.wajub.com/refundspaymentstringobligatoireid du paiement, par exemple trx_test_CSUGajfv9xh0XQ5wu2lx. Votre reference marchand n'est pas acceptée.reasonenumobligatoireamountnumberfacultatifcurrencystringfacultatiffees_bearerenumfacultatifmerchant ou customer : qui supporte les frais Wajub du paiement pour la part remboursée. Par défaut : vos réglages de remboursement, sinon celui qui a payé les frais au paiement. Voir plus bas.referencestringfacultatifmetadataobjectfacultatifdispute_settlement marque le remboursement que Wajub crée quand vous acceptez un litige, et elle est retirée si vous l'envoyez.reason est obligatoire et sa liste est fermée. Toute valeur hors de cette liste donne un 422 :
choisissez la plus proche plutôt que d'en inventer une.
| Motif | Quand l'utiliser |
|---|---|
requested_by_customer | Le client l'a demandé, et vous avez accepté |
duplicate | La même commande a été payée deux fois |
fraudulent | Vous pensez que le paiement n'a pas été fait par le titulaire de la carte ou du compte |
product_not_received | La marchandise n'est jamais arrivée |
service_not_delivered | Un service a été payé mais pas fourni |
wrong_amount | Vous avez débité plus que prévu |
customer_complaint | Une réclamation réglée sans désigner de responsable |
merchant_error | Votre propre erreur : mauvais article, mauvais prix, mauvais client |
network_error | Le paiement est passé de votre côté mais pas du leur |
transaction_error | Une panne technique dans le paiement lui-même |
reconciliation | Correction d'un écart trouvé lors d'un rapprochement |
Envoyez l'appel depuis votre serveur, avec une Idempotency-Key si le remboursement peut être
déclenché par un processus qui retente ses appels.
curl https://api.wajub.com/refunds \
-H "Authorization: sk_test.xxxxxxxxxxxxxxxx…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: refund-order-4172" \
-d '{
"payment": "trx_test_CSUGajfv9xh0XQ5wu2lx",
"amount": 2000,
"reason": "product_not_received",
"reference": "rma-881"
}'Wajub répond 201 Created. Rien n'a encore quitté votre solde : le remboursement a été accepté et
mis en file, et status vous indique où il en est.
Le paiement est porté par transaction, pas par payment. Les lectures renvoient aussi un détail
tax quand une taxe s'applique, une timeline des changements de statut, et failure_reason avec
failure_message quand le remboursement a échoué. Un remboursement qui a pris de l'argent sur
votre solde renvoie en plus ledger_balance_currency, ledger_balance_before et
ledger_balance_after : votre solde juste avant le remboursement et juste après, si bien que la
différence est ce qu'il a pris, part des frais du paiement comprise quand elle a bougé avec lui. En
sandbox, ce sont ceux de votre solde sandbox. refund.succeeded part une fois le remboursement sorti
de votre solde : son contenu les porte aussi, et il peut arriver quelques minutes après le passage
du remboursement à succeeded. Un remboursement qui
n'a rien pris, parce qu'un litige perdu l'avait déjà fait, n'a aucun des trois.
Idempotency-Key, et ce sur quoi porte la clé
La clé est conservée sur le remboursement lui-même et n'expire jamais : la même clé désigne
toujours le même remboursement, et n'en crée jamais un second. Pendant 24 heures, la première
réponse est rejouée telle quelle, et tout changement du corps est refusé avec un 422. Ensuite,
le remboursement d'origine revient dans un nouveau 201, sauf si la clé sert pour un autre
paiement ou un autre amount, ce qui donne aussi un 422. Une clé est consommée pour toujours :
dérivez-la de ce remboursement précis, une commande et un numéro de remboursement, pas de la
commande seule. Un second remboursement du même montant ne ferait que vous rendre le premier.