PayCentral › SDK PHP

SDK PHP

PHP 8.1+ Laravel 10+ Composer

Installation

Composer
composer require paycentral/sdk-php

PHP
use PayCentral\Client;

$paycentral = new Client($apiKey, $options);

// Options disponibles :
$options = [
    'sandbox'  => true,  // Mode sandbox (défaut: false)
    'timeout'  => 30,    // Timeout HTTP en secondes
    'base_url' => 'https://api-paycentral.gabondunumerique.com',
];

Laravel

Bash
php artisan vendor:publish --provider="PayCentral\LaravelServiceProvider"

.env
PAYCENTRAL_API_KEY=sk_sandbox_xxxxxxxxxxxxxxxxxxxx
PAYCENTRAL_SANDBOX=true
PAYCENTRAL_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxx

PHP
use PayCentral\Facades\PayCentral;  // Laravel
// ou
$paycentral = new Client('sk_sandbox_xxxx');  // PHP natif

try {
    $payment = PayCentral::initiate([
        'amount'             => 5000,
        'currency'           => 'XAF',
        'phone'              => '237691234567',
        'description'        => 'Commande #789',
        'merchant_reference' => 'CMD-789',
        'callback_url'       => route('webhooks.paycentral'),
    ]);

    // $payment->transaction_id, ->status, ->provider...
    return redirect($payment->checkoutUrl());

} catch (\PayCentral\Exceptions\PayCentralException $e) {
    report($e);
    return back()->withError('Paiement indisponible');
}

PHP
$transaction = PayCentral::status('01HXYZ9K2J...');

if ($transaction->isSuccess()) {
    // Activer la commande
}

if ($transaction->isPending()) {
    // En attente — réessayer plus tard
}

// Propriétés disponibles :
// $transaction->status, ->amount, ->currency
// ->provider, ->fees, ->net_amount, ->merchant_reference

PHP · Laravel Controller
use PayCentral\Facades\PayCentral;
use Illuminate\Http\Request;

public function handle(Request $request)
{
    // Vérifier la signature HMAC
    if (!PayCentral::verifyWebhook(
        $request->getContent(),
        $request->header('X-PayCentral-Signature')
    )) {
        abort(401);
    }

    $event = $request->json();

    match($event['event']) {
        'payment.success'  => $this->onSuccess($event),
        'payment.failed'   => $this->onFailed($event),
        default            => null,
    };

    return response()->json(['received' => true]);
}

PayCentral::initiate($data)
PayCentral::status($id)
PayCentral::transactions($filters)
PayCentral::verifyWebhook($body, $sig)
Webhooks →