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.
- NodeJs
- Laravel
- PHP
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");}
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'}
<?phpuse Illuminate\Support\Facades\Route;Route::get('/collect', function () { $momo = new \Chipdeals\MomoApi\Momo(); $momo->setApiKey("test_FOdigzgSopV8GZggZa89"); $transaction = $momo ->collect() ->amount(100) ->currency("XOF") ->from("22990630401") ->firstName("Iyam") ->lastName("EVERICH") ->webhookUrl("https://webhook.site/e73cfd43-9703-4759-bf17-28d172f3b6fd") ->create(); $status = $transaction->getStatus(); if ($status == "pending") { echo "transaction started and is pending <br/>"; print_r($transaction->getArray()); } else { echo "transaction failed"; }});
transaction started and is pending
Array
(
[reference] => aca59aa9-830b-4bf7-bb0a-74cd438130ee
[phoneNumber] => 22990630401
[currency] => XOF
[operator] => MTN
[firstName] => Iyam
[lastName] => EVERICH
[originalCurrency] => XOF
[originalAmount] => 100
[amount] => 100
[status] => pending
[statusMessage] => Transaction is pending
[statusCode] => 202
[startTimestampInSecond] => 1668327832
[endTimestampInSecond] => 0
[isCollection] => true
)
<?phprequire_once("path/to/chipdeals-mobile-money-api.php");$momo = new Momo();$momo->setApiKey("test_FOdigzgSopV8GZggZa89");$transaction = $momo ->collect() ->amount(100) ->currency("XOF") ->from("22990630401") ->firstName("Iyam") ->lastName("EVERICH") ->webhookUrl("https://webhook.site/e73cfd43-9703-4759-bf17-28d172f3b6fd") ->create();$status = $transaction->getStatus();if ($status == "pending") { echo "transaction started and is pending <br/>"; print_r($transaction->getArray());} else { echo "transaction failed";}
transaction started and is pending
Array
(
[reference] => aca59aa9-830b-4bf7-bb0a-74cd438130ee
[phoneNumber] => 22990630401
[currency] => XOF
[operator] => MTN
[firstName] => Iyam
[lastName] => EVERICH
[originalCurrency] => XOF
[originalAmount] => 100
[amount] => 100
[status] => pending
[statusMessage] => Transaction is pending
[statusCode] => 202
[startTimestampInSecond] => 1668327832
[endTimestampInSecond] => 0
[isCollection] => true
)
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é | Example | Description |
---|---|---|
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 |
statusMessageCode | 202 | Code spécifique de l'état exact de la transaction. Voir plus |
startTimestampInSecond | 1655968250 | Horodatage en secondes du moment où vous avez lancé le paiement |
endTimestampInSecond | 0 | Horodatage en secondes du moment où une transaction est terminée |
amount | 10 | Montant en monnaie locale que l'utilisateur paie |
originalAmount | 10 | Montant 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.
- NodeJs
- Laravel
- PHP
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");}
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'}
<?phpuse Illuminate\Support\Facades\Route;Route::get('/deposit', function () { $momo = new \Chipdeals\MomoApi\Momo(); $momo->setApiKey("test_FOdigzgSopV8GZggZa89"); $transaction = $momo ->deposit() ->amount(100) ->currency("XOF") ->to('22990630401') ->webhookUrl("https://webhook.site/e73cfd43-9703-4759-bf17-28d172f3b6fd") ->create(); $status = $transaction->getStatus(); if ($status == "pending") { echo "transaction started and is pending <br/>"; print_r($transaction->getArray()); } else { echo "transaction failed"; }});
transaction started and is pending
Array
(
[reference] => f46efbee-1aca-4be7-934f-08ec0f25b726
[phoneNumber] => 22990630401
[currency] => XOF
[operator] => MTN
[firstName] =>
[lastName] =>
[originalCurrency] => XOF
[originalAmount] => 100
[amount] => 100
[status] => pending
[statusMessage] => Transaction is pending
[statusCode] => 202
[startTimestampInSecond] => 1668338996
[endTimestampInSecond] => 0
[isCollection] => false
)
<?phprequire_once("path/to/chipdeals-mobile-money-api.php");$momo = new Momo();$momo->setApiKey("test_FOdigzgSopV8GZggZa89");$transaction = $momo ->deposit() ->amount(100) ->currency("XOF") ->to('22990630401') ->webhookUrl("https://webhook.site/e73cfd43-9703-4759-bf17-28d172f3b6fd") ->create();$status = $transaction->getStatus();if ($status == "pending") { echo "transaction started and is pending <br/>"; print_r($transaction->getArray());} else { echo "transaction failed";}
transaction started and is pending
Array
(
[reference] => f46efbee-1aca-4be7-934f-08ec0f25b726
[phoneNumber] => 22990630401
[currency] => XOF
[operator] => MTN
[firstName] =>
[lastName] =>
[originalCurrency] => XOF
[originalAmount] => 100
[amount] => 100
[status] => pending
[statusMessage] => Transaction is pending
[statusCode] => 202
[startTimestampInSecond] => 1668338996
[endTimestampInSecond] => 0
[isCollection] => false
)
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é | Example | Description |
---|---|---|
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 |
statusMessageCode | 202 | Code spécifique de l'état exact de la transaction. Voir plus |
startTimestampInSecond | 1655968250 | Horodatage en secondes du moment où vous avez lancé le paiement |
endTimestampInSecond | 0 | Horodatage en secondes du moment où une transaction est terminée |
amount | 10 | Montant en monnaie locale que l'utilisateur reçoit |
originalAmount | 10 | Montant 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 |