Aller au contenu
Cas d’usage

Comment accepter Wave et Orange Money dans une application Flutter ?

L’application Flutter passe par un serveur qui crée le paiement avec la clé API, puis ouvre checkout_url. La clé ne se place jamais dans l’application.

Une application Flutter n’appelle pas 221 Pay avec la clé API : elle demande à son propre serveur de créer le paiement, puis ouvre l’adresse checkout_url reçue. Le serveur confirme ensuite le résultat par webhook.

Le SDK Dart sdk221 est publié sur pub.dev (SDK 221) ; l’API s’appelle aussi directement, depuis n’importe quel langage serveur.

Pourquoi un serveur

Une clé placée dans une application publiée est extractible par n’importe quel utilisateur : elle donne accès aux paiements, aux remboursements et aux retraits du projet. La documentation d’Authentification l’interdit : la clé reste côté serveur.

Parcours

Le serveur expose une route de commande

Par exemple POST /commandes/{id}/payer, protégée par la connexion de l’utilisateur. Elle lit le montant côté serveur, jamais depuis l’application.

Le serveur crée le paiement

POST /v1/payments avec rail à sn_wave ou sn_orange, le numéro de commande dans merchant_reference et une Idempotency-Key stable par commande. Exemples en cinq langages : Comment accepter un premier paiement par API ?

L’application ouvre checkout_url

Le serveur renvoie checkout_url à l’application, qui l’ouvre dans le navigateur de l’appareil (package maintenu url_launcher) ou dans une vue web. Le client paie par Wave ou Orange Money, puis revient sur return_url, une adresse https:// (http:// est refusé).

Le webhook fait foi

Sur payment.succeeded, le serveur vérifie la signature, relit le paiement et marque la commande payée. L’application interroge son serveur, pas 221 Pay, pour afficher « payé ». Voir Webhooks.

Tester

Une clé sk_221_pay_test_ confirme les paiements en quelques secondes, sans argent réel (Tests).

Variante sans serveur

Pour encaisser sans serveur, un lien de paiement suffit : l’application ouvre link_to_pay. Le montant est fixe et le rapprochement des commandes est manuel. Voir Liens de paiement.

Mis à jour le