Eine API, die Ihrem Team wirklich Freude macht
Vorhersehbares REST, Idempotenzschlüssel, signierte Webhooks und eine Sandbox mit simulierten Zahlwegen, damit Sie Ende-zu-Ende integrieren, bevor ein einziger Franc fließt.
Ihr erster Zahlungseinzug mit einer Anfrage
Sauberes REST, ein vorhersehbares JSON-Envelope und eine Request-ID bei jeder Antwort. Die Sandbox spiegelt die Produktion: gleiche API, gleiche Status, gleiche Webhooks.
- Sandbox- und Produktionsschlüssel, pro App getrennt
- HMAC-signierte Webhooks mit Replay-Schutz
- Idempotenzschlüssel bei jedem geldbewegenden Aufruf
- Typisierte Fehler, die genau sagen, was zu beheben ist
- OpenAPI-Spezifikation, Postman-Sammlung und llms.txt, alle veroffentlicht
- Gehostete Checkout-Sessions und flache Callbacks für CRM-, ERP- und Shop-Konnektoren
curl https://api.capayglobal.com/v1/collections \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: 9f1c-collect-01" \
-H "Content-Type: application/json" \
-d '{
"amount": "2500",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"msisdn": "2376XXXXXXXX",
"merchant_reference": "order-1042"
}'{
"status": "success",
"data": {
"id": "col_9xKQ2mD41Vb8",
"object": "collection",
"status": "pending",
"amount": "2500",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"merchant_reference": "order-1042",
"fees": {
"platform_fee": "50",
"provider_fee": "0",
"total_fee": "50",
"bearer": "merchant"
},
"net_amount": null,
"livemode": false,
"created_at": "2026-08-30T12:04:11Z"
},
"request_id": "req_b0f3d2c1"
}Ihr erster Zahlungseingang
Eine Anfrage erzeugt eine Zahlungsabsicht, liefert eine Request-ID zuruck und schickt bei Mobile Money die Aufforderung auf das Handy des Zahlers. Die Sandbox verhalt sich exakt wie die Produktion.
curl -X POST https://api.capayglobal.com/v1/collections \
-H "Authorization: Bearer sk_test_XXXXXXXXXXXX" \
-H "Idempotency-Key: col-order-10482-a1b2c3" \
-H "Content-Type: application/json" \
-d '{
"amount": "5000",
"currency": "XAF",
"country": "CM",
"method": "mobile_money",
"msisdn": "+237650000001",
"merchant_reference": "order-10482"
}'{
"status": "success",
"data": {
"id": "col_7Qm3k1Xa9Zr4",
"object": "collection",
"status": "pending",
"amount": "5000",
"currency": "XAF",
"auth_model": "STK_PROMPT",
"livemode": false
},
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}Server-SDKs
Schlanke, typisierte Hullen uber derselben REST-API, mit eingebauter Idempotenz und Signaturprufung.
import { Capay } from '@capay/sdk';Noch nicht auf npm. Die Importzeile oben ist final, Ihre Integration ändert sich bei der Veröffentlichung also nicht.
Anleitung lesenfrom capay import CapayNoch nicht auf PyPI. Die Importzeile oben ist final, Ihre Integration ändert sich bei der Veröffentlichung also nicht.
Anleitung lesenuse Capay\CapayClient;Noch nicht auf Packagist. Die Importzeile oben ist final, Ihre Integration ändert sich bei der Veröffentlichung also nicht.
Anleitung lesenJeden Webhook prufen
Signaturen werden uber den Rohkorper berechnet und in konstanter Zeit verglichen, und ein Zeitstempel alter als 300 Sekunden wird abgelehnt. Vertrauen Sie nie einem Webhook, den Sie nicht gepruft haben.
# T is the t= value from X-Capay-Signature; delivery.json is the raw body as received.
T=1767225600
SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{ printf '%s.' "$T"; cat delivery.json; } \
| openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1
# Compare the printed hex with each v1= value in the header (either may match
# during a secret rotation), and reject the delivery if |now - T| > 300 s.X-Capay-Signature: t=1767225600,v1=6f8b4c2d9e0a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f0a2b4c6d8e0f1a3b5c
X-Capay-Event-Id: evt_2n4Kq8Zr41Xa
X-Capay-Event-Type: collection.completedEine fehlgeschlagene Zustellung wird nach festem Plan wiederholt: 1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h. Ein Endpunkt, der 8 Mal hintereinander scheitert, wird deaktiviert und Sie werden informiert, damit ein toter Endpunkt nie stillschweigend Ereignisse verschluckt.
Zwei Signaturgeheimnisse konnen gleichzeitig aktiv sein, Sie konnen also rotieren, ohne ein Ereignis zu verlieren. Lehnen Sie alles ausserhalb des Fensters von 300 Sekunden ab und speichern Sie die Ereignis-ID, damit Wiederholungen harmlos sind.
Der Rest des Werkzeugkastens
Maschinenlesbare Spezifikationen, eine importierbare Sammlung und die Werkzeuge, die sie lesen.
Ziehen Sie noch heute Zahlungen in ganz Afrika ein
Erstellen Sie ein kostenloses Konto, bauen Sie gegen die Sandbox und gehen Sie nach der Verifizierung live.
Erzählen Sie uns jederzeit von Ihren Korridoren und Volumen.