vega-pay / laravel
SDK Laravel officiel pour integrer Vega Pay cote serveur.
v1.0.0
2026-06-15 14:29 UTC
Requires
- php: ^8.2
- ext-json: *
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
README
SDK Laravel officiel pour integrer Vega Pay cote serveur.
Ce package utilise uniquement la cle privee vp_sk_test_... ou vp_sk_live_... pour creer et consulter des paiements. Il ne gere pas les reversements.
Installation
composer require vega-pay/laravel
Publier la configuration :
php artisan vendor:publish --tag=vega-pay-config
Variables .env :
VEGA_PAY_SECRET_KEY=vp_sk_test_... VEGA_PAY_PUBLIC_KEY=vp_pk_test_... VEGA_PAY_WEBHOOK_SECRET=whsec_... VEGA_PAY_BASE_URL=https://api.vegapay.ci VEGA_PAY_TIMEOUT=10
Creer un paiement
use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use VegaPay\Laravel\Facades\VegaPay; Route::post('/checkout', function (Request $request) { $payment = VegaPay::createPayment([ 'amount' => $request->integer('amount'), 'currency' => 'XOF', 'orderId' => $request->string('order_id')->toString(), 'customerPhone' => $request->string('phone')->toString(), 'successUrl' => route('payment.success'), 'errorUrl' => route('payment.error'), 'metadata' => [ 'source' => 'laravel', ], ], idempotencyKey: $request->string('order_id')->toString()); return redirect()->away($payment['checkoutUrl']); });
Avec une cle marchande Vega Pay, le paiement est automatiquement rattache au compte marchand. Il n'est pas necessaire d'envoyer un sellerId.
Recuperer un paiement
$payment = VegaPay::retrievePayment('pay_...'); if ($payment['status'] === 'succeeded') { // Livrer la commande. }
Verifier un webhook
Ajoute une route qui conserve le body brut.
use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; use VegaPay\Laravel\Facades\VegaPay; use VegaPay\Laravel\Exceptions\VegaPaySignatureVerificationException; Route::post('/webhooks/vega-pay', function (Request $request) { try { $event = VegaPay::constructWebhookEvent( $request->getContent(), $request->header('X-Pay-Signature', '') ); } catch (VegaPaySignatureVerificationException) { abort(400); } if ($event['type'] === 'payment.succeeded') { $payment = $event['data']['payment']; // Marquer la commande comme payee. } return response()->json(['received' => true]); });
Gestion des erreurs
use VegaPay\Laravel\Exceptions\VegaPayException; try { $payment = VegaPay::createPayment([ 'amount' => 10000, 'currency' => 'XOF', 'orderId' => 'CMD-10001', ], idempotencyKey: 'CMD-10001'); } catch (VegaPayException $exception) { report($exception); return back()->withErrors([ 'payment' => $exception->getMessage(), ]); }
Sandbox et live
Le mode depend de la cle utilisee :
vp_sk_test_...cree des paiements sandbox.vp_sk_live_...cree des paiements reels apres verification du compte.
La cle privee doit rester cote serveur. La cle publique vp_pk_* peut etre exposee dans une integration frontend future, mais elle ne sert pas a creer un paiement serveur.