CPlus Developer Hub
Intégrez les paiements Mobile Money et carte bancaire
dans vos applications en quelques minutes.
Ce que vous pouvez faire
Collection Mobile Money
Encaissez via Airtel Money et MTN MoMo. Notification USSD automatique au client.
Voir la doc →Collection par Carte
Liens de paiement sécurisés via CyberSource et MIGS (Visa/Mastercard).
Voir la doc →Décaissement MoMo
Envoyez des fonds vers Airtel Money ou MTN MoMo. Remboursements et paiements fournisseurs.
Voir la doc →Pay Links & QR Codes
Liens de paiement partageables par SMS, WhatsApp ou Email avec QR intégré.
Voir la doc →Webhooks
Notifications temps réel sur votre endpoint à chaque changement de statut de paiement.
Voir la doc →API Keys
Clés avec permissions granulaires (collect, disburse, transactions, pay_links).
Gérer mes clés →⚡ Démarrage rapide
Créer un compte sandbox
Remplissez le formulaire ci-dessous pour obtenir un accès sandbox gratuit.
Générer une API Key
Portail merchant → API Keys → Créer une clé avec les permissions souhaitées.
Premier appel API
Ajoutez X-API-Key: sk_live_xxx dans vos headers.
Passer en production
Après validation sandbox, contactez-nous pour activer votre compte production.
💻 Exemples de code
# 📱 Collection Airtel Money
curl -X POST https://api.c-pay.global/api/v1/merchant/public/collect \
-H "X-API-Key: sk_live_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "XAF",
"customerPhone": "+242060000001",
"method": "airtel_money",
"description": "Commande #001",
"reference": "CMD-2026-001"
}'
# 💸 Décaissement MTN MoMo
curl -X POST https://api.c-pay.global/api/v1/merchant/disburse \
-H "X-API-Key: sk_live_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"amount": 10000,
"currency": "XAF",
"recipientPhone": "+242055000001",
"operator": "mtn_momo",
"description": "Remboursement client"
}'
# 🔗 Créer un Pay Link carte
curl -X POST https://api.c-pay.global/api/v1/merchant/public/pay-links \
-H "X-API-Key: sk_live_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"currency": "XAF",
"description": "Facture INV-001",
"psp": "cybersource"
}'// npm install axios
const axios = require('axios');
const cplus = axios.create({
baseURL: 'https://api.c-pay.global/api/v1/merchant',
headers: { 'X-API-Key': 'sk_live_votre_cle' }
});
// 📱 Collection Mobile Money
async function collect(phone, amount, method = 'airtel_money') {
const { data } = await cplus.post('/public/collect', {
amount, currency: 'XAF', customerPhone: phone, method
});
console.log('TxnId:', data.txnId, '| Statut:', data.status);
return data;
}
// 💸 Décaissement
async function disburse(phone, amount, operator = 'airtel_money') {
const { data } = await cplus.post('/disburse', {
amount, currency: 'XAF', recipientPhone: phone, operator
});
return data;
}
// 🔗 Pay Link carte
async function createPayLink(amount, description) {
const { data } = await cplus.post('/public/pay-links', {
amount, currency: 'XAF', description, psp: 'cybersource'
});
console.log('Lien:', data.short_url);
return data;
}
// Usage
collect('+242060000001', 5000, 'airtel_money');
createPayLink(25000, 'Facture INV-001');<?php
// composer require guzzlehttp/guzzle
class CPlusClient {
private $client;
const BASE = 'https://api.c-pay.global/api/v1/merchant';
public function __construct(string $apiKey) {
$this->client = new \GuzzleHttp\Client([
'base_uri' => self::BASE,
'headers' => ['X-API-Key' => $apiKey, 'Content-Type' => 'application/json']
]);
}
public function collect(string $phone, float $amount, string $method = 'airtel_money'): array {
$r = $this->client->post('/public/collect', ['json' => [
'amount' => $amount, 'currency' => 'XAF',
'customerPhone' => $phone, 'method' => $method
]]);
return json_decode($r->getBody(), true);
}
public function disburse(string $phone, float $amount, string $operator = 'airtel_money'): array {
$r = $this->client->post('/disburse', ['json' => [
'amount' => $amount, 'currency' => 'XAF',
'recipientPhone' => $phone, 'operator' => $operator
]]);
return json_decode($r->getBody(), true);
}
public function createPayLink(float $amount, string $desc): array {
$r = $this->client->post('/public/pay-links', ['json' => [
'amount' => $amount, 'currency' => 'XAF',
'description' => $desc, 'psp' => 'cybersource'
]]);
return json_decode($r->getBody(), true);
}
}
// Usage
$cplus = new CPlusClient('sk_live_votre_cle');
$txn = $cplus->collect('+242060000001', 5000);
$link = $cplus->createPayLink(25000, 'Facture INV-001');
echo $link['short_url'];
?># pip install requests
import requests
class CPlusClient:
BASE = 'https://api.c-pay.global/api/v1/merchant'
def __init__(self, api_key: str):
self.s = requests.Session()
self.s.headers.update({'X-API-Key': api_key})
def collect(self, phone, amount, method='airtel_money'):
return self.s.post(f'{self.BASE}/public/collect', json={
'amount': amount, 'currency': 'XAF',
'customerPhone': phone, 'method': method
}).json()
def disburse(self, phone, amount, operator='airtel_money'):
return self.s.post(f'{self.BASE}/disburse', json={
'amount': amount, 'currency': 'XAF',
'recipientPhone': phone, 'operator': operator
}).json()
def create_pay_link(self, amount, description):
return self.s.post(f'{self.BASE}/public/pay-links', json={
'amount': amount, 'currency': 'XAF',
'description': description, 'psp': 'cybersource'
}).json()
# Usage
client = CPlusClient('sk_live_votre_cle')
txn = client.collect('+242060000001', 5000, 'airtel_money')
link = client.create_pay_link(25000, 'Facture INV-001')
print(link['short_url'])// build.gradle: implementation("com.squareup.retrofit2:retrofit:2.9.0")
interface CPlusApi {
@POST("merchant/public/collect")
suspend fun collect(@Body req: CollectRequest): TxnResponse
@POST("merchant/disburse")
suspend fun disburse(@Body req: DisburseRequest): TxnResponse
@POST("merchant/public/pay-links")
suspend fun createPayLink(@Body req: PayLinkRequest): PayLinkResponse
}
data class CollectRequest(val amount: Double, val currency: String = "XAF",
val customerPhone: String, val method: String)
data class DisburseRequest(val amount: Double, val currency: String = "XAF",
val recipientPhone: String, val operator: String)
data class PayLinkRequest(val amount: Double, val currency: String = "XAF",
val description: String, val psp: String = "cybersource")
data class TxnResponse(val success: Boolean, val txnId: String?, val status: String?)
data class PayLinkResponse(val pay_link_id: String?, val short_url: String?)
// Client
val api = Retrofit.Builder()
.baseUrl("https://api.c-pay.global/api/v1/")
.addConverterFactory(GsonConverterFactory.create())
.client(OkHttpClient.Builder().addInterceptor { chain ->
chain.proceed(chain.request().newBuilder()
.addHeader("X-API-Key", "sk_live_votre_cle").build())
}.build())
.build().create(CPlusApi::class.java)
// Usage dans un ViewModel
viewModelScope.launch {
val txn = api.collect(CollectRequest(5000.0, customerPhone="+242060000001", method="airtel_money"))
Log.d("CPlus", "TxnId: ${txn.txnId}")
}🔔 Webhooks
Recevez des notifications HTTP POST quand un paiement change de statut.
// Payload reçu sur votre endpoint
{
"event": "payment.completed",
"txnId": "550e8400-e29b-41d4-a716-446655440000",
"reference": "CMD-2026-001",
"amount": 5000,
"currency": "XAF",
"status": "authorized",
"method": "airtel_money",
"timestamp": "2026-07-11T10:00:00Z",
"signature": "sha256=abc123..."
}
// Vérification signature (Node.js)
const crypto = require('crypto');
app.post('/webhook', (req, res) => {
const sig = req.headers['x-cplus-signature'];
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(JSON.stringify(req.body)).digest('hex');
if (sig !== expected) return res.status(401).end();
// Traiter le paiement...
res.json({ received: true });
});📋 Endpoints principaux
🚀 Compte sandbox gratuit
Créez votre compte de test et commencez à intégrer en quelques minutes.
📝 Inscription Développeur
⬆️ Passer en production
Après validation de votre intégration sandbox, demandez l'accès à l'environnement de production.
🏪 Demande d'accès Production
💬 Support
🛒 Plugin WooCommerce
Intégrez CPlus à votre boutique WooCommerce. Acceptez Airtel Money, MTN MoMo et carte bancaire en Zone CEMAC.
1. WP Admin → Extensions → Ajouter → Téléverser 2. Sélectionner cplus-payment-gateway-v2.6.0.zip 3. Activer → WooCommerce → Réglages → Paiements → CPlus 4. Entrer API Key + Secret (merchant.c-pay.global → API Keys) 5. URL Webhook : https://votresite.com/wc-api/cplus_webhook
📱 SDK Android
// 1. Initialiser CPlus.init(context, CPlusConfig( apiKey = "sk_live_xxx", apiSecret = "sk_secret_xxx", env = CPlusEnv.PRODUCTION )) // 2. Encaisser CPlus.collect(activity, amount = 5000.0, reference = "CMD-001", onSuccess = { txn -> confirmerCommande(txn.txnId) }, onError = { err -> afficherErreur(err.message) } ) // 3. Scanner QR CPlus.scanQR(activity, onResult = { qrData -> traiterQR(qrData) })
📱 Application Android
// Connexion Marchand val response = ApiClient.api.merchantLogin(LoginRequest(email, password)) SessionManager.saveSession(response.accessToken, userId, userName, type = "merchant") // Encaissement ApiClient.api.merchantCollect(CollectRequest( amount = 5000.0, customerPhone = "+242060000001", method = "airtel_money", reference = "CMD-001" ))