Flutterwave
Flutterwave - Paiement Standard
Lien de paiement hébergé Flutterwave, vérification par identifiant et header verif-hash. À revérifier depuis le changement de la doc source.
Documentation officielle modifiée — Contexte à revérifier
La documentation Flutterwave propose désormais un accès direct pour les agents IA via un fichier `llms.txt` et des versions Markdown (`.md`) pour chaque page. Les développeurs doivent principalement vérifier la structure actualisée de la documentation (notamment les versions d'API v3.0.0 et v4.0.0) pour optimiser leurs intégrations.
Authentification
- Header
Authorization: Bearer <FLW_SECRET_KEY>.
Endpoints
POST https://api.flutterwave.com/v3/payments- Requis :
tx_ref,amount,currency,redirect_url,customer: { email }. - Réponse :
data.linkvers la page de paiement hébergée.
- Requis :
GET https://api.flutterwave.com/v3/transactions/:id/verify: vérifierstatus,amount,currencyettx_ref.
Erreurs
- Les réponses contiennent
status(successouerror) etmessage.
Webhooks
- Header
verif-hash: comparer à votre secret de webhook (FLW_WEBHOOK_HASH). - Événement :
charge.completed. Toujours revérifier la transaction par sonid.
Idempotence et limites
tx_refunique par commande.
Pièges courants
Ce que les LLMs inventent le plus souvent pour Flutterwave.
verif-hashn'est pas un HMAC : c'est une égalité avec votre secret.- Vérifier aussi que
amountetcurrencyreçus correspondent à la commande.
Exemple minimal
1export async function createFlwLink(txRef: string, amount: number, email: string): Promise<string> {2 const res = await fetch("https://api.flutterwave.com/v3/payments", {3 method: "POST",4 headers: { Authorization: "Bearer " + process.env.FLW_SECRET_KEY, "Content-Type": "application/json" },5 body: JSON.stringify({ tx_ref: txRef, amount, currency: "NGN", redirect_url: process.env.APP_URL + "/retour", customer: { email } }),6 });7 const json = (await res.json()) as { data: { link: string } };8 return json.data.link;9}Variables d'environnement
FLW_SECRET_KEYFLW_WEBHOOK_HASHAPP_URL