Effectuer un retrait via l'API REST (JavaScript)
Ce tutoriel vous montre comment utiliser le langage JavaScript pour intégrer les APIs de MOALA et effectuer un retrait d'argent.
Prérequis
- Un compte MOALA avec les permissions nécessaires.
- Node.js installé pour exécuter le script.
1. Authentification
L'API requiert trois headers :
- LP-ACCESS-KEY : clé d'accès
- LP-ACCESS-TIMESTAMP : horodatage
- LP-ACCESS-SIGN : signature HMAC-SHA256
Génération de la signature
La signature est générée en combinant la clé, le timestamp et le payload.
La fonction generateSignature génère la signature de la requête à envoyer.
const crypto = require('crypto');
function generateSignature(secretKey, timestamp, method, endpoint, payload) {
const message = timestamp + method + endpoint + payload;
return crypto.createHmac('sha256', secretKey).update(message).digest('hex');
}
2. Effectuer le retrait
Nous allons à présent effectuer une opération de retrait d'argent en utilisant les APIs REST de MOALA.
Endpoint de l'opération de retrait
Pour effectuer une opération de retrait, vous devez utiliser l'endpoint ci-dessous, avec le serviceCode correspondant à l'opérateur à utiliser.
POST https://api.moala.africa/v1/api/transaction/payment
Les serviceCode autorisés pour cet endpoint sont les suivants :
- CASHOUT_MTN_CM: Cashout MTN Cameroun
- CASHOUT_ORANGE_CM: Cashout Orange Cameroun
- CASHOUT_AIRTEL_GA: Cashout Airtel Gabon
- CASHOUT_MOOV_GA: Cashout Airtel Gabon
- PAIEMENTMARCHAND_MTN_CM: Paiement marchand MTN Cameroun
- PAIEMENTMARCHAND_ORANGE_CM: Paiement marchand Orange Cameroun
- PAIEMENTMARCHAND_AIRTEL_GA: Paiement marchand Airtel Gabon
- PAIEMENTMARCHAND_MOOV_GA: Paiement marchand Moov Gabon
Corps de la requête
Ci-dessous sont présentés les champs requis dans le corps de la requête à envoyer :
| Champ | Type | Description |
|---|---|---|
transactionType | string | Type de transaction à effectuer (valeur fixe: deposit) |
amount | float | Montant à retirer |
serviceCode | string | Le code du service qui sera utilisé (voir liste des serviceCode) |
phoneNumber | string | Le numéro de téléphone duquel le retrait est effectué |
partnerId | string | L'identifiant du partenaire qui effectue le retrait |
Requête de retrait
A présent, nous allons construire et envoyer une requête via l'API de retrait.
const fetch = require('node-fetch');
async function makeWithdrawal(amount, serviceCode, phoneNumber, partnerId, apiKey, secretKey) {
const endpoint = '/v1/api/transaction/payment';
const url = `https://api.moala.africa${endpoint}`;
const timestamp = Math.floor(Date.now() / 1000).toString();
const payload = JSON.stringify({ amount, transactionType: 'withdrawal', serviceCode, phoneNumber, partnerId });
const signature = generateSignature(secretKey, timestamp, 'POST', endpoint, payload);
const response = await fetch(url, {
method: 'POST',
headers: {
'LP-ACCESS-KEY': apiKey,
'LP-ACCESS-TIMESTAMP': timestamp,
'LP-ACCESS-SIGN': signature,
'Content-Type': 'application/json'
},
body: payload
});
const data = await response.json();
console.log(data);
}
Le champ partnerId doit être unique pour chaque transaction, sinon l'envoi de la requête va échouer.
3. Vérifier le statut
Une fois que la requête de retrait a été envoyée, on peut vérifier le succès de l'opération en faisant un nouvel appel d'API.
Endpoint de vérification
L'endpoint ci-dessous permet de vérifier le statut de la transaction de retrait précédemment réalisée.
GET https://api.moala.africa/v1/api/transaction/check/{partnerId}
Requête de vérification
async function checkStatus(partnerId, apiKey, secretKey) {
const endpoint = `/v1/api/transaction/check/${partnerId}`;
const url = `https://api.moala.africa${endpoint}`;
const timestamp = Math.floor(Date.now() / 1000).toString();
const signature = generateSignature(secretKey, timestamp, 'GET', endpoint, '');
const response = await fetch(url, {
method: 'GET',
headers: {
'LP-ACCESS-KEY': apiKey,
'LP-ACCESS-TIMESTAMP': timestamp,
'LP-ACCESS-SIGN': signature
}
});
const data = await response.json();
console.log(data);
}
4. Exécuter le code
A présent, nous allons exécuter le code présenté ci-dessus.
Pour cela, nous allons tenter de faire un retrait de 500F.
const API_KEY = 'votre_api_key';
const SECRET_KEY = 'votre_secret_key';
const serviceCode = 'CASHOUT_ORANGE_CM';
const phoneNumber = 'XXXXXXXXX';
const partnerId = 'xxxxxxxx';
const amount = 1000;
makeWithdrawal(amount, serviceCode, phoneNumber, partnerId, API_KEY, SECRET_KEY).then(() => {
checkStatus(partnerId, API_KEY);
});
5. Conclusion
Vous savez maintenant comment intégrer l'API de MOALA en JavaScript pour effectuer un retrait d'argent et en vérifier le statut.