Tableau de bord ↗

Créez un paiement, redirigez l’acheteur vers le lien renvoyé, recevez la confirmation. C’est lahsab qui héberge la page de paiement — vous n’avez rien à construire. Commencez en sandbox : même API qu’en production, sans argent réel.

1. Créer un intent

POST /payments/intents avec un montant en dinars entiers (DZD, sans centimes). La réponse porte un checkoutUrl — le lien de paiement hébergé par lahsab — valable 48 heures.

Créer un intent
curl -X POST https://api.lahsab.com/payments/intents \
  -H "x-api-key: lsk_sandbox_CLE" \
  -H "content-type: application/json" \
  -d '{ "amount": 2500, "customerRef": "user_abc123" }'

Réponse 201 :

{
  "id": "a7f3c2e1-9b4d-4e6a-8c1f-2d3e4f5a6b7c",
  "environment": "sandbox",
  "amount": 2500,
  "status": "pending",
  "checkoutUrl": "https://app.lahsab.com/pay/a7f3c2e1-9b4d-4e6a-8c1f-2d3e4f5a6b7c",
  "expiresAt": "2026-07-13T10:00:00.000Z",
  "proofs": [],
  "createdAt": "2026-07-11T10:00:00.000Z"
}

2. Rediriger vers la page de paiement

Envoyez l’acheteur sur le checkoutUrl. La page hébergée par lahsab affiche le montant, vos coordonnées CCP / BaridiMob, et récolte la preuve de paiement (capture du virement). L’acheteur paie, téléverse sa preuve, et l’intent passe en proof_submitted — sans une ligne de code de votre côté.

3. Confirmer, puis recevoir le webhook

Vérifiez sur votre compte que le virement est bien arrivé, puis cliquez Confirmer dans le tableau de bord. L’intent passe en confirmed et lahsab émet payment.confirmed vers votre endpoint — votre signal pour accorder l’accès ou expédier.

pending proof_submitted confirmed rejected
confirmed et rejected sont terminaux. expired est un terminal réservé.

Et ensuite ?