En bref : votre application ou site web ouvre une URL payment://, Payment for Stripe encaisse le paiement, puis ouvre votre URL de rappel avec le résultat. Aucun SDK ni aucune configuration serveur ne sont nécessaires. Le fonctionnement est identique sur iPhone et Android, à quelques différences près (voir ci-dessous).
La documentation complète se trouve sur paymentforstripe.com/api.
Comment ça marche
- Votre application ouvre une URL
payment://avec des paramètres. - Payment for Stripe ouvre et configure la vente. Le commerçant encaisse le paiement à l'aide d'un terminal de paiement, Tap to Pay ou d'une carte saisie manuellement.
- Une fois l'opération terminée, l'application ouvre votre URL
callbackavec le résultat ajouté en tant que paramètres de requête.
Le commerçant doit être connecté. Si un lien arrive pendant qu'une autre transaction est en cours, l'application le refuse et votre rappel reçoit error=charge_in_progress.
Créer une charge : payment://new
Un paiement unique d'un montant que vous fixez.
| Nom | Taper | Requis | Description |
|---|---|---|---|
amount
|
entier | Oui | Montant exprimé dans la plus petite unité monétaire, supérieur à 1000 = 10,00 $. |
currency
|
chaîne | Non | Code ISO à trois lettres, comme usd ou eur. Si vous ne le spécifiez pas, l'application utilisera la devise déjà configurée. |
description
|
chaîne | Non | Description des frais. Encodez-la en URL. |
customer
|
chaîne | Non | customer_id identifiant client Stripe existant ( cus_…) fonctionne également. Lorsqu'il est défini, email et name sont ignorés. |
email
|
chaîne | Non | Courriel du client. Crée un nouveau client. |
name
|
chaîne | Non | Nom du client. Encodage URL. Crée un nouveau client. |
metadata
|
chaîne | Non | Objet JSON encodé en URL contenant des paires clé-valeur, ajouté au paiement. Les limites de métadonnées de Stripe s'appliquent. |
callback
|
chaîne | Non | URL à ouvrir une fois la vente terminée. |
autoprocess
|
booléen | Non | true permet de passer outre le clavier et de démarrer la charge immédiatement. Valeur par défaut : false. |
auto_return
|
booléen | Non | Si la true la fonction de rappel s'active dès que le résultat est connu. Par défaut, si la false, la fonction de rappel attend que le commerçant ferme l'écran de résultat. |
payment://new?amount=2500¤cy=eur&description=Coffee%20and%20pastry payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete Un lien comportant une amount manquante, nulle ou non numérique est ignoré.
Créez une facture à partir de votre catalogue : payment://cart
Le panier est automatiquement rempli avec les prix de votre catalogue produits Stripe. Le commerçant débite ensuite le montant comme d'habitude, et la vente est enregistrée dans Stripe sous forme de facture acquittée reprenant ces articles. Aucune facture n'est envoyée par e-mail à votre client.
| Nom | Taper | Requis | Description |
|---|---|---|---|
prices
|
chaîne | Oui | Les paires price_id:quantity séparées par des virgules, comme price_abc:2,price_xyz:1, fonctionnent également. line_items fonctionne aussi. |
coupon
|
chaîne | Non | Identifiant du coupon Stripe à appliquer au panier. |
customer
|
chaîne | Non | Identifiant client Stripe existant. customer_id fonctionne également. |
email
|
chaîne | Non | Courriel du client. Crée un nouveau client. |
name
|
chaîne | Non | Nom du client. Encodez-le en URL. |
metadata
|
chaîne | Non | Objet JSON encodé en URL contenant des paires clé-valeur. |
callback
|
chaîne | Non | URL à ouvrir une fois la vente terminée. |
autoprocess
|
booléen | Non | Le true commence une fois que tous les prix (et le coupon) ont été chargés. |
auto_return
|
booléen | Non | Identique à ci-dessus. Valeur par défaut : false. |
payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com N'envoyez pas amount avec prices. Le total est calculé à partir des prix ; un lien contenant les deux sera ignoré. Les prix masqués avec `payment_hidden` fonctionnent toujours.
Réglez une facture existante : paiement://facture
Permet d'encaisser un paiement en personne pour une facture Stripe en cours. Le montant, la devise, le client et la TVA sont extraits de la facture. Une fois le paiement effectué, l'application marque la facture comme réglée. Compatible avec iPhone et Android.
| Nom | Taper | Requis | Description |
|---|---|---|---|
id
|
chaîne | Oui | Identifiant de la facture Stripe. Doit commencer par in_. Envoyer une facture ouverte. Sur iPhone, un brouillon est d'abord finalisé. Sur Android, un brouillon est refusé avec error=invoice_state_changed. |
metadata
|
chaîne | Non | Objet JSON encodé en URL, ajouté à l'intention de paiement. |
callback
|
chaîne | Non | URL à ouvrir une fois la vente terminée. Récupère invoice_id et payment_intent_id en cas de succès. |
autoprocess
|
booléen | Non | La facturation true démarre qu'après validation de la facture et uniquement lorsqu'un lecteur de carte est connecté. |
auto_return
|
booléen | Non | Identique à ci-dessus. Valeur par défaut : false. |
payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid La facture enregistre la vente ; par conséquent, toute valeur manquante dans les champs amount », currency, customer, customer_id, email, name », « description », coupon, prices ou line_items entraîne le rejet du lien avec error=invoice_invalid_param. Les factures payées, annulées, irrécouvrables, d’un montant de 0 $, liées à un abonnement ou configurées pour débiter un mode de paiement par défaut sont également rejetées, chacune avec sa propre erreur invoice_….
Le rappel
L'application ajoute ces éléments à votre URL de rappel :
| Nom | Taper | Envoyé | Description |
|---|---|---|---|
status
|
chaîne | Toujours | success, error ou cancelled. |
charge_id
|
chaîne | En cas de succès | L'identifiant du paiement. Sur iPhone, il s'agit de la transaction Stripe ( ch_…). Sur Android, il s'agit de l'intention de paiement ( pi_…). |
stripe_charge_id
|
chaîne | Android uniquement | La facturation Stripe ( ch_…). |
payment_intent_id
|
chaîne | En cas de succès | L'objet PaymentIntent est envoyé par iPhone uniquement pour payment://invoice), et par Android pour chaque paiement par carte. |
invoice_id
|
chaîne | Liens vers les factures | La facture payée, pour payment://invoice. |
amount
|
entier | En cas de succès | Montant facturé, dans la plus petite unité. |
currency
|
chaîne | En cas de succès | Code ISO en minuscules. |
error
|
chaîne | En cas d'erreur | Un code court comme charge_in_progress ou invoice_already_paid, ou un message lisible pour une carte refusée. |
myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500¤cy=usd&chargeId=ch_3Qx… Vous avez besoin du même identifiant sur les deux plateformes ? Lisez d’abord stripe_charge_id, puis utilisez charge_id en cas de besoin.
Pour les intégrations plus anciennes, l'application envoie également success=true, chargeId, cancelled=true et error[message]. Le nouveau code devrait lire status.
Une annulation déclenche immédiatement une notification. La confirmation ou l'échec d'une transaction attend que le commerçant ferme l'écran de résultat, sauf si vous spécifiez auto_return=true. Sur iPhone, une vente au comptant ne déclenche jamais de notification, puisqu'aucun débit n'a été effectué.
Encodage URL
- Encodez chaque valeur contenant des espaces ou des symboles. Les espaces deviennent
%20,{et}deviennent%7Bet%7D,"devient%22,:devient%3A. - Si votre URL de rappel possède sa propre chaîne de requête, encodez l'intégralité du rappel afin que le caractère
&ne divise pas votre lienpayment://. - Les virgules et les deux-points dans
pricespeuvent rester tels quels.
Les métadonnées {"order_id":"1234","location":"Store A"} deviennent :
payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D L'ancienne forme metadata[order_id]=1234 fonctionne également.