7. Liens de paiement
Encaissez sans coder : chaque particulier dispose d'un lien permanent à montant libre et d'un QR code. Vous pouvez aussi créer des liens à montant fixe. Le client paie sur la page hébergée par Kratos Pay, par Mobile Money ou par carte si le moyen est autorisé.
Lien permanent
GET/payment-links/staticJeton de session
Retourne votre lien permanent : public_url, qr_code_svg, qr_code_url.
Créer un lien pour une cause précise
POST/personal/payment-linksJeton de session
Pour une cagnotte, une facture… Autorisez les moyens de paiement voulus dans allowed_providers.
Corps de la requête
{
"title": "Cagnotte anniversaire",
"description": "Participation au cadeau",
"amount": 5000,
"currency": "XAF",
"is_amount_fixed": true,
"allowed_providers": [
"orange_money_cm",
"mtn_momo_cm"
],
"redirect_url": "https://monsite.com/merci",
"expires_at": "2026-12-31T23:59:59Z",
"max_uses": 100
}Réponse 201 (extrait)
{
"success": true,
"data": {
"uuid": "b2c3d4e5-...",
"slug": "cagnotte-anniversaire-xkf72a",
"title": "Cagnotte anniversaire",
"amount": "5000.00",
"currency": "XAF",
"is_amount_fixed": true,
"status": "active",
"use_count": 0,
"max_uses": 100,
"public_url": "https://payment.kratospay.com/cagnotte-anniversaire-xkf72a",
"images": []
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}- États d'un lien (
status) : active, disabled, expired, max_uses_reached. Liste :GET /personal/payment-links. - Erreurs : 400/422 si le montant manque pour un lien fixe, ou si un réseau de
allowed_providersn'existe pas.
Ce que fait la page de paiement
Pour information, ou si vous créez votre propre page de paiement :
| Route | Rôle | Réponses |
|---|---|---|
GET /public/payment-links/{slug} | Affiche le lien. Répond 200 même si le lien est indisponible (is_available: false + unavailable_reason : disabled, expired ou max_uses_reached). | 200, 404 si slug inconnu |
POST /public/payment-links/{slug}/transactions | Crée le paiement du client (provider, phone_number, amount, idempotency_key). amount n'est obligatoire que si le lien est à montant libre. | 201 (pending), 404, 422 (lien indisponible, réseau non autorisé, montant manquant) |
GET /public/transactions/{uuid}/status | Attente du résultat : reste ouverte jusqu'à 20 s tant que le statut est pending ; à rappeler immédiatement. | 200 : { uuid, status, amount, currency, provider } |