Documentation

Tout ce qu'il faut, rien de plus.

API REST, webhooks signés, SDK JavaScript et Python. Démarrage en moins de quinze minutes en sandbox.

Démarrage rapide

Maxiopak est une couche logicielle posée sur Stripe. Les paiements sont traités par Stripe, sous votre propre contrat marchand. Maxiopak orchestre, signe, mesure et présente.

Vous aurez besoin :

  • D'un compte Stripe actif (sandbox ou production)
  • D'une clé API Maxiopak (fournie après acceptation en beta)
  • De Node.js 18+ ou Python 3.10+

Installation

# JavaScript
npm install @maxiopak/node

# Python
pip install maxiopak

Premier paiement

import Maxiopak from '@maxiopak/node';

const mx = new Maxiopak(process.env.MAXIOPAK_KEY);

const session = await mx.checkout.sessions.create({
  amount: 23200,           // en centimes
  currency: 'eur',
  customer_email: 'camille@maison-sauvage.com',
  success_url: 'https://maison-sauvage.com/merci',
  cancel_url:  'https://maison-sauvage.com/panier'
});

console.log(session.url);  // redirigez le client ici
i

En sandbox, utilisez la carte test 4242 4242 4242 4242 avec n'importe quelle date future et CVC.

Authentification

Chaque appel API doit inclure votre clé secrète dans l'en-tête Authorization, préfixée par Bearer .

curl https://api.maxiopak.com/v1/sessions \
  -H "Authorization: Bearer mxk_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json"

Deux jeux de clés sont émis : mxk_test_* pour la sandbox et mxk_live_* pour la production. Ne committez jamais vos clés en clair.

Référence API

L'API expose un ensemble réduit d'objets : sessions, payments, customers, refunds, events.

Créer une session de checkout

POST /v1/sessions

{
  "amount": 23200,
  "currency": "eur",
  "payment_methods": ["card", "apple_pay", "google_pay", "sepa"],
  "customer_email": "camille@maison-sauvage.com",
  "metadata": { "order_id": "MS-10421" },
  "success_url": "https://maison-sauvage.com/merci",
  "cancel_url":  "https://maison-sauvage.com/panier"
}

Récupérer un paiement

GET /v1/payments/pi_3OqXyZ...

Response 200
{
  "id": "pi_3OqXyZ...",
  "status": "succeeded",
  "amount": 23200,
  "currency": "eur",
  "payment_method": "card",
  "created": "2026-05-17T09:14:22Z"
}

Webhooks

Maxiopak émet des événements signés HMAC SHA-256 vers l'URL que vous configurez. Vérifiez la signature avant tout traitement.

POST https://votre-app.com/webhooks/maxiopak

Headers:
  Maxiopak-Signature: t=1716...,v1=abc123...
  Content-Type: application/json

Body:
{
  "id": "evt_...",
  "type": "payment.succeeded",
  "data": { ... }
}

Événements principaux : session.created, payment.succeeded, payment.failed, refund.created, dispute.opened.

SDK

Deux SDK officiels sont maintenus, en miroir l'un de l'autre.

  • @maxiopak/node — TypeScript natif, ESM & CJS
  • maxiopak (Python) — typed, async-ready

Sandbox

La sandbox est gratuite, illimitée et activée par défaut. Toutes les requêtes signées avec mxk_test_* ne déclenchent aucun mouvement d'argent.

Erreurs

Toutes les erreurs renvoient un objet JSON normalisé.

{
  "error": {
    "type": "invalid_request",
    "code": "amount_too_small",
    "message": "Le montant minimum est de 50 centimes.",
    "param": "amount"
  }
}

Changelog

Voir la liste complète des évolutions API et SDK sur changelog.maxiopak.com.