Aller au contenu
AfriContext

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.

Doc source modifiée • Doc source modifiée • Doc source modifiée À REVOIR02.08.26
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.link vers la page de paiement hébergée.
  • GET https://api.flutterwave.com/v3/transactions/:id/verify : vérifier status, amount, currency et tx_ref.

Erreurs

  • Les réponses contiennent status (success ou error) et message.

Webhooks

  • Header verif-hash : comparer à votre secret de webhook (FLW_WEBHOOK_HASH).
  • Événement : charge.completed. Toujours revérifier la transaction par son id.

Idempotence et limites

  • tx_ref unique par commande.

Pièges courants

Ce que les LLMs inventent le plus souvent pour Flutterwave.

  • verif-hash n'est pas un HMAC : c'est une égalité avec votre secret.
  • Vérifier aussi que amount et currency reç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_KEY
  • FLW_WEBHOOK_HASH
  • APP_URL