Une seule API HTTP propre. MTN Mobile Money, Airtel Money, webhooks signés HMAC. Aucun SDK requis — un simple curl suffit.
# Créer une session de paiement hosted-checkout curl https://api.cowemapay.com/v1/checkout/sessions \ -u sk_live_••••: \ -H "Idempotency-Key: $(uuidgen)" \ -d amount=5000 \ -d currency=XAF \ -d method=momo.mtn \ -d customer_phone="+24206…" \ -d success_url="https://marie.cg/ok" \ -d cancel_url="https://marie.cg/nope" # Réponse · 184ms { "id": "cs_3K2pX9z", "status": "awaiting_pin", "url": "https://pay.cowemapay.com/cs_3K2pX9z", "expires_at": 1715812938, "livemode": true }
// Node 18+ · fetch natif, aucun SDK requis const auth = Buffer.from('sk_live_••••:').toString('base64'); const res = await fetch( 'https://api.cowemapay.com/v1/checkout/sessions', { method: 'POST', headers: { 'Authorization': `Basic ${auth}`, 'Idempotency-Key': crypto.randomUUID(), 'Content-Type': 'application/x-www-form-urlencoded', }, body: new URLSearchParams({ amount: '5000', currency: 'XAF', method: 'momo.mtn', customer_phone: '+24206…', }), } ); const session = await res.json();
// PHP · curl natif, aucun SDK requis $ch = curl_init('https://api.cowemapay.com/v1/checkout/sessions'); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_USERPWD => 'sk_live_••••:', CURLOPT_HTTPHEADER => ['Idempotency-Key: ' . uniqid()], CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query([ 'amount' => 5000, 'currency' => 'XAF', 'method' => 'momo.mtn', 'customer_phone' => '+24206…', ]), ]); $session = json_decode(curl_exec($ch));
# Python · requests import requests, uuid res = requests.post( 'https://api.cowemapay.com/v1/checkout/sessions', auth=('sk_live_••••', ''), headers={'Idempotency-Key': str(uuid.uuid4())}, data={ 'amount': 5000, 'currency': 'XAF', 'method': 'momo.mtn', 'customer_phone': '+24206…', }, ) session = res.json()
// Go · net/http natif package main import ( "net/http" "net/url" "strings" ) func createSession() (*http.Response, error) { data := url.Values{} data.Set("amount", "5000") data.Set("method", "momo.mtn") req, _ := http.NewRequest("POST", "https://api.cowemapay.com/v1/checkout/sessions", strings.NewReader(data.Encode())) req.SetBasicAuth("sk_live_••••", "") return http.DefaultClient.Do(req) }
Sandbox immédiat dès l'inscription, basculement production en 1 clic après vérification de votre compte.
Email + mot de passe. Clés sandbox générées automatiquement.
Dashboard → API → sk_test_… et webhook secret.
curlPOST /v1/checkout/sessions. Vous récupérez une URL de paiement.
payment.succeeded signé HMAC. Bouclez votre logique métier.
Le flot complet d'une transaction réussie. La réponse contient l'URL de checkout à présenter au client, puis vous recevez un webhook signé quand le paiement est confirmé.
Vous créez la session
Paie sur pay.cowemapay.com
Signé HMAC-SHA256
Mais si vous préférez une bibliothèque officielle, nous en publions pour les 6 langages les plus courants. Vous pouvez aussi tout faire avec un simple client HTTP.
npm i cowema
composer require cowema
pip install cowema
go get cowema
maven · gradle
gem install cowema
Vos clés de test sont disponibles dès l'inscription. Aucune validation requise. Tous les opérateurs simulés, tous les scénarios d'échec couverts. Basculement production en 1 clic.
Récupérez vos clés sandbox, lisez le guide, faites votre premier appel API. C'est gratuit, illimité, et aucun moyen de paiement n'est requis.