Retour aux SDKsGitHub
P
PHP SDK
v1.0.0SDK officiel pour PHP 8.1+ avec support Laravel et Symfony
Installation
composer require simiz/simiz-phpConfiguration
<?php
require_once 'vendor/autoload.php';
use Simiz\Client;
// Initialiser le client
$simiz = new Client(getenv('SIMIZ_SECRET_KEY'));
// Ou avec des options
$simiz = new Client(getenv('SIMIZ_SECRET_KEY'), [
'apiVersion' => '2024-01',
'timeout' => 30,
'maxRetries' => 3,
]);Utilisation
Créer une transaction
<?php
$transaction = $simiz->transactions->create([
'amount' => 5000,
'currency' => 'XAF',
'payment_method' => 'ORANGE_MONEY',
'payer' => [
'phone' => '237690000000',
'name' => 'John Doe',
'email' => 'john@example.com',
],
'description' => 'Achat sur Ma Boutique',
'reference' => 'ORDER-123',
'metadata' => [
'order_id' => '123',
'customer_id' => 'cust_456',
],
'callback_url' => 'https://votre-site.com/webhooks/simiz',
'return_url' => 'https://votre-site.com/payment/success',
]);
echo $transaction->id; // tx_xxx
echo $transaction->status; // PENDING
echo $transaction->payment_url; // URL de paiementRécupérer une transaction
<?php
$transaction = $simiz->transactions->retrieve('tx_xxx');
if ($transaction->status === 'COMPLETED') {
echo 'Paiement réussi!';
}Lister les transactions
<?php
$transactions = $simiz->transactions->all([
'limit' => 20,
'status' => 'COMPLETED',
'created_after' => '2024-01-01',
]);
foreach ($transactions->data as $tx) {
echo $tx->id . ' - ' . $tx->amount . PHP_EOL;
}
// Pagination automatique
foreach ($simiz->transactions->autoPagingIterator() as $tx) {
echo $tx->id . PHP_EOL;
}Intégration Laravel
Le SDK inclut un ServiceProvider et une Facade pour Laravel.
Configuration (.env)
SIMIZ_SECRET_KEY=sk_live_xxx
SIMIZ_WEBHOOK_SECRET=whsec_xxxUtilisation avec Facade
<?php
namespace App\Http\Controllers;
use Simiz\Laravel\Facades\Simiz;
use Illuminate\Http\Request;
class PaymentController extends Controller
{
public function checkout(Request $request)
{
$validated = $request->validate([
'amount' => 'required|numeric|min:100',
'phone' => 'required|string',
]);
$transaction = Simiz::transactions()->create([
'amount' => $validated['amount'],
'currency' => 'XAF',
'payment_method' => 'ORANGE_MONEY',
'payer' => ['phone' => $validated['phone']],
'callback_url' => route('webhooks.simiz'),
'return_url' => route('payment.success'),
]);
return response()->json([
'transaction_id' => $transaction->id,
'payment_url' => $transaction->payment_url,
]);
}
}Webhooks
<?php
namespace App\Http\Controllers;
use Simiz\Webhook;
use Simiz\Exception\SignatureVerificationException;
use Illuminate\Http\Request;
class WebhookController extends Controller
{
public function handle(Request $request)
{
$payload = $request->getContent();
$signature = $request->header('X-Simiz-Signature');
try {
$event = Webhook::constructEvent(
$payload,
$signature,
config('services.simiz.webhook_secret')
);
} catch (SignatureVerificationException $e) {
return response('Invalid signature', 400);
}
switch ($event->type) {
case 'transaction.completed':
$transaction = $event->data;
// Mettre à jour la commande
Order::where('payment_id', $transaction->id)
->update(['status' => 'paid']);
break;
case 'transaction.failed':
// Gérer l'échec
break;
}
return response('OK', 200);
}
}Gestion des erreurs
<?php
use Simiz\Exception\AuthenticationException;
use Simiz\Exception\InvalidRequestException;
use Simiz\Exception\ApiException;
try {
$transaction = $simiz->transactions->create([...]);
} catch (AuthenticationException $e) {
// Clé API invalide
error_log('Vérifiez votre clé API');
} catch (InvalidRequestException $e) {
// Paramètres invalides
error_log('Erreur: ' . $e->getMessage());
error_log('Paramètre: ' . $e->getParam());
} catch (ApiException $e) {
// Erreur serveur
error_log('Erreur API: ' . $e->getMessage());
}