dunopay_flutter 1.1.1
dunopay_flutter: ^1.1.1 copied to clipboard
DunoPay payment widget for Flutter — accept Mobile Money payments (MTN, MOOV, Wave, Orange…) across West Africa with a native payment sheet.
dunopay_flutter #
Package Flutter officiel pour accepter les paiements Mobile Money via DunoPay — le même widget de paiement que dunopay.js, entièrement natif Flutter.
Fonctionnalités #
- Widget natif — bottom sheet avec les mêmes étapes que dunopay.js
- 15+ opérateurs Mobile Money (MTN, MOOV, Wave, Orange, Airtel…)
- Environnements Sandbox et Live
- Étapes : sélection opérateur → numéro → confirmation → résultat
- Calcul automatique des frais et affichage du total
- Polling automatique du statut (5 s × 60 tentatives = 5 min max)
- Thème personnalisable (couleur primaire, radius)
- Gestion complète des erreurs et annulations
Installation #
dependencies:
dunopay_flutter: ^1.1.0
flutter pub get
Utilisation rapide #
import 'package:dunopay_flutter/dunopay_flutter.dart';
// Créer l'instance (une seule fois, e.g. dans le widget parent)
final dunopay = DunoPay(
publicKey: 'pk_sandbox_xxxxx', // votre clé publique DunoPay
mode : DunoPayMode.sandbox, // ou DunoPayMode.live
);
// Ouvrir le widget de paiement
await dunopay.collect(
context : context,
amount : 5000, // en centimes ou unités selon la devise
currency : 'XOF',
description: 'Commande #42',
// Pré-remplir les infos client pour passer l'étape formulaire
customer: const DunoPayCustomer(
firstname: 'Jean',
lastname : 'Dupont',
phone : '0196789966',
email : 'jean@example.com', // optionnel
),
onSuccess: (result) {
print('Paiement approuvé : ${result.reference}');
// result.transactionId, result.amount, result.currency
},
onError : (error) => print('Erreur : $error'),
onCancel: () => print('Annulé'),
);
Flux du widget de paiement #
┌─────────────────────────────────┐
│ D Ma Boutique 5 000 XOF │ ← En-tête (marchand + montant)
├─────────────────────────────────┤
│ │
│ Étape 0 (si pas de customer) │ Formulaire : Prénom, Nom, Téléphone
│ │
│ Étape 1 — Opérateur │ Grille 2 colonnes avec drapeaux
│ 🇧🇯 MTN Bénin 🇧🇯 MOOV Bénin │
│ 🇨🇮 MTN CI 🇨🇮 Wave CI │
│ ... │
│ │
│ Étape 2 — Téléphone │ Numéro + récap frais si applicable
│ ← MTN Bénin Changer │
│ [ 0196789966_________ ] │
│ Frais: 125 XOF │
│ Total: 5 125 XOF │
│ [ Payer 5 125 XOF ] │
│ │
│ Étape 3 — En attente │ Spinner + message + bouton Annuler
│ ◌ Confirmez sur │
│ votre téléphone │
│ │
│ Étape 4 — Résultat │ ✅ Succès ou ❌ Échec + Réessayer
│ ✓ Paiement réussi ! │
│ 5 000 XOF │
│ Réf : REF-XXXX │
└─────────────────────────────────┘
Options #
DunoPay #
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
publicKey |
String |
requis | Clé publique (pk_…) |
mode |
DunoPayMode |
DunoPayMode.sandbox |
Environnement API |
theme |
DunoPayTheme |
Thème violet DunoPay | Personnalisation visuelle |
collect() #
| Paramètre | Type | Description |
|---|---|---|
context |
BuildContext |
Requis |
amount |
int |
Requis — montant en unités (ex: 5000) |
currency |
String |
Requis — ex: 'XOF' |
description |
String |
Requis — libellé de la transaction |
customer |
DunoPayCustomer? |
Optionnel — si absent, affiche l'étape form |
returnUrl |
String? |
URL de retour après paiement |
metadata |
Map<String, dynamic>? |
Données personnalisées (ex: order_id) |
onSuccess |
void Function(DunoPayResult) |
Appelé si paiement approuvé |
onError |
void Function(String) |
Appelé en cas d'erreur |
onCancel |
void Function() |
Appelé si l'utilisateur ferme le widget |
DunoPayTheme #
DunoPayTheme(
primaryColor : Color(0xFF7B2FBE), // couleur principale
backgroundColor : Colors.white,
cardBorderRadius : 12.0,
buttonBorderRadius: 12.0,
)
Plateformes prises en charge #
| Plateforme | Support |
|---|---|
| ✅ Android | Cible principale |
| ✅ iOS | Cible principale |
| ✅ Web | Pris en charge |
| ✅ Windows / macOS / Linux | Pris en charge (Dart pur, aucune dépendance native) |
Opérateurs supportés #
| Pays | Opérateurs |
|---|---|
| 🇧🇯 Bénin | MTN Bénin, MOOV Bénin, Celtiis |
| 🇨🇮 Côte d'Ivoire | MTN CI, Wave CI, Orange CI |
| 🇹🇬 Togo | MOOV Togo, TOGOCEL T-Money |
| 🇸🇳 Sénégal | Free Sénégal, Wave Sénégal |
| 🇳🇪 Niger | Airtel Niger |
| 🇲🇱 Mali | Orange Mali, BESTCASH Mali |
| 🇬🇳 Guinée | MTN Guinée |
Obtenir vos clés API #
- Créez votre compte sur https://dunopay.com
- Allez dans API → Clés API
- Copiez votre clé publique (
pk_sandbox_…oupk_live_…)
Le mode est déterminé par la clé utilisée, sur une plateforme unique :
- Les clés de test (
pk_sandbox_…) sont disponibles immédiatement — les paiements sont simulés. - Les clés live (
pk_live_…) ne s'activent qu'une fois votre compte validé : complétez la vérification de votre entreprise (informations légales) depuis le dashboard.
Changelog #
Voir CHANGELOG.md.
License #
MIT — see LICENSE