Aller au contenu principal

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
info

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 :

ChampTypeDescription
transactionTypestringType de transaction à effectuer (valeur fixe: deposit)
amountfloatMontant à retirer
serviceCodestringLe code du service qui sera utilisé (voir liste des serviceCode)
phoneNumberstringLe numéro de téléphone duquel le retrait est effectué
partnerIdstringL'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);
}
attention

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.