Nom du projet
react-benin-payments
URL du dépôt
https://github.com/stvekoulo/react-benin-payments
Description
react-benin-payments est une librairie Open Source développée pour les environnements React et Next.js. Elle vise à standardiser et simplifier l'intégration technique des passerelles de paiement béninoises (FedaPay et KKiaPay).
L'objectif principal est de fournir une couche d'abstraction unifiée qui dispense les développeurs de la gestion manuelle des scripts externes, des iframes et des configurations redondantes.
Fonctionnalités techniques :
- Composants Prêts à l'emploi : Intégration rapide via des boutons pré-configurés (FedaPayButton, KkiaPayButton).
- Hooks Personnalisables : Logique de paiement découplée de l'interface (Headless UI) via useFedaPay et useKkiaPay pour une intégration sur mesure.
- Support TypeScript : Typage strict des props et des réponses d'API pour éviter les erreurs de développement.
- Compatibilité Next.js : Fonctionne nativement avec l'App Router (gestion des directives client/serveur).
- Sécurité : Mécanisme intégré pour déclencher une vérification de transaction côté backend avant de valider le paiement sur le frontend.
Installation
Pour installer le paquet via NPM :
npm install react-benin-payments
Guide d'intégration
1. Configuration Globale (Context Provider)
Pour éviter de répéter les clés d'API sur chaque bouton, il est recommandé d'envelopper votre application (ou la partie gérant les paiements) avec le composant BeninPaymentProvider.
Ce composant permet de centraliser la configuration (clés publiques, mode test/live).
import { BeninPaymentProvider } from 'react-benin-payments';
export default function AppLayout({ children }) {
return (
<BeninPaymentProvider
fedaPayPublicKey="pk_live_votre_cle_publique_feda"
kkiaPayPublicKey="pk_votre_cle_publique_kkia"
isTestMode={false} // Basculez sur true pour activer le mode Sandbox
>
{children}
</BeninPaymentProvider>
);
}
2. Utilisation des Composants
Une fois le Provider configuré, vous pouvez utiliser les composants de paiement directement dans vos pages. Ils récupéreront automatiquement les configurations globales.
import { FedaPayButton, KkiaPayButton } from 'react-benin-payments';
export default function CheckoutPage() {
// Fonction de rappel exécutée uniquement en cas de succès
const handleSuccess = (transaction) => {
console.log("Paiement validé avec succès. ID :", transaction.transactionId);
// Ici, vous pouvez rediriger l'utilisateur ou mettre à jour l'état de la commande
};
return (
<div style={{ display: 'flex', gap: '20px', alignItems: 'center' }}>
{/* Intégration du bouton FedaPay */}
<FedaPayButton
config={{
amount: 5000, // Montant en FCFA
description: "Achat de la formation React",
customer: {
email: "client@entreprise.com",
lastname: "Doe",
firstname: "John"
}
}}
text="Payer via FedaPay"
onSuccess={handleSuccess}
/>
{/* Intégration du bouton KKiaPay */}
<KkiaPayButton
config={{
amount: 5000,
theme: "#000000", // Personnalisation de la couleur du widget
paymentMethods: ["momo", "card"] // Restriction des méthodes de paiement
}}
text="Payer via KKiaPay"
onSuccess={handleSuccess}
/>
</div>
);
}