Quickstart // 5 min
Créez votre première session checkout en moins de 5 minutes. Vous aurez besoin d'un compte Stripe existant et de votre clé API Qauryx (disponible dans le dashboard une fois la beta activée).
1. Installer le SDK
# npm $ npm install @qauryx/node # yarn $ yarn add @qauryx/node # pnpm $ pnpm add @qauryx/node
2. Créer une session
import { Qauryx } from '@qauryx/node'; const qauryx = new Qauryx(process.env.QAURYX_KEY!); const session = await qauryx.checkout.create({ amount: 4990, // en cents currency: 'eur', customer: 'cus_8fa72b', methods: ['card', 'apple_pay', 'sepa', 'klarna'], ml_scoring: true, retry_strategy: 'smart', return_url: 'https://shop.acme.io/done', }); // → 201 Created · 142ms // → session.url = 'https://pay.qauryx.io/c/8fa72bcc'
3. Rediriger l'utilisateur
export default async function handler(req, res) { const session = await createCheckout(req.body); res.redirect(302, session.url); }
C'est tout. Qauryx orchestre la session, la 3DS, le scoring fraude et le routing vers votre compte Stripe. Vous recevrez un webhook checkout.completed dès paiement validé.
Authentification // Bearer
L'API Qauryx utilise des clés bearer. Vous avez deux jeux distincts : test pour la sandbox, live pour la production. Ne partagez jamais une clé live côté client.
$ curl https://api.qauryx.io/v1/checkout/sessions \ -H "Authorization: Bearer qx_live_4f2a8…" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: req_8fa72b" \ -d '{"amount":4990,"currency":"eur"}'
Toutes les requêtes doivent passer en HTTPS. L'en-tête Idempotency-Key est recommandé pour toute mutation : il garantit qu'une requête répétée n'aboutit qu'à une seule opération.
Sandbox // gratuit · illimité
L'environnement sandbox réplique 100% du comportement live, y compris webhooks, scoring ML et latence p95. Idéal pour les tests d'intégration et les pipelines CI.
- Cartes test :
4242 4242 4242 4242(succès),4000 0000 0000 9995(decline) - Webhook delivery : 100% fidèle, retry exponentiel inclus
- Scoring ML : modèle réel, scores reproductibles
Checkout Sessions // resource
Une session représente une intention de paiement orchestrée. Elle inclut le routage, le scoring, les retries et la finalisation Stripe.
Paramètres
| Champ | Type | Description |
|---|---|---|
| amount | integer | Montant en plus petite unité monétaire (centimes pour EUR). |
| currency | string | Code ISO-4217 sur 3 lettres (eur, usd, gbp…). |
| customer | string | Identifiant client Qauryx ou Stripe. Optionnel pour les guests. |
| methods | string[] | Liste des méthodes activées. Par défaut : toutes celles disponibles pour la devise. |
| ml_scoring | boolean | Active le scoring anti-fraude ML. Par défaut |
| retry_strategy | string |
|
| return_url | string | URL de redirection après paiement. Doit être HTTPS. |
Exemple de réponse
{
"id": "session_8fa72bcc",
"object": "checkout.session",
"amount": 4990,
"currency": "eur",
"status": "open",
"url": "https://pay.qauryx.io/c/8fa72bcc",
"expires_at": 1721854320,
"created": 1721850720,
"livemode": true
}Customers // resource
Les objets Customer stockent les profils acheteurs, leurs méthodes de paiement tokenisées et l'historique de scoring. Synchronisés en bidirectionnel avec votre cus_* Stripe.
Refunds // resource
Les remboursements sont relayés à Stripe avec idempotence native. Vous pouvez rembourser partiellement, déclencher en webhook, ou planifier.
await qauryx.refunds.create({ payment_intent: 'pi_3Nx9aB…', amount: 2490, reason: 'requested_by_customer' });
Codes d'erreur // HTTP semantics
Qauryx suit la sémantique HTTP standard. Les codes 4xx indiquent une erreur côté requête, les 5xx un incident côté plateforme.
| Code | Type | Description |
|---|---|---|
| 400 | invalid_request | Paramètres manquants ou mal formés. |
| 401 | unauthenticated | Clé API manquante ou invalide. |
| 402 | payment_declined | Paiement refusé par l'émetteur ou le scoring fraude. |
| 404 | not_found | Ressource inexistante. |
| 409 | idempotency_conflict | Clé d'idempotence déjà utilisée avec corps différent. |
| 429 | rate_limited | Trop de requêtes. Backoff exponentiel recommandé. |
| 503 | service_unavailable | Plateforme dégradée. Voir status.qauryx.io. |
Webhooks // événements
Qauryx envoie des webhooks signés HMAC-SHA256 pour chaque événement clé. Retry exponentiel sur 72h, dead letter queue accessible.
{
"id": "evt_8fa9c1",
"type": "checkout.completed",
"created": 1721850921,
"data": {
"session_id": "session_8fa72bcc",
"amount": 4990,
"fraud_score": 12,
"method": "apple_pay"
}
}Signatures HMAC // sécurité
Chaque webhook contient un en-tête Qauryx-Signature. Vérifiez-le systématiquement avant de traiter l'événement.
import { verifyWebhook } from '@qauryx/node'; const event = verifyWebhook({ payload: req.rawBody, signature: req.headers['qauryx-signature'], secret: process.env.QAURYX_WEBHOOK_SECRET! }); // → throws QauryxSignatureError si invalide
SDKs officiels // 4 langages
SDKs maintenus en interne, releases mensuelles, typage strict. Open source sur GitHub.
@qauryx/node— TypeScript / JavaScript, Node 18+, Deno, Bunqauryx-python— Python 3.10+, async natifqauryx-go— Go 1.21+, context-awareqauryx-ruby— Ruby 3.1+, threadsafe
Pas votre langage ? L'API REST est totalement documentée en OpenAPI 3.1. Vous pouvez générer un SDK custom en quelques minutes.