API Web Vous pouvez utiliser l'api web pour developper votre application
Pour commencer, j'utiliserai axios. N'hésitez pas à utiliser n'importe quel client http, par exemple fetch
const axios = require ( "axios" ) ;
const apiUrl = "YOUR_API_URL" ; // Obtenez ceci depuis votre tableau de bord
const makePayment = async ( paymentData ) => {
try {
const response = await axios. post (apiUrl, paymentData, {
headers : {
"Content-Type" : "application/json" ,
},
}) ;
return response.data ;
} catch (error) {
lancer l 'erreur ;
}
};
const paymentData = {
totalPrice: 200 ,
article: [
{
sac: 100 ,
chaussure: 100 ,
},
],
personal_Info: [
{
userId: 1 ,
orderId: 123 ,
},
],
numeroSend: " 01010101 " ,
nomclient: " John Doe " ,
return_url: " https://your-domain.com/callback " ,
webhook_url: "https://your-domain.com/my-webhook-url" , // Le webhook doit accepter les requêtes POST pour recevoir les données.
};
Champ Type Description Exemple Exigé totalPriceNumber Montant total à payer 200 Oui articleArray<Object>Liste des articles avec leur prix [{"sac": 100, "chaussure": 100}]Oui numeroSendString Numéro de téléphone du client "01010101" Oui nomclientString Nom du client "John Doe" Oui personal_InfoArray<Object>Autres informations personnelles [{"userId": 1, "orderId": 123}]Non return_urlString url à rediriger après le paiement https://your-domain.com/callbackNon webhook_urlString url (POST) de où seront renvoyés les détails de la transaction https://your-domain.com/my-webhook-urlNon
{
"statut" : true ,
"token" : "5d58823b084564" ,
"message" : "paiement en cours" ,
"url" : "https://www.pay.moneyfusion.net/pay/6596aded36bd58823b084564"
}
Field Type Description statutBoolean Statut de la demande de paiement tokenString Jeton de paiement unique pour le suiv messageString Message d'état urlString URL de la page de paiement
const checkPaymentStatus = async ( token ) => {
try {
const response = await axios. get (
`https://www.pay.moneyfusion.net/paiementNotif/${ token }`
);
return response.data;
} catch (error) {
throw error;
}
};
{
"statut" : true ,
"data" : {
"_id" : "65df163b11ab882694573060" ,
"tokenPay" : "0d1d8bc9b6d2819c" ,
"numeroSend" : "01010101" ,
"nomclient" : "John Doe" ,
"personal_Info" : [
{
"userId" : 1 ,
"orderId" : 123
}
],
"numeroTransaction" : "0708889205" ,
"Montant" : 200 ,
"frais" : 5 ,
"statut" : "paid" ,
"moyen" : "orange" ,
"return_url" : "https://your-domain.com/callback" ,
"createdAt" : "2024-02-28T11:17:15.285Z"
},
"message" : "details paiement"
}
Status Description pendingLe paiement est en cours de traitement failureÉchec du paiement no paidPaiement non effectué paidPaiement réussi
Field Type Description _idString Transaction ID tokenPayString Payment token numeroSendString Numéro de téléphone du client nomclientString Nom du client personal_InfoArray<Object>Autres informations personnelles MontantNumber Montant de la transaction fraisNumber Frais de transaction statutString État des paiements moyenString Mode de paiement createdAtString Horaire de la transaction
{
"event" : "payin.session.pending" ,
"personal_Info" : [
{
"userId" : 1 ,
"orderId" : 123
}
],
"tokenPay" : "Le4Cnmm1Ac9yTgZMKQbz" ,
"numeroSend" : "01010101" ,
"nomclient" : "Kwameson" ,
"numeroTransaction" : "01010101" ,
"Montant" : 194 ,
"frais" : 6 ,
"return_url" : " https://your-domain.com/callback " ,
"webhook_url" : "https://your-domain.com/my-webhook-url" ,
"createdAt" : "2025-05-09T12:50:45.412Z"
}
Événement Description payin.session.pendingPaiement initié et en attente de traitement payin.session.completedPaiement effectué avec succès payin.session.cancelledPaiement annulé ou échoué
Il est possible que moneyfusion envoie plusieurs notifications pour une même transaction, notamment dans les cas suivants :
Répétition de l'événement payin.session.pending pendant la phase de traitement.
Envoi de l'événement payin.session.completed après confirmation du paiement.
Éventuel payin.session.cancelled en cas d'échec ou d'annulation.
Pour garantir un traitement fiable et éviter les doublons :
Identifie chaque transaction de manière unique grâce au champ tokenPay.
Vérifie l'état actuel de la transaction dans ta base de données avant d'effectuer une mise à jour.
Ignore les événements déjà traités ou ceux qui ne représentent pas une évolution de statut.
if (transactionExists && incomingStatus === currentStatus) {
// Ne rien faire : notification redondante
} else {
// Mettre à jour le statut de la transaction
}