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_limitedouidempotency_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.