API
Bibliothèques PHP et Node.js
Pour appeler l'API depuis votre logiciel, deux bibliothèques officielles font le travail répétitif à votre place : obtenir et renouveler le jeton, réessayer un appel refusé pour excès de débit, traduire les erreurs, vérifier la signature des webhooks.
| Langage | Paquet | Code source |
|---|---|---|
| PHP 8.1 et plus | myadion/sdk sur Packagist | github.com/myadion/sdk-php |
| Node.js 18 et plus | @myadion/sdk sur npm | github.com/myadion/sdk-node |
Toutes deux sont libres (licence MIT). Chaque dépôt contient un guide complet, en anglais et en français.
Avant de commencer
Créez une application serveur dans Mon compte › Applications, avec les seuls scopes utiles, et gardez son identifiant et son secret sur votre serveur. Voir Créer une application.
Installer
composer require myadion/sdknpm install @myadion/sdkUn premier appel
En PHP :
$client = new \MyAdion\Client([
'client_id' => getenv('MYADION_CLIENT_ID'),
'client_secret' => getenv('MYADION_CLIENT_SECRET'),
]);
$session = $client->pay->sessions->create([
'amount_cents' => 4990,
'description' => 'Commande n° 4521',
'reference' => 'CMD-4521',
'success_url' => 'https://boutique.exemple.fr/commande/4521/merci',
], ['idempotency_key' => 'commande-4521']);
header('Location: '.$session->url);En Node.js :
import { MyAdion } from '@myadion/sdk'
const myadion = new MyAdion({
clientId: process.env.MYADION_CLIENT_ID,
clientSecret: process.env.MYADION_CLIENT_SECRET,
})
const session = await myadion.pay.sessions.create(
{
amount_cents: 4990,
description: 'Commande n° 4521',
reference: 'CMD-4521',
success_url: 'https://boutique.exemple.fr/commande/4521/merci',
},
{ idempotencyKey: 'commande-4521' },
)Ce que les bibliothèques font pour vous
- Le jeton. Elles l'obtiennent au premier appel et le renouvellent avant qu'il expire.
- Les nouvelles tentatives. Un appel refusé pour excès de débit (429) est réessayé un peu plus tard. Après une erreur du serveur ou une coupure, seul ce qui ne risque rien est réessayé : une lecture, ou une création de session de paiement, protégée par une clé d'idempotence. Un remboursement ou un SMS n'est jamais envoyé deux fois.
- Les erreurs. Une erreur de saisie donne les messages champ par champ ; un droit manquant, une erreur à part.
- Les webhooks. Une seule fonction vérifie la signature et la fraîcheur d'un webhook, puis rend l'événement.
- Les listes. Une boucle parcourt toutes les pages, chargées au fur et à mesure.
Elles couvrent Adion Pay et les SMS, et savent appeler toute autre route de l'API avec la même connexion.
Vérifier un webhook
$event = \MyAdion\Webhook::constructEvent(
file_get_contents('php://input'),
$_SERVER['HTTP_ADION_SIGNATURE'] ?? '',
getenv('MYADION_WEBHOOK_SECRET'),
);const event = MyAdion.webhooks.constructEvent(rawBody, req.headers['adion-signature'], process.env.MYADION_WEBHOOK_SECRET)Passez le corps brut de la requête, avant tout décodage JSON. Une signature fausse ou de plus de cinq minutes lève une erreur : répondez 400.
Tester
Il n'y a ni clé de test ni interrupteur. Utilisez l'identifiant et le secret d'une application créée dans une organisation de test : rien d'autre ne change, et les objets portent livemode: false. Pour passer en production, changez d'identifiants.
Pour aller plus loin
- Encaisser avec Adion Pay : le parcours complet, de la session au webhook.
- La référence de chaque route : adion-api.eu.