Aller au contenu principal

SDK PHP

Client officiel de l'API pour PHP 8.1 et plus, sans dépendance.

composer require cajoupay/cajoupay-php
$cajoupay = new \CajouPay\Client('sk_test_…');

$payment = $cajoupay->payments->create([
'amount' => 18000,
'mode' => 'on_delivery',
'expires_at' => new DateTimeImmutable('+7 days'),
'reference' => 'CMD-20482',
'return_url' => 'https://awa-mode.ci/commande/20482/merci',
], ['idempotency_key' => 'commande-20482']);

$cajoupay->payments->retrieve($payment['id']);
$cajoupay->payments->cancel($payment['id']);
foreach ($cajoupay->payments->each(['status' => 'succeeded']) as $p) {
// toutes les pages, chargées au fil de la lecture
}
$cajoupay->balance->retrieve();
$cajoupay->balanceTransactions->all(['type' => 'fee']);
$cajoupay->payouts->create();

Les réponses sont des tableaux PHP, avec les champs de la référence de l'API. Les dates (DateTimeInterface) sont envoyées en UTC.

Erreurs​

Chaque erreur de l'API lève une sous-classe de CajouPay\Exception\ApiException : InvalidRequestException, AuthenticationException, PermissionException, NotFoundException, ConflictException, RailException, RateLimitException, ApiErrorException.

try {
$cajoupay->payments->create($params);
} catch (\CajouPay\Exception\InvalidRequestException $e) {
echo $e->getErrorCode(), ' sur ', $e->getParam();
} catch (\CajouPay\Exception\ConnectionException $e) {
// API injoignable : réessayer plus tard, avec la même clé d'idempotence
}

Fiabilité​

  • Chaque création porte une clé d'idempotence (la vôtre, sinon une clé aléatoire).
  • Le SDK réessaie seul, deux fois par défaut, après une coupure réseau, une erreur 5xx, rate_limited ou idempotency_key_in_use, avec la même clé.
  • La clé secrète n'apparaît dans aucun message d'erreur.

Options : api_base, max_retries, timeout (secondes par essai), app_info (ajouté au User-Agent), http_client (votre propre client HTTP, qui implémente CajouPay\Http\HttpClient).

Webhooks​

$event = \CajouPay\Webhook::constructEvent($payload, $signatureHeader, 'whsec_…');

Voir Webhooks.