SDK PHP officiel pour l’API IzichangePay. PHP ≥ 7.4, uniquement les extensions curl et json.
composer require izichangepay/sdk

Démarrage

<?php
use Izichangepay\Client;
use Izichangepay\Http;

$izipay = new Client(getenv('IZIPAY_API_KEY'));
// Sandbox : new Client(getenv('IZIPAY_API_KEY'), Http::SANDBOX_BASE_URL);

$intent = $izipay->paymentIntents->create([
    'requestedCurrencyType' => 'fiat',
    'currencyRequested'     => 'XOF',
    'amountRequested'       => '10000',
    'acceptedCoins'         => ['USDT.TRC20'],
]);
echo $intent['paymentUrl'];
Les montants sont des chaînes décimales (ex. '10000'). La clé API détermine l’environnement : sk_test_… (sandbox) ou sk_live_… (production).

Pagination

Les endpoints de listing renvoient ['data' => [...], 'nextCursor' => ...]. L’itérateur iterate parcourt toutes les pages via le curseur :
foreach ($izipay->paymentIntents->iterate(['limit' => 50]) as $intent) {
    echo $intent['id'], PHP_EOL;
}

Vérification d’un webhook

Webhooks::validate attend le corps brut (php://input), pas un tableau re-sérialisé. Signature X-IziPay-Signature: sha256=<hex> (HMAC-SHA256), tolérance anti-replay 300 s.
<?php
use Izichangepay\Webhooks;
use Izichangepay\WebhookException;

$rawBody = file_get_contents('php://input');
try {
    $event = Webhooks::validate(
        $rawBody,
        $_SERVER['HTTP_X_IZIPAY_SIGNATURE'] ?? null,
        getenv('IZIPAY_WEBHOOK_SECRET')
    );
    // traiter $event['type'] / $event['data']
    http_response_code(200);
} catch (WebhookException $e) {
    http_response_code(400); // rejeter : $e->reason
}

Erreurs

Toutes les exceptions héritent de Izichangepay\IzichangepayException. Branchez sur le type :
TypeQuand
AuthException401 / 403
NotFoundException404
ValidationException422 (->fields)
RateLimitException429 (->retryAfter)
ServerException5xx
NetworkExceptionpas de réponse (DNS, timeout)
WebhookExceptionsignature / timestamp invalides (->reason)
<?php
use Izichangepay\ValidationException;

try {
    $izipay->payouts->create([...]);
} catch (ValidationException $e) {
    print_r($e->fields); // [champ => message]
}

Ressources disponibles

paymentIntents, payouts, invoices, products, settlements, settlementAccounts, wallet, merchantAssets, payins, assets, merchants, webhookEndpoints, whitelistAddresses.

Référence complète

Référence API pour le détail des paramètres et schémas de chaque endpoint.