Documentation & Intégration REST API
Intégrez les paiements automatisés Wave QR, Orange Money, MTN MoMo et Moov Money dans Mikhmon, vos portails captifs Wi-Fi, sites e-commerce ou applications SaaS rapidement et en toute sécurité.
1. URL de Base & Adresses IP Passerelle
Point d'accès REST API principal et adresse IP sortante certifiée NODERA PAY.
https://gateway.airnetsolution.com/api/v1/noderapay
Préfixez tous vos appels API avec cette URL de base.
195.88.211.243
Ajoutez cette adresse IP à la liste blanche (whitelist) de votre pare-feu serveur pour les webhooks.
Authentification & Identifiants de Requête :
Authentifiez vos requêtes via le corps JSON ou les en-têtes HTTP :
{
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key"
}
X-Merchant-Code: NP-YOURMERCHANT
X-Api-Key: np_live_your_api_key
2. Création d'une Transaction de Paiement
Utilisez ce point de terminaison pour générer une demande de paiement Wave QR ou Mobile Money et obtenir l'URL de checkout.
Paramètres de la Requête (JSON Body)
| Paramètre | Type | Statut | Description | Exemple |
|---|---|---|---|---|
amount |
integer | Requis | Montant de la transaction en FCFA (minimum 100 FCFA) | 5000 |
ref_id |
string | Requis | Identifiant unique de transaction généré par votre application (max 100 caractères) | HOTSPOT-123456 |
customer_name |
string | Optionnel | Nom complet de l'abonné / client | Kouassi Jean |
customer_phone |
string | Optionnel | Numéro de téléphone / WhatsApp de l'abonné pour notification et reçu (+225...) | +2250700000000 |
notes |
string | Optionnel | Description du forfait, abonnement Internet ou numéro de facture | Forfait Fibre 50 Mbps — 1 Mois |
callback_url |
string | Optionnel | URL de webhook dynamique spécifique pour cette transaction uniquement | https://monfai.airnetsolution.com/webhook |
fee_bearer |
string | Optionnel | Prise en charge des frais : CUSTOMER (ajouté au total client) ou MERCHANT (déduit du solde) |
CUSTOMER |
expired_time |
integer | Optionnel | Délai d'expiration du lien de paiement en minutes (par défaut 15 min) | 15 |
Exemples de Code Multi-Langages :
<?php
$apiUrl = "https://gateway.airnetsolution.com/api/v1/noderapay/create-transaction";
$merchantCode = "NP-YOURMERCHANT";
$apiKey = "np_live_your_api_key";
$data = [
'code_merchant' => $merchantCode,
'api_key' => $apiKey,
'amount' => 5000, // En FCFA
'ref_id' => 'HOTSPOT-' . time(),
'customer_name' => 'Abonné Wi-Fi',
'customer_phone' => '+2250700000000',
'notes' => 'Pass Internet 1 Mois 25 Mbps',
'expired_time' => 15,
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Accept: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
if (isset($result['status']) && $result['status'] === 'success') {
$qrUrl = $result['data']['qr_url'];
$payUrl = $result['data']['checkout_url'];
echo "Lien de paiement Wave / Mobile Money : " . $payUrl;
} else {
echo "Échec : " . ($result['message'] ?? 'Erreur inconnue');
}
curl -X POST "https://gateway.airnetsolution.com/api/v1/noderapay/create-transaction" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key",
"amount": 5000,
"ref_id": "FACT-202610-001",
"customer_name": "Kouassi Jean",
"customer_phone": "+2250700000000",
"notes": "Facture Fibre Optique Octobre 2026",
"expired_time": 15
}'
import axios from 'axios';
const createPayment = async () => {
try {
const res = await axios.post('https://gateway.airnetsolution.com/api/v1/noderapay/create-transaction', {
code_merchant: 'NP-YOURMERCHANT',
api_key: 'np_live_your_api_key',
amount: 5000,
ref_id: `COMMANDE-${Date.now()}`,
customer_name: 'Kouassi Jean',
customer_phone: '+2250700000000',
notes: 'Abonnement Mensuel Internet',
expired_time: 15
});
if (res.data.status === 'success') {
console.log('Wave QR Code URL :', res.data.data.qr_url);
console.log('Checkout URL :', res.data.data.checkout_url);
}
} catch (err) {
console.error('Erreur API :', err.response?.data || err.message);
}
};
createPayment();
import requests
url = "https://gateway.airnetsolution.com/api/v1/noderapay/create-transaction"
payload = {
"code_merchant": "NP-YOURMERCHANT",
"api_key": "np_live_your_api_key",
"amount": 5000,
"ref_id": "COMMANDE-123456",
"customer_name": "Kouassi Jean",
"customer_phone": "+2250700000000",
"notes": "Facture Mensuelle",
"expired_time": 15
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
res = requests.post(url, json=payload, headers=headers)
data = res.json()
if res.status_code == 200 and data.get('status') == 'success':
print("Wave QR URL :", data['data']['qr_url'])
print("Checkout URL :", data['data']['checkout_url'])
else:
print("Erreur :", data.get('message'))
3. Vérification du Statut d'une Transaction
Consultez l'état d'avancement d'un règlement à tout moment à l'aide de trx_reference ou de votre ref_id.
Paramètres de Requête (Query Parameters)
| Paramètre | Type | Statut | Description |
|---|---|---|---|
trx_reference |
string | Requis (ou ref_id) | Référence de transaction attribuée par NODERA PAY |
ref_id |
string | Requis (ou trx_reference) | Votre référence interne transmise lors de la création |
code_merchant |
string | Requis | Votre code identifiant marchand |
api_key |
string | Requis | Votre clé API secrète (dans l'URL ou via l'en-tête X-Api-Key) |
// URL de Requête GET
GET https://gateway.airnetsolution.com/api/v1/noderapay/get-status?code_merchant=NP-YOURMERCHANT&api_key=np_live_your_api_key&trx_reference=NP-20261004-8912301
// Réponse JSON (Paiement Validé)
{
"status": "success",
"data": {
"trx_reference": "NP-20261004-8912301",
"ref_id": "HOTSPOT-123456",
"amount": 5000,
"fee": 50,
"status": "PAID",
"payment_method": "WAVE_CI",
"paid_at": "2026-10-04 15:32:10"
}
}
4. Webhook de Notification & Signature HMAC
Notification HTTP POST instantanée dès qu'un abonné effectue son paiement avec succès.
signature = hash('sha256', $trx_reference . $ref_id . $amount . $api_key)
Exemple de Script Webhook en Réception (PHP) :
<?php
$apiKey = "np_live_your_api_key";
$rawPayload = file_get_contents('php://input');
$payload = json_decode($rawPayload, true);
if (!$payload) {
http_response_code(400);
exit(json_encode(['status' => 'error', 'message' => 'JSON Invalide']));
}
$trxRef = $payload['trx_reference'] ?? '';
$refId = $payload['ref_id'] ?? '';
$amount = $payload['amount'] ?? 0;
$signature = $payload['signature'] ?? '';
$expectedSignature = hash('sha256', $trxRef . $refId . $amount . $apiKey);
if (!hash_equals($expectedSignature, $signature)) {
http_response_code(403);
exit(json_encode(['status' => 'error', 'message' => 'Signature Invalide']));
}
if (($payload['status'] ?? '') === 'paid') {
// Paiement réussi ! Activer le coupon Wi-Fi ou prolonger l'accès PPPoE de l'abonné
}
http_response_code(200);
echo json_encode(['status' => 'ok']);
5. Conditions Générales & Tarification
Règles contractuelles, structure tarifaire transparente et reversements de solde.
Inscription Marchand Rapide (No-KYC Onboarding)
La création de compte sur NODERA PAY est immédiate. Vos identifiants Merchant Code et clés API en production sont activés sans délais d'attente administratifs superflus.
Structure Tarifaire Claire (Transparent Fee)
Wave QR : Frais de 1% par transaction réussie.
Mobile Money (Orange, MTN, Moov) : Frais de 1.5% par transaction validée.
Frais prélevés à la transaction sans abonnement fixe mensuel.
Reversements & Règlements de Solde (Payouts)
Vous pouvez demander le reversement de votre solde marchand à tout moment vers vos comptes Wave, Orange Money, MTN MoMo, Moov Money ou comptes bancaires UEMOA depuis le tableau de bord.
Conformité Légale & Activités Interdites
Conformément aux réglementations UEMOA/BCEAO, l'utilisation pour des paris clandestins, contrefaçons, escroqueries, systèmes pyramidaux ou stupéfiants est formellement prohibée sous peine de clôture immédiate.