Encaisser depuis votre propre interface — comme Stripe Payment Element avec sessionId et /complete.
Choisissez ce parcours si vous avez déjà une UI de paiement ou une app mobile.
Vous contrôlez l'expérience utilisateur ; Izzi fournit les endpoints publics de session et de finalisation.
Même appel que le checkout hébergé : POST /checkout/sessions.
Conservez data.id (sessionId) — vous n'avez pas besoin de rediriger vers data.url.
curl -X POST https://api.dev.izzi-finance.com/api/v1/checkout/sessions \
-H "Authorization: Bearer izzi_mk_sandbox_…" \
-H "Content-Type: application/json" \
-d '{
"amount": "2500",
"currency": "USD",
"title": "Commande #1234",
"allowedMethods": ["MOBILE_MONEY", "CARD"]
}'Appelez GET /checkout/pay/:sessionId (public, sans Bearer) pour récupérer montant, devise, allowedMethods et branding.
Construisez votre formulaire à partir de ces données.
curl https://api.dev.izzi-finance.com/api/v1/checkout/pay/cs_38b62a204d2da0bcdd312c59Soumettez POST /checkout/pay/:sessionId/complete avec paymentMethod et paymentDetails.
Voir le guide Compléter un paiement pour le détail par méthode (MOBILE_MONEY, CARD, WALLET, QR, BANK_TRANSFER).
curl -X POST https://api.dev.izzi-finance.com/api/v1/checkout/pay/cs_38b62a204d2da0bcdd312c59/complete \
-H "Content-Type: application/json" \
-d '{
"paymentMethod": "MOBILE_MONEY",
"paymentDetails": {
"phone": "+243900000000",
"operator": "ORANGE",
"countryCode": "CD"
}
}'POLL — appelez GET /checkout/pay/:sessionId/status après pollAfterMs jusqu'à SUCCEEDED.
REDIRECT — redirigez le payeur vers actionUrl (3DS, page provider).
DISPLAY_QR — affichez qrPayload et pollez /status.
paymentIntentId et chargeId sont retournés dans la réponse /complete (ou via /status une fois SUCCEEDED).
Les webhooks payment.succeeded et checkout.session.completed confirment la finalisation côté serveur.
Consultez GET /payments/payment-intents/:id pour le détail du payment intent.