Stripe géré par Orcraft
Paiement dynamique, sans plans à administrer
Votre backend définit chaque achat au moment où il le demande : article, montant, quantité, devise, référence et, pour un abonnement, sa période. Rien n’est à créer au préalable dans l’espace d’administration Orcraft.
Créer une session Checkout
POST /identity/billing/checkout
Authorization: Bearer ACCESS_TOKEN
Idempotency-Key: 16+ caractères aléatoires
Content-Type: application/json
{
"return_uri":"https://app.example/orcraft/return",
"checkout":{
"mode":"payment",
"reference":"order_8f3d",
"currency":"eur",
"items":[{"name":"Pack de 100 crédits","description":"Crédits Pro","amount_cents":990,"quantity":1}]
}
}La réponse contient checkout_url. Redirigez le navigateur vers cette URL Stripe. La return_uri doit être une URI HTTPS exacte enregistrée pour l’application.
Abonnement
"checkout": {
"mode":"subscription",
"reference":"pro_annual_42",
"currency":"eur",
"interval":"year",
"items":[{"name":"Pro annuel","amount_cents":9900,"quantity":1}]
}Un abonnement contient un seul article et utilise month ou year. Un paiement ponctuel peut contenir jusqu’à dix articles. Les montants sont des entiers en centimes.
Confirmation fiable et droits
- La page de retour Stripe ne prouve jamais un paiement : n’accordez aucun droit depuis ce retour.
- Configurez le webhook HTTPS de l’application dans Identity. Pour un paiement unique, Orcraft envoie
payment.succeededavecreference, montant, devise et identifiant Stripe. - Pour un abonnement, Orcraft envoie
subscription.updated, avecreference, état et date de fin de période. Utilisez votre référence pour retrouver l’offre interne. - Vérifiez
X-Orcraft-Signaturesur le corps brut, limitez la fenêtre temporelle et dédupliquezX-Orcraft-Event-Id.
Événements Stripe à connecter à Orcraft
Dans Stripe, configurez https://www.orcraft.net/action/stripe_webhook.php avec checkout.session.completed, checkout.session.expired, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.paid et invoice.payment_failed. Le secret de signature correspondant au mode Stripe doit être saisi dans Orcraft.
État et portail client
GET /identity/billing/subscriptions avec billing:read liste les abonnements de l’application et POST /identity/billing/portal avec billing:manage ouvre le portail Stripe hébergé.