Comme avec Stripe ou PayPal, vous intégrez une seule API. La différence : GadonPay ne détient jamais l'argent — votre client paie directement votre portefeuille NatCash/MonCash, et GadonPay vous notifie quand c'est confirmé.
Inscrivez-vous, créez un projet dans le dashboard — vous obtenez un API_KEY et un WEBHOOK_SECRET, affichés une seule fois.
Le numéro qui reçoit réellement l'argent de vos clients — GadonPay ne détient jamais ce compte, il se contente de le surveiller.
Une app Android ou un boîtier GSM dédié qui transmet les SMS de confirmation reçus à GadonPay pour vérification.
Depuis votre serveur, déclarez le paiement attendu avant que le client ne paie :
curl -X POST https://api.gadonpay.lat/v1/payments \
-H "X-Gadonpay-Key: gp_live_xxxxxxxx" \
-H "Idempotency-Key: order_92831" \
-H "Content-Type: application/json" \
-d '{
"amount": 1500,
"currency": "HTG",
"provider": "natcash",
"reference": "ORDER-83921"
}'Réponse immédiate :
{
"id": "pay_8F92KD",
"status": "PENDING",
"amount": 1500,
"currency": "HTG",
"provider": "natcash",
"reference": "ORDER-83921"
}Dès que le client paie et que le Gateway confirme le SMS, GadonPay appelle votre URL de webhook avec une signature HMAC-SHA256 :
POST https://votresite.ht/webhooks/gadonpay
X-GadonPay-Signature: 5f3a9c...
{
"event": "PAYMENT_SUCCEEDED",
"data": {
"id": "pay_8F92KD",
"status": "PAID",
"amount": 1500,
"currency": "HTG",
"provider": "natcash",
"reference": "ORDER-83921"
}
}Règle absolue : ne livrez jamais un produit ou n'activez jamais un abonnement sur autre chose qu'un PAYMENT_SUCCEEDED confirmé côté serveur. Un webhook peut se perdre — revérifiez toujours via GET /v1/payments/:id avant de livrer.
L'en-tête Idempotency-Key est obligatoire. Une requête répétée avec la même clé ne crée jamais un second paiement — utile en cas de coupure réseau, réessayez simplement avec la même clé.
API_KEY_INVALIDClé absente, inconnue ou révoquéeUSER_SUSPENDEDCompte marchand suspenduAMOUNT_INVALIDMontant absent ou hors limitesPROVIDER_INVALIDProvider différent de natcash/moncashREFERENCE_INVALIDRéférence absente, trop longue, ou déjà utiliséeIDEMPOTENCY_KEY_REQUIREDEn-tête Idempotency-Key manquant