Ir al contenido

SDK de PHP

El SDK sangho/sangho-php es compatible con PHP 8.0+ y ofrece una interfaz orientada a objetos. Compatible con Laravel, Symfony y cualquier proyecto PHP estándar.

Instalación

bash
composer require sangho/sangho-php

Configure su clave API mediante el método estático Sangho::setApiKey(). En producción, utilice variables de entorno en lugar de valores escritos directamente en el código.

Laravel — facade Sangho

Con Laravel, publique el archivo de configuración mediante php artisan vendor:publish –provider=“Sangho\SanghoServiceProvider” y defina después SANGHO_SECRET_KEY en su .env. La facade Sangho:: está disponible automáticamente en todos sus controladores.

Inicialización

php
<?php
use Sangho\Sangho;
// Configuration globale (une seule fois, au bootstrap)
Sangho::setApiKey(getenv('SANGHO_SECRET_KEY'));
// Créer un PaymentIntent
$intent = Sangho::paymentIntents()->create([
    'amount'               => 5000,
    'currency'             => 'XAF',
    'payment_method_types' => ['mobile_money', 'card'],
    'metadata'             => ['order_id' => 'CMD-001'],
]);
echo $intent->client_secret;

Gestión de errores

Todas las excepciones heredan de Sangho\Exception\SanghoException. Utilice las subclases para diferenciar los casos de negocio.

Paginación

Los endpoints de listado devuelven un objeto ListObject con las propiedades count, data y has_more. Utilice page y page_size para navegar.

Reintento automático

El SDK reintenta automáticamente los errores 429 y 5xx con un backoff exponencial. Configúrelo mediante Sangho::setMaxNetworkRetries(3).

Gestión de errores

php
<?php
use Sangho\Exception\AuthenticationException;
use Sangho\Exception\InvalidRequestException;
use Sangho\Exception\RateLimitException;
use Sangho\Exception\SanghoException;


try {
    $intent = Sangho::paymentIntents()->create([
        'amount'   => 5000,
        'currency' => 'XAF',
    ]);
} catch (AuthenticationException $e) {
    // Clé API invalide ou expirée
} catch (InvalidRequestException $e) {
    echo $e->getParam();   // Champ invalide
    echo $e->getMessage();
} catch (RateLimitException $e) {
    // Trop de requêtes — retenter plus tard
} catch (SanghoException $e) {
    echo $e->getCode();    // Code métier Sangho
    echo $e->getMessage(); // Message lisible
    echo $e->getStatus();  // Code HTTP
}

Paginación

php
<?php
$page = Sangho::transactions()->list([
    'status'    => 'completed',
    'page'      => 1,
    'page_size' => 20,
]);
echo $page->count;          // Total de résultats
foreach ($page->data as $tx) {
    echo $tx->id . "\n";
}
// Page suivante
if ($page->has_more) {
    $page2 = Sangho::transactions()->list([
        'status'    => 'completed',
        'page'      => 2,
        'page_size' => 20,
    ]);
}