Package Laravel pour l'intégration de Wave Africa (API Checkout, Webhooks, Signature des requêtes).
composer require sunucode/laravel-wavePublier la configuration :
php artisan vendor:publish --tag=wave-configAjouter dans .env :
WAVE_API_KEY=wave_sn_prod_...
WAVE_API_SECRET=wave_sn_AKS_...
WAVE_WEBHOOK_SECRET=whsec_...
WAVE_CALLBACK_URL=https://abc123.ngrok.io # optionnel, pour dev local
WAVE_TEST_AMOUNT=5 # optionnel, montant test en dev
use Sunucode\Wave\Facades\Wave;
$session = Wave::checkout()
->amount(5000)
->currency('XOF')
->successUrl(Wave::callbackUrl('/paiement/succes?ref=ORDER-123'))
->errorUrl(Wave::callbackUrl('/paiement/erreur'))
->reference('ORDER-123')
->create();
return redirect($session->launchUrl);use Sunucode\Wave\Facades\Wave;
Route::post('/webhooks/wave', function (Request $request) {
$payload = Wave::webhook()->verify($request);
if ($payload->isCheckoutCompleted()) {
$reference = $payload->reference();
$transactionId = $payload->transactionId();
// Activer l'abonnement, confirmer la commande, etc.
}
return response()->json(['status' => 'ok']);
})->withoutMiddleware(['web']);use Sunucode\Wave\Http\Middleware\VerifyWaveSignature;
Route::post('/webhooks/wave', [WebhookController::class, 'wave'])
->middleware(VerifyWaveSignature::class);$balance = Wave::balance();Wave n'a pas de sandbox. Pour tester en local :
ngrok http 8000.env:WAVE_CALLBACK_URL=https://xxx.ngrok-free.app.env:WAVE_TEST_AMOUNT=5(envoie 5 XOF au lieu du vrai montant)
MIT