dry-node
Version:
Initialiseur de structure Node Express typée et modulaire
61 lines (54 loc) • 2.05 kB
JavaScript
const axios = require("axios");
async function DryPaymentMomoFunction(phoneNumber, amount, currency) {
try {
const accessToken = await generateAccessToken();
console.log("presned-1")
const response = await axios.post(
`${MOMO_BASE_URL}/collection/v1_0/requesttopay`,
{
amount,
currency,
externalId: "123456",
payer: {
partyIdType: "MSISDN",
partyId: phoneNumber,
},
payerMessage: "Paiement par MoMo",
payeeNote: "Merci pour votre paiement",
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
"X-Reference-Id": Math.random().toString(36).substring(2), // ID unique
"X-Target-Environment": MOMO_TARGET_ENV,
"Ocp-Apim-Subscription-Key": MOMO_SUBSCRIPTION_KEY,
},
}
);
return {success: true, data: response.data}
} catch (error) {
console.error("Erreur lors de l'initiation du paiement :", error.response.data);
return {success: false, error: error.message}
}
}
const { MOMO_API_KEY, MOMO_SUBSCRIPTION_KEY, MOMO_TARGET_ENV, MOMO_BASE_URL } = process.env;
const generateAccessToken = async () => {
try {
const response = await axios.post(
`${MOMO_BASE_URL}/collection/token/`,
{},
{
headers: {
Authorization: `Basic ${Buffer.from(
`${MOMO_API_KEY}:${MOMO_SUBSCRIPTION_KEY}`
).toString("base64")}`,
},
}
);
return response.data.access_token;
} catch (error) {
console.error("Erreur lors de la génération du token :", error.response.data);
throw error;
}
};
module.exports = DryPaymentMomoFunction;