Looking to hire Laravel developers? Try LaraJobs

laravel maintained by vega-pay

Description
SDK Laravel officiel pour integrer Vega Pay cote serveur.
Author
Vega Pay
Last update
2026/06/15 16:29 (dev-main)
License
Links
Downloads
0

Comments
comments powered by Disqus

vega-pay/laravel

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.