geniuspay / laravel-geniuspay
Laravel SDK pour l'intégration des paiements GeniusPay (Wave, Orange Money, MTN Money, Carte)
v2.0.1
2026-06-10 15:47 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.0|^11.0
This package is not auto-updated.
Last update: 2026-06-10 17:19:39 UTC
README
SDK Laravel officiel pour l'intégration des paiements GeniusPay (Wave, Orange Money, MTN Money, Carte bancaire).
🚀 Installation
composer require geniuspay/laravel-geniuspay
Installation automatique
php artisan geniuspay:install
Installation manuelle
# Publier la configuration php artisan vendor:publish --tag=geniuspay-config # Publier les migrations php artisan vendor:publish --tag=geniuspay-migrations # Exécuter les migrations php artisan migrate
⚙️ Configuration
Ajoutez ces variables dans votre fichier .env :
GENIUSPAY_SANDBOX=true GENIUSPAY_API_KEY=pk_sandbox_xxxxxxxxxxxx GENIUSPAY_API_SECRET=sk_sandbox_xxxxxxxxxxxx GENIUSPAY_WEBHOOK_SECRET=your_webhook_secret
Options de configuration
| Variable | Description | Défaut |
|---|---|---|
GENIUSPAY_SANDBOX |
Mode sandbox | true |
GENIUSPAY_API_KEY |
Clé API publique | - |
GENIUSPAY_API_SECRET |
Clé API secrète | - |
GENIUSPAY_WEBHOOK_SECRET |
Secret webhook | - |
GENIUSPAY_DEBUG |
Mode debug | false |
GENIUSPAY_CURRENCY |
Devise par défaut | XOF |
📖 Utilisation
Avec la Facade
use GeniusPay\Laravel\Facades\GeniusPay; // Créer un paiement $payment = GeniusPay::createPayment([ 'amount' => 5000, 'currency' => 'XOF', 'payment_method' => 'wave', // Optionnel 'description' => 'Commande #123', 'customer' => [ 'name' => 'John Doe', 'email' => 'john@example.com', 'phone' => '+221771234567', ], 'success_url' => route('payment.success'), 'error_url' => route('payment.error'), 'metadata' => [ 'order_id' => 123, ], ]); // Rediriger vers la page de paiement return redirect($payment->paymentUrl);
Avec l'injection de dépendances
use GeniusPay\Laravel\GeniusPayClient; class PaymentController extends Controller { public function __construct( private GeniusPayClient $geniusPay ) {} public function create(Request $request) { $payment = $this->geniusPay->createPayment([ 'amount' => $request->amount, 'customer' => [ 'email' => $request->user()->email, ], ]); return redirect($payment->paymentUrl); } }
Récupérer un paiement
$payment = GeniusPay::getPayment('MTX-ABC123'); if ($payment->isCompleted()) { // Paiement réussi } if ($payment->isPending()) { // En attente } if ($payment->isFailed()) { // Échoué }
Lister les paiements
$result = GeniusPay::listPayments([ 'status' => 'completed', 'from' => '2025-01-01', 'to' => '2025-12-31', 'per_page' => 50, ]); foreach ($result['data'] as $payment) { echo $payment->reference . ': ' . $payment->amount; }
Vérifier le solde
$balance = GeniusPay::getBalance(); // ['available' => 150000, 'pending' => 25000]
🔔 Webhooks
Le package gère automatiquement les webhooks. Configurez l'URL dans votre dashboard GeniusPay :
https://votresite.com/geniuspay/webhook
Écouter les événements
// app/Providers/EventServiceProvider.php use GeniusPay\Laravel\Events\PaymentCompleted; use GeniusPay\Laravel\Events\PaymentFailed; protected $listen = [ PaymentCompleted::class => [ \App\Listeners\HandlePaymentCompleted::class, ], PaymentFailed::class => [ \App\Listeners\HandlePaymentFailed::class, ], ];
Créer un listener
// app/Listeners/HandlePaymentCompleted.php namespace App\Listeners; use GeniusPay\Laravel\Events\PaymentCompleted; class HandlePaymentCompleted { public function handle(PaymentCompleted $event): void { $reference = $event->getReference(); $orderId = $event->getMetadata('order_id'); // Mettre à jour votre commande $order = Order::find($orderId); $order->markAsPaid($reference); } }
Événements disponibles
| Événement | Description |
|---|---|
WebhookReceived |
Webhook reçu (tous types) |
PaymentCompleted |
Paiement réussi |
PaymentFailed |
Paiement échoué |
PaymentCancelled |
Paiement annulé |
PaymentPending |
Paiement en attente |
RefundCompleted |
Remboursement effectué |
🔗 Trait HasGeniusPayPayments
Ajoutez facilement les paiements à vos modèles :
use GeniusPay\Laravel\Traits\HasGeniusPayPayments; class Order extends Model { use HasGeniusPayPayments; } // Utilisation $order = Order::find(1); // Créer un paiement lié à la commande $payment = $order->createGeniusPayPayment([ 'amount' => $order->total, 'description' => "Commande #{$order->id}", ]); // Récupérer les paiements $order->geniusPayTransactions; $order->completedPayments()->get(); $order->totalPaid();
🧪 Tests
Mode sandbox
En mode sandbox (GENIUSPAY_SANDBOX=true), aucune transaction réelle n'est effectuée.
Cartes de test
| Numéro | Résultat |
|---|---|
| 4084 0841 1111 1111 | Succès |
| 4084 0841 2222 2222 | Échec |
Test de connexion
if (GeniusPay::testConnection()) { echo "Connexion OK"; }
🛠️ Commandes Artisan
# Installer le package php artisan geniuspay:install # Générer un secret webhook php artisan geniuspay:webhook-secret
⚠️ Gestion des erreurs
use GeniusPay\Laravel\Exceptions\ApiException; use GeniusPay\Laravel\Exceptions\AuthenticationException; use GeniusPay\Laravel\Exceptions\ValidationException; try { $payment = GeniusPay::createPayment($data); } catch (AuthenticationException $e) { // Clés API invalides } catch (ValidationException $e) { // Données invalides $errors = $e->getErrors(); } catch (ApiException $e) { // Autre erreur API }
📚 Ressources
📄 Licence
MIT License. Voir LICENSE.