Cycle déterministe
Créer, puis suivre le même paiement.
Les nouvelles intégrations suivent le devis serveur et transmettent son identifiant au paiement. Une clé d’idempotence représente la même instruction logique.
Authentification serveur-à-serveur
Utilisez votre clé secrète via l'en-tête
Authorization: Bearer sec_test_...
. Ne transmettez jamais une clé secrète dans du code client exécuté dans le navigateur.
Idempotence garantie
Renseignez l'en-tête
Idempotency-Key
pour identifier de manière unique l'intention transactionnelle. En cas de coupure réseau, la réémission rejoue la même réponse sans double débit.
Suivi par référence
Relisez l'état existant via
GET /api/v1/payments/:id
avant toute nouvelle tentative métier. Un délai réseau n'indique pas un échec de paiement.
# 1. Création du devis avec montant canonique
POST /api/v1/payment-quotes
Content-Type: application/json
Authorization: Bearer sec_test_...
{
"amount": 2500,
"currency": "XAF",
"merchantReference": "ORDER-001"
}
# 2. Confirmation autoritaire liée au devis
POST /api/v1/payments
Idempotency-Key: order-001-attempt-1
Content-Type: application/json
Authorization: Bearer sec_test_...
{
"quoteId": "pqt_01a148f9",
"paymentMethod": "MOBILE_MONEY"
}
Exemple illustratif conforme au backend Spring Boot. Les clés réelles s’obtiennent après provisionnement et sont strictement confidentielles.
Webhooks signés par HMAC-SHA256
Recevez les notifications de changement de statut en temps réel sur vos serveurs avec une garantie cryptographique d'authenticité et d'intégrité.
{
"eventId": "evt_01a1829e",
"eventType": "payment.succeeded",
"createdAt": "2026-10-22T09:16:30Z",
"data": {
"paymentId": "pay_01a1827b",
"quoteId": "pqt_01a148f9",
"amount": 2500,
"currency": "XAF",
"status": "succeeded",
"merchantReference": "ORDER-001"
}
}
Payload d'événement standardisé. Conforme aux spécifications webhook ChadPay.
Commencez dans un environnement de test.
Les identifiants sont fournis dans un parcours contrôlé. L’accès public ne crée pas automatiquement de compte marchand.