Intégration en 5 minutes
POST /v1/checkout/sessions avec amount + URLs retour. Aucun JS frontend à maintenir, aucune logique provider à coder.
Page de paiement clé en main
Plus besoin de construire votre propre formulaire. Créez une session checkout via l'API, redirigez votre user vers `saalapay.com/pay/cs_<id>`, et nous gérons UX, mobile, expiration et webhooks.
POST /v1/checkout/sessions avec amount + URLs retour. Aucun JS frontend à maintenir, aucune logique provider à coder.
Page responsive native, mode sombre auto via prefers-color-scheme, focus visible WCAG AA, countdown live aria-live.
Défaut 30 min, configurable jusqu'à 24h. Sweeper cron passe les sessions expirées en EXPIRED + dispatche checkout.session.expired.
checkout.session.created → completed (avec payment_id) ou expired/cancelled. Le merchant suit le cycle de vie sans poller.
curl https://api.saalapay.com/v1/checkout/sessions \
-H "X-SP-Signature: $HMAC_SIGNATURE" \
-H "Content-Type: application/json" \
-d '{
"amount": 25000,
"currency": "XOF",
"success_url": "https://shop.example/order/ok",
"cancel_url": "https://shop.example/cart",
"expires_in_minutes": 30
}'
# Réponse → redirige l'user vers data.hosted_url
{
"data": {
"id": "cs_018f2c...",
"hosted_url": "https://saalapay.com/pay/cs_018f2c...",
"status": "pending",
"expires_at": "2026-05-04T22:55:00+00:00"
}
}
La hosted page tourne en sandbox sans configuration provider.