Exemples d'intégrations
Ce guide présente les étapes nécessaires à l'intégration des SDK et des APIs REST de MOALA dans votre application.
Intégration du SDK
MOALA a développé des SDK prêts à l'emploi pour vous faciliter l'intégration de sa plateforme. Ces SDK supportent plusieurs opérations, à savoir : vérification de solde, historique des transactions, vérification de conformité KYC, dépôt d'argent, retrait d'argent, etc
Nous mettons à votre disposition des SDKs de 3 langages de programmation, à savoir :
- Java : SDK Moala Java
- Javascript : SDK Moala Javascript
- Php : SDK Moala Php
- Python : SDK Moala Python
Afin d'utiliser les SDK que nous présenterons ci-dessous, il est nécessaire d'avoir un compte sur notre backoffice.
Ce compte est créé lorsque vous avez validé toutes les formalités administratives présentées dans la section précédente Prérequis et procédure d'intégration
Prerequis
- Java ☕
- Javascript 🎨
- PHP 🐘
- Java 8 ou supérieur
- Maven pour gérer les dépendances
- Node js 18 ou supérieurs
- npm pour gérer les dépendances
- Php 7.2 ou supérieur
- Composer pour gérer les dépendances
Installation
- Java ☕
- Javascript 🎨
- PHP 🐘
Vous pouvez installer le SDK via Maven.
<dependency>
<groupId>africa.moala</groupId>
<artifactId>sdkmoala</artifactId>
<version>1.0</version>
</dependency>
Ajoutez le SDK à votre projet en utilisant la commande :
mvn package
Vous pouvez installer le SDK via NPM. Ajoutez le SDK à votre projet via la commande suivante :
npm install js-moala
Vous pouvez installer le SDK via Composer. Ajoutez le SDK à votre projet via la commande suivante :
composer require bitkap/php-moala
Configuration
Pour utiliser le SDK, vous avez besoin d'une clé d'API fournie par MOALA. Voici comment l'utiliser pour initialiser le SDK :
- Java ☕
- Javascript 🎨
- PHP 🐘
import africa.moala;
String urlApi = "https://api.moala.africa";
String appKey = "your_app_key";
String secretKey = "your_secret_key";
MoalaClient moalaClient = new MoalaClient(appKey, secretKey, urlApi);
const { createClient } = require('js-moala');
const baseUrl = 'https://api.moala.africa';
const appKey = 'your_app_key';
const secretKey = 'your_secret_key';
const client = createClient(baseUrl, appKey, secretKey);
use MoalaSDK\MoalaClient;
$base_url = "https://api.moala.africa";
$appKey = "your_app_key";
$secretKey = "your_secret_key";
$client = new MoalaClient($base_url, $appKey, $secretKey);
Utilisation
Consultation de solde
- Java ☕
- Javascript 🎨
- PHP 🐘
double res = moalaClient.getBalance();
System.out.println(res);
(async () => {
try {
const balance = await client.balance();
console.log('Balance:', balance);
} catch (error) {
console.error('Error:', error);
}
})();
$balance = $client->balance();
print_r($balance);
Vérification de transaction
- Java ☕
- Javascript 🎨
- PHP 🐘
TransactionView transactionView = moalaClient.checkTransaction("partnerId");
System.out.println(transactionView);
(async () => {
try {
const transaction = await client.checkTransaction('partnerId');
console.log('Transaction:', transaction);
} catch (error) {
console.error('Error:', error);
}
})();
$transaction = $client->checkTransaction($partnerId);
print_r($transaction);
Vérification des KYC
- Java ☕
- Javascript 🎨
- PHP 🐘
KycView kycView = moalaClient.getKycNumber("phoneNumber","serviceCode");
System.out.println(kycView);
(async () => {
try {
const kycResult = await client.kyc('phoneNumber', 'serviceCode');
console.log('KYC:', kycResult);
} catch (error) {
console.error('Error:', error);
}
})();
$kyc = $client->kyc($phoneNumber, $serviceCode);
print_r($kyc);
Effectuer un dépôt
- Java ☕
- Javascript 🎨
- PHP 🐘
TransactionView transactionView = moalaClient.cashin("phoneNumber","serviceCode",amount, "partnerId");
System.out.println(transactionView);
(async () => {
try {
const cashinResult = await client.cashin('phoneNumber', 'serviceCode', amount, 'partnerId');
console.log('Cashin:', cashinResult);
} catch (error) {
console.error('Error:', error);
}
})();
$cashin = $client->cashin($phoneNumber, $serviceCode, $amount, $partnerId);
print_r($cashin);
Effectuer un retrait
- Java ☕
- Javascript 🎨
- PHP 🐘
TransactionView transactionView = moalaClient.cashout("phoneNumber","serviceCode",amount, "partnerId");
System.out.println(transactionView);
(async () => {
try {
const cashoutResult = await client.cashout('phoneNumber', 'serviceCode', amount, 'partnerId');
console.log('Cashout:', cashoutResult);
} catch (error) {
console.error('Error:', error);
}
})();
$cashout = $client->cashout($phoneNumber, $serviceCode, $amount, $partnerId);
print_r($cashout);
Intégration de l'API REST
L'API de MOALA est une API REST classique qui peut être intégrée à tout backend fonctionnel. Il y'a juste quelques configurations mineures à effectuer afin de pouvoir l'utiliser.
Configuration des entêtes
L'API de MOALA requiert 3 entêtes obligatoires à ajouter afin de l'utiliser :
- LP-ACCESS-KEY: l'API Key disponible dans le Portail MOALA
- LP-ACCESS-TIMESTAMP: time epoch en seconde
- LP-ACCESS-SIGN: la signature numérique ou API Secret Key qui est générée par vous
Génération de la signature
Le format de la signature est le suivant : LP-ACCESS-TIMESTAMP + requestMethod + pathRequest + body (en json)
La chaîne obtenue doit ensuite être signé avec la clé d'API obtenue dans le portail d'administration, puis signé avec l'algorithme HMAC-SHA256 HEX.
API Get Balance
- Java ☕
- Javascript 🎨
- PHP 🐘
// Java - Récupération du solde
String message = "1718193158GET/v1/api/balance";
String secret_key = "your_secret_key";
String signatureSyn = HmacUtils.hmacSha256Hex(secret_key, message);
// Javascript - Récupération du solde
const crypto = require('crypto');
const message = "1718193158GET/v1/api/balance";
const secret_key = "your_secret_key";
const signatureSyn = crypto.createHmac('sha256', secret_key).update(message).digest('hex');
// PHP - Récupération du solde
$message = "1718193158GET/v1/api/balance";
$secret_key = "your_secret_key";
$signatureSyn = hash_hmac('sha256', $message, $secret_key);
API CashIn Orange Money
- Java ☕
- Javascript 🎨
- PHP 🐘
// Java - Cashin Orange Money
String message = "1718199502POST/v1/api/transaction/withdrawal{\"transactionType\":\"withdrawal\",\"amount\":100,\"serviceCode\":\"CASHIN_MTN_CM\",\"phoneNumber\":\"675598817\",\"partnerId\":\"tst_13\"}";
String secret_key = "your_secret_key";
String signatureSyn = HmacUtils.hmacSha256Hex(secret_key, message);
// JavaScript - Cashin Orange Money
const crypto = require('crypto');
const message = '1718199502POST/v1/api/transaction/withdrawal{"transactionType":"withdrawal","amount":100,"serviceCode":"CASHIN_MTN_CM","phoneNumber":"675598817","partnerId":"tst_13"}';
const secret_key = "your_secret_key";
const signatureSyn = crypto.createHmac('sha256', secret_key).update(message).digest('hex');
// PHP - Cashin Orange Money
$message = '1718199502POST/v1/api/transaction/withdrawal{"transactionType":"withdrawal","amount":100,"serviceCode":"CASHIN_MTN_CM","phoneNumber":"675598817","partnerId":"tst_13"}';
$secret_key = "your_secret_key";
$signatureSyn = hash_hmac('sha256', $message, $secret_key);
Les Service Code disponibles pour les appels d'APIs sont les suivants :
- CASHIN_MTN_CM: cashin MTN Cameroun
- CASHIN_ORANGE_CM: cashin orange Cameroun
- CASHIN_AIRTEL_GA: cashin airtel Gabon
- PAIEMENTMARCHAND_AIRTEL_GA: payment Marchand airtel Gabon
- PAIEMENTMARCHAND_ORANGE_CM: payment Marchand orange Cameroun
- PAIEMENTMARCHAND_MTN_CM: payment Marchand MTN Cameroun
Gestion des erreurs
Chaque méthode du SDK peut lever des exceptions en cas d'erreur, et les endpoints des APIs peuvent retourner des codes d'erreur.
Support
Si vous avez des questions ou des diffiultés à intégrer nos APIs, vous pouvez ouvrir un ticket de support ici GitHub repository.