Feexpay v2
FeexPay v2 est un plugin Flutter sécurisé pour accepter les paiements Mobile Money, Wallet et Carte Bancaire via l'API v2.
Interface bilingue (FR/EN) avec détection automatique de la langue du téléphone.
Installation
flutter pub add feexpay_flutter_v2
Import
import 'package:feexpay_flutter_v2/feexpay_flutter_sdk.dart';
Utilisation
import 'package:feexpay_flutter_v2/feexpay_flutter_sdk.dart';
ChoicePage(
token: 'votre_api_key',
id: 'votre_shop_id',
amount: '1500',
redirecturl: '/success',
errorredirecturl: '/error',
onPaymentResult: (PaymentResult result) {
if (result.isSuccess) {
// Paiement accepté — récupérez la référence de transaction
final txRef = result.reference;
// Ex: confirmer la commande auprès de votre backend
} else if (result.isFailed) {
// Paiement échoué
print('Échec: ${result.message}');
}
},
)
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
token |
String |
Oui | Clé API |
id |
String |
Oui | Identifiant boutique |
amount |
String |
Oui | Montant (ex: "1500") |
redirecturl |
String |
Non | Route/URL de redirection après succès |
errorredirecturl |
String |
Non | Route/URL de redirection après échec |
locale |
AppLocale |
Non | Forcer la langue : AppLocale.fr ou AppLocale.en |
reference |
String |
Non | Référence de transaction prédéfinie |
hide_identity_form |
bool |
Non | Masquer le formulaire d'identité (nom/email) |
name_shop |
String |
Non | Nom du marchand (affiché dans l'interface) |
trans_key |
String |
Non | Clé de transaction (15 caractères aléatoires) |
callback_info |
Map |
Non | Infos supplémentaires pour le callback |
onPaymentResult |
void Function(PaymentResult) |
Non | Callback appelé après un paiement réussi (SUCCESSFUL) ou échoué (FAILED) |
Résultat du paiement
Le callback onPaymentResult reçoit un objet PaymentResult contenant :
| Propriété | Type | Description |
|---|---|---|
status |
String |
Statut réel de l'API : SUCCESSFUL ou FAILED |
reference |
String |
Référence de la transaction côté Feexpay |
message |
String? |
Message d'erreur (uniquement en cas d'échec) |
isSuccess |
bool |
Raccourci pour status == 'SUCCESSFUL' |
isFailed |
bool |
Raccourci pour status == 'FAILED' |
ChoicePage(
...
onPaymentResult: (PaymentResult result) {
if (result.isSuccess) {
// La référence est disponible pour traitement ultérieur
final reference = result.reference;
await myBackend.confirmOrder(reference);
}
},
);
Changement de langue en temps réel
Un bouton FR/EN est affiché dans l'interface utilisateur. L'utilisateur peut basculer entre le français et l'anglais à tout moment sans redémarrer le formulaire.
// Détection automatique (français par défaut si langue du téléphone ≠ anglais)
ChoicePage.autoLocale(
token: '...',
id: '...',
amount: '1500',
)
// Forcer le français
ChoicePage(
token: '...',
id: '...',
amount: '1500',
locale: AppLocale.fr,
)
// Forcer l'anglais
ChoicePage(
token: '...',
id: '...',
amount: '1500',
locale: AppLocale.en,
)
Modes de paiement supportés
| Pays | Mobile Money | Wallet |
|---|---|---|
| Bénin (BJ) | MTN, MOOV, CELTIIS BJ | CORIS |
| Côte d'Ivoire (CI) | ORANGE CI, MTN CI, MOOV CI | WAVE CI |
| Togo (TG) | MOOV TG, TOGOCOM TG | - |
| Burkina Faso (BF) | ORANGE BF, MOOV BF | - |
| Sénégal (SN) | FREE SN, ORANGE SN | WAVE SN |
Déclaration des routes de redirection
Les routes internes sont déclarées dans le MaterialApp de l'application hôte :
MaterialApp(
title: 'Mon App',
theme: ThemeData(fontFamily: 'Poppins'),
routes: {
'/success': (context) => const SuccessPage(),
'/error': (context) => const EndErrorPage(),
},
)
Les redirections externes (URLs http/https) sont également supportées.
Contribution
Les pull requests sont les bienvenues. Pour les changements majeurs, veuillez d'abord ouvrir une issue.
Licence
Libraries
- feexpay_flutter
- feexpay_flutter_sdk
- l10n/app_translations
- models/payment_result
- utils/api_config
- utils/coris_payforit
- utils/get_fee
- utils/mobile_payforit
- utils/payforit_status
- utils/snackbar_helper
- utils/wave_payforit
- widgets/card_form
- widgets/custom_loader
- widgets/fees_notice
- widgets/form_heading
- widgets/merchant_card_info
- widgets/mobile_form
- widgets/otp_dialog
- widgets/overview
- widgets/payment_maintenance_card
- widgets/payment_method_card
- widgets/personals_infos_form
- widgets/qr_iframe
- widgets/security_notice
- widgets/wallet_form