Aller au contenu principal

Traiter des paiements

À la suite d'une requête pour accepter ou faire des paiements, une réponse du serveur est reçue.

Cette réponse contient des détails par rapport à la transaction que vous venez d'initier. Soit il s'agit des raisons pour les quelles nous n'avons pas pu initier une transaction (il y a donc une erreur) ou soit il s'agit des données sur la transaction initiée.

Dans tous les cas il faut traiter la réponse d'une transaction.


Traiter une requête de paiement

Ci-dessous un exemple d'initiation de paiement et de réponse reçue en retour.

collection.js
const momo = require("@chipdeals/momo-api");momo.setApiKey("test_FOdigzgSopV8GZggZa89");momo  .collect()  .amount(100)  .currency("XOF")  .from("22951010200")  .firstName("Iyam")  .lastName("EVERICH")  .create()  .onSuccess((paymentData) => handlePyamentSuccess(paymentData))  .onError((paymentData) => handlePaymentFails(paymentData));function handlePyamentSuccess(paymentData) {  console.log("payment succeeded");  console.log("payment data: ", paymentData);}function handlePyamentSuccess(paymentData) {  console.log("payment failed");}
Console
dev@Chipdeals:~/Chipdeals/projects/nodejs-doc$ node collection.js2022-11-13 08:03:32:527 Collection request2022-11-13 08:03:36:126 TEST [202] Transaction is pending2022-11-13 08:03:39:287 TEST [201] Data in validation2022-11-13 08:03:46:138 TEST [203] Data are validated, server is working2022-11-13 08:03:51:125 TEST [204] Waiting for ussd push validation2022-11-13 08:03:54:898 TEST [200] Successfully processed transaction2022-11-13 08:03:54:898 TEST [OK] 100 XOF received form customerpayment succeededpayment data:  {  reference: 'f1d87806-72c0-4a46-8560-89c3fb6f7070',  senderPhoneNumber: '22951010200',  senderOperator: 'MTN',  senderFirstName: 'Iyam',  senderLastName: 'EVERICH',  currency: 'XOF',  amount: 100,  status: 'success',  statusMessage: 'Successfully processed transaction',  startTimestampInSecond: 1668326614,  endTimestampInSecond: 0,  senderCountryCode: 'BJ',  originalCurrency: 'XOF',  statusMessageCode: 200,  originalAmount: 100,  transactionType: 'payment'}
Voir plus d'exemple
 

Details de l'objet Reponse d'un paiement

Le format de réponse est le même que celui présenté en introduction

En cas de validation de la requête, une propriété payment qui remplace anyObjet est ajoutée. L'objet payment contient des details de la transaction. Il est structuré comme suit :

PropriétéExampleDescription
reference"aca59aa9-830b-4bf7-bb0a-74cd438130ee"Référence de la transaction
senderPhoneNumber"22951945200"Numéro de téléphone de l'utilisateur qui paie
senderCountryCode"BJ"Numéro de téléphone de l'utilisateur qui paie
senderOperator"MTN"Numéro de téléphone de l'utilisateur qui paie
senderFirstName"Iyam"Prénom de l'utilisateur qui paie
senderLastName"EVERICH"Nom de l'utilisateur qui paie
originalCurrency"XOF"Monnaie de paiement que vous avez indiquée dans votre demande
currency"XOF"Monnaie locale du numéro de téléphone de l'utilisateur
status"pending"Statut de la transaction (pending ou success ou error)
statusMessage"pending"Message expliquant ce qui se passe exactement pour la transaction
statusMessageCode202Code spécifique de l'état exact de la transaction. Voir plus
startTimestampInSecond1655968250Horodatage en secondes du moment où vous avez lancé le paiement
endTimestampInSecond0Horodatage en secondes du moment où une transaction est terminée
amount10Montant en monnaie locale que l'utilisateur paie
originalAmount10Montant que vous avez spécifié que l'utilisateur doit payer dans votre demande
transactionType"payment"Type de transaction. Toujours payment dans le cas d'une demande de paiemnt


Traiter une requête de dépôt

Ci-dessous un exemple d'initiation de dépôt et de réponse reçue en retour.

deposit.js
const momo = require("@chipdeals/momo-api");momo.setApiKey("test_FOdigzgSopV8GZggZa89");momo  .deposit()  .amount(100)  .currency("XOF")  .to("22951010200")  .create()  .onSuccess((paymentData) => handlePaymentSuccess(paymentData))  .onError((paymentData) => handlePaymentFailed(paymentData));function handlePaymentSuccess(paymentData) {  console.log("deposit succeeded");  console.log("deposit data: ", paymentData);}function handlePaymentFailed(paymentData) {  console.log("deposit failed");}
Console
dev@Chipdeals:~/Chipdeals/projects/nodejs-doc$ node deposit.js2022-11-13 11:36:26:129 Disbursement request2022-11-13 11:36:27:765 TEST [202] Transaction is pending2022-11-13 11:36:34:304 TEST [201] Data in validation2022-11-13 11:36:38:938 TEST [203] Data are validated, server is working2022-11-13 11:36:42:374 TEST [200] Successfully processed transaction2022-11-13 11:36:42:375 TEST [OK] 100 XOF sent to customerdeposit succeededdeposit data:  {  reference: '4c732c68-0bfe-428f-a95e-ae14cc815505',  recipientPhoneNumber: '22951010200',  recipientOperator: 'MTN',  currency: 'XOF',  amount: 100,  status: 'success',  statusMessage: 'Successfully processed transaction',  startTimestampInSecond: 1668339387,  endTimestampInSecond: 0,  recipientCountryCode: 'BJ',  originalCurrency: 'XOF',  statusMessageCode: 200,  originalAmount: 100,  transactionType: 'deposit'}
Voir plus d'exemple
 

Details de l'objet Reponse d'un dépôt

Le format de réponse est le même que celui présenté en introduction

En cas de validation de la requête, une propriété deposit qui remplace anyObjet est ajoutée. L'objet deposit contient des details de la transaction. Il est structuré comme suit :

PropriétéExampleDescription
reference"f46efbee-1aca-4be7-934f-08ec0f25b726"Référence de la transaction
recipientPhoneNumber"22951945200"Numéro de téléphone du bénéficiaire
recipientCountryCode"BJ"Code pays du bénéficiaire
recipientOperator"MTN"Opérateur du bénéficiaire
originalCurrency"XOF"Monnaie de paiement que vous avez indiquée dans votre demande
currency"XOF"Monnaie locale du numéro de téléphone du destinataire
status"pending"Statut de la transaction (pending ou success ou error)
statusMessage"pending"Message expliquant ce qui se passe exactement pour la transaction
statusMessageCode202Code spécifique de l'état exact de la transaction. Voir plus
startTimestampInSecond1655968250Horodatage en secondes du moment où vous avez lancé le paiement
endTimestampInSecond0Horodatage en secondes du moment où une transaction est terminée
amount10Montant en monnaie locale que l'utilisateur reçoit
originalAmount10Montant que vous avez spécifié que l'utilisateur recevra dans votre demande
transactionType"deposit"Type de transaction. Toujours deposit dans le cas d'un depôt