# Paiements Konbini Utilisez les API Payment Intents et Payment Methods pour accepter les paiements via Konbini, un moyen de paiement courant dans les commerces japonais. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=checkout. > Stripe peut automatiquement proposer les moyens de paiement pertinents à vos clients en évaluant la devise, les restrictions liées aux moyens de paiement et d’autres paramètres. > > - Suivez le guide [Accepter un paiement](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted) pour créer une intégration de paiement qui utilise des [moyens de paiement dynamiques](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md). - Si vous ne souhaitez pas utiliser de moyens de paiement dynamiques, suivez les étapes ci-dessous pour configurer manuellement les moyens de paiement dans votre intégration Checkout. Konbini est un moyen de paiement [à usage unique](https://docs.stripe.com/payments/payment-methods.md#usage) qui nécessite que le client effectue quelques [actions supplémentaires](https://docs.stripe.com/payments/payment-methods.md#customer-actions) pour réaliser son paiement. Les clients doivent fournir un code de paiement, un numéro de confirmation et payer en espèces dans un commerce de proximité japonais. Stripe vous enverra une notification une fois le paiement terminé. ## Déterminer la compatibilité **Lieux d’implantation pris en charge** : JP **Devises prises en charge** : `jpy` **Devises de règlement** : `jpy` **Mode de paiement** : Yes **Mode de configuration** : No **Mode d’abonnement** : No Une session Checkout doit remplir toutes les conditions suivantes pour prendre en charge les paiements Konbini : - Le *tarif* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) de tous les postes doit être exprimé dans la même devise (JPY). - Vous ne pouvez utiliser que des postes ponctuels (les postes récurrents dans le cadre de plans d’*abonnement* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) ne sont pas pris en charge). ## Accepter un paiement > Avant d’utiliser ce guide, commencez par créer une intégration permettant d’[accepter un paiement](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout) avec Checkout. Cela vous explique comment activer Konbini et vous montre les différences entre l’acceptation de paiements à l’aide de moyens de paiement dynamiques et la configuration manuelle des moyens de paiement. ### Activer Konbini en tant que moyen de paiement Lors de la création d’une nouvelle [session Checkout](https://docs.stripe.com/api/checkout/sessions.md), vous devez : 1. Ajouter `konbini` à la liste `payment_method_types`. 1. Veiller à ce que tous vos `line_items` utilisent la devise `jpy`. #### Page hébergée par Stripe ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Page entièrement intégrée ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` ### Options supplémentaires de moyens de paiement Les options de moyens de paiement peuvent être définies dans les [options des moyens de paiement](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-konbini) sous la clé `konbini`. | Champ | Valeur | Obligatoire | Valeur par défaut | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ----------------- | | `expires_after_days` | Nombre de jours calendaires avant l’expiration d’un paiement Konbini en attente. Les valeurs valides sont comprises entre 1 et 60 jours. Consultez la page [Expiration](https://docs.stripe.com/payments/konbini/accept-a-payment.md#checkout-additional-options-expiration). | Non | 3 | #### Expiration Les paiements Konbini en attente expirent juste avant minuit (23 h 59 m 59 s JST) à la date donnée. Par exemple, si le paramètre `expires_after_days` est défini sur 2 et que le PaymentIntent est confirmé le lundi, le paiement Konbini en attente expirera le mercredi à 23 h 59 m 59 s heure du Japon (UTC+9). #### Page hébergée par Stripe ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "success_url=https://example.com/success" ``` #### Page entièrement intégrée ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=jpy" \ -d "line_items[0][price_data][product_data][name]=Tシャツ" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_options[konbini][expires_after_days]=7" \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=konbini" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` #### Numéro de téléphone Sur le formulaire de paiement de Konbini, vos clients peuvent fournir un numéro de téléphone à utiliser comme numéro de confirmation. Cela simplifie le processus de paiement dans une supérette où l’interface utilisateur demande au client de fournir un code de paiement et son numéro de confirmation. Ces deux éléments sont pris en compte dans les instructions de paiement que Stripe affiche après que le client a soumis son formulaire de paiement. Si votre client ne fournit pas de numéro de téléphone, Stripe génère un numéro de confirmation aléatoire. Stripe bloque de manière proactive les numéros de téléphone qui ne sont composés que de zéros. ### Rediriger vers la page coupon hébergée par Stripe > Contrairement à ce qui se passe pour les paiements par carte, le client ne sera pas redirigé vers l’adresse [success_url](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-success_url) lors d’un paiement Konbini. Une fois l’envoi du formulaire Checkout effectué, le client est redirigé vers la page `hosted_voucher_url`. Le client peut consulter les instructions de paiement de la page hébergée pour obtenir plus de détails sur la finalisation du paiement. Vous pouvez afficher la page sur les ordinateurs de bureau et les appareils mobiles ou bien l’imprimer. Stripe envoie un événement [payment_intent.requires_action](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.requires_action) lors de la création d’un bon Konbini. Si vous souhaitez envoyer à vos clients un e-mail contenant un lien vers les instructions de paiement du bon, localisez l’adresse `hosted_voucher_url` dans [payment_intent.next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-hosted_voucher_url). En savoir plus sur le [suivi d’un PaymentIntent avec des webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks). Stripe vous permet de personnaliser les interfaces utilisateur sur la page [Paramètres de marque](https://dashboard.stripe.com/account/branding). Vous pouvez appliquer les paramètres de marque suivants au coupon : - **Icône** : image représentant votre marque et votre dénomination sociale publique - **Couleur d’accentuation** : utilisée comme couleur du bouton Copier le numéro - **Couleur de marque** : utilisée comme couleur d’arrière-plan ### Traiter vos commandes Konbini étant un moyen de paiement à notification différée, vous devez utiliser une méthode telle que des *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) pour suivre l’état des paiements et gérer le *traitement* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) des commandes. En savoir plus sur la [configuration des webhooks et le traitement des commandes](https://docs.stripe.com/checkout/fulfillment.md). Les événements suivants sont envoyés lorsque l’état du paiement change : | Nom de l’événement | Description | Étapes suivantes | | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Le client a envoyé le formulaire Checkout. Stripe a généré le coupon Konbini. Vous pouvez envoyer le `hosted_voucher_url` à votre client par e-mail au cas où il perdrait le coupon Konbini. | Attendez que le client s’acquitte du paiement dans un magasin Konbini. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Le client s’est acquitté du paiement du coupon Konbini. Le `PaymentIntent` bascule sur `succeeded`. | Traitez la commande de biens ou de services de votre client. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Le coupon Konbini a expiré, ou le paiement a échoué pour un autre motif. Le `PaymentIntent` revient à l’état `requires_payment_method`. | Contactez le client par e-mail et demandez-lui de passer une nouvelle commande. | ## Tester votre intégration Lors du test de votre intégration Checkout, sélectionnez le moyen de paiement Konbini, puis cliquez sur le bouton **Payer**. Renseignez les valeurs suivantes dans le formulaire Checkout pour tester différents scénarios. Vous pouvez effectuer vos tests avec un numéro de confirmation spécial et/ou un modèle d’e-mail, le numéro de confirmation prévalant lorsque les deux éléments sont fournis. | E-mail | Numéro de confirmation | Description | | ---------------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{any_prefix}@{any_domain}` | `11111111110` | Simule un paiement Konbini qui réussit après 3 minutes. Le webhook `payment_intent.succeeded` s’affiche ensuite. Exemple : hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Simule un paiement Konbini qui réussit immédiatement. Le webhook `payment_intent.succeeded` s’affiche ensuite. Exemple : succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Simule un paiement Konbini qui expire immédiatement. Le webhook `payment_intent.payment_failed` s’affiche ensuite. Le champ `expires_at` de [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) est défini sur la date/heure du jour, quelle que soit la valeur du paramètre `expires_after_days` ou `expires_at` des [options du moyen de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Exemple : expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Simule un paiement Konbini qui ne réussit jamais. Il expire au bout de 3 minutes et le webhook `payment_intent.payment_failed` s’affiche ensuite. Le champ `expires_at` de [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) est défini pour expirer après 3 minutes, quelle que soit la valeur définie dans les paramètres `expires_after_days` ou '`expires_at` des [options du moyen de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Exemple : expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Simule un paiement Konbini qui ne réussit jamais. Il expire conformément à la valeur du champ `expires_at` dans `next_action.konbini_display_details`, en fonction des paramètres définis dans les [options des moyens de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Le `payment_intent.payment_failed` s’affiche ensuite. Exemple : fill_never@test.com | Pour tester les erreurs de [numéro de confirmation](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number), vous pouvez utiliser les valeurs suivantes : - `01234567890` simule le rejet d’un numéro de confirmation. - `00000000000` entraîne une erreur de validation. ## Expiration et annulation Une fois la date définie par la valeur `expires_at` dans le [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at), le client ne peut plus *initier* le traitement du paiement Konbini en attente dans un kiosque de supérette. Cependant, si un reçu de paiement valide est émis avant l’échéance, il pourra *finaliser* le paiement à la caisse après la date `expires_at`. Dans ce cas, il existe une marge de manœuvre pour éviter des échecs de paiement prématurés. L’état du PaymentIntent passe à `requires_payment_method`. Vous pouvez alors annuler ou confirmer le PaymentIntent avec un autre moyen de paiement. Un paiement Konbini en attente peut également être annulé une fois confirmé, avant même la date spécifiée par `next_action.konbini_display_details.expires_at`. De la même manière, la mise à jour du PaymentIntent ou sa confirmation avec un autre moyen de paiement annulera de manière implicite le paiement Konbini existant. Si le client est en cours de paiement du paiement Konbini dans un commerce de proximité, la requête d’annulation échouera. Une nouvelle tentative d’annulation peut être envisagée si le client abandonne la tentative de paiement et une fois l’expiration du justificatif de paiement. Veuillez noter que les [problèmes de disponibilité temporaires des moyens de paiement](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) impactent également les demandes d’annulation (explicites comme implicites). > Lorsque vous annulez un paiement en attente, les instructions de paiement initiales sont invalidées. Dans la plupart des cas d’usage, nous vous suggérons de contacter votre client pour l’informer de l’annulation. > > Lorsque vous reconfirmez un PaymentIntent dont l’état affiche `requires_action`, nous créons de nouvelles instructions ainsi qu’une nouvelle `hosted_voucher_url`. Vous devez veiller à ce que votre client en soit informé. ## Remboursements Il est possible de rembourser les payments par Konbini via le [Dashboard](https://dashboard.stripe.com/payments) ou les [API](https://docs.stripe.com/api.md#create_refund). Pour exécuter un remboursement et l’envoyer directement sur le compte bancaire du client, votre client doit fournir les coordonnées bancaires du compte sur lequel il souhaite recevoir les fonds. Stripe contacte le client à l’adresse e-mail indiquée dans les informations de facturation et lui demande ces informations. Une fois les coordonnées bancaires reçues, nous procédons automatiquement au remboursement. L’état du remboursement évolue comme suit : | Événement | État du remboursement | | --------------------------------------------------------------------------------- | --------------------- | | Le remboursement est créé | `requires_action` | | Le client soumet ses coordonnées bancaires et Stripe initie le remboursement | `pending` | | Le remboursement devrait arriver sur le compte bancaire du client | `succeeded` | | La banque du client reverse les fonds à Stripe | `requires_action` | | Le remboursement passe à l’état `requires_action` 45 jours après sa création | `failed` | | Le remboursement est annulé à partir d’un état `requires_action` | `canceled` | Si la banque du client ne parvient pas à mener à bien le transfert, les fonds sont reversés à Stripe et le remboursement bascule sur l’état `requires_action`. Cette situation se produit si le nom du titulaire du compte ne correspond pas aux données que la banque bénéficiaire possède dans ses archives, ou si le numéro de compte bancaire fourni contient une faute de frappe. Dans ces cas-là, Stripe envoie un e-mail au client pour l’informer de l’échec de l’opération et lui demande de soumettre à nouveau ses coordonnées bancaires. Si votre client ne fournit pas ses coordonnées bancaires sous 45 jours, l’état du remboursement passe à `failed` et nous envoyons l’événement [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Cela signifie que Stripe n’est pas en mesure de procéder au remboursement et que vous devez [restituer les fonds à votre client en dehors de Stripe](https://docs.stripe.com/refunds.md#failed-refunds). Le champ [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) du remboursement correspond à l’adresse e-mail à laquelle le remboursement a été envoyé. En attente de la réponse du client, vous pouvez retrouver les informations relatives à la date et l’adresse d’envoi de l’e-mail sous le champ [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) du remboursement. Chaque remboursement d’entrepreneur individuel (y compris les remboursements partiels) peut entraîner des frais. Veuillez consulter votre contact chez Stripe pour en savoir plus à ce sujet. ### Tester les remboursements Pour tester le comportement de remboursement en mode test, utilisez les comptes bancaires de test suivants sur la page de collecte des coordonnées bancaires, dont le lien figure dans l’e-mail envoyé au client. Aucunes autres coordonnées bancaires ne seront acceptées. | Routage | Compte | Type | | --------- | ------------------------------------------------------------- | ------------------------- | | `1100000` | `0001234` | Le remboursement réussit. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Le remboursement échoue. | #### Tester l’expiration des remboursements Vous pouvez simuler l’expiration d’un remboursement en mode test en effectuant un appel à l’API. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ``` ## See also - [Exécution Checkout](https://docs.stripe.com/checkout/fulfillment.md) - [Personnalisation de Checkout](https://docs.stripe.com/payments/checkout/customization.md) # API Direct > This is a API Direct for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/konbini/accept-a-payment?payment-ui=direct-api. Les utilisateurs de Stripe au Japon peuvent accepter des paiements Kombini de clients situés au Japon en utilisant les API Payment Intents et Payment Methods. Pour payer, les clients fournissent un code de paiement, un numéro de confirmation et un paiement en espèces dans un commerce de proximité japonais. Stripe vous informe lorsque le paiement est effectué. ## Configurer Stripe [Côté serveur] Pour commencer, vous avez besoin d’un compte Stripe. [Inscrivez-vous](https://dashboard.stripe.com/test/register). Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application : #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Créer un PaymentIntent [Côté serveur] Pour représenter votre intention d’encaisser le paiement d’un client, Stripe utilise un objet [PaymentIntent](https://docs.stripe.com/api/payment_intents.md) qui suit les changements d’état depuis la création du PaymentIntent Konbini jusqu’à son exécution. Créez un PaymentIntent sur votre serveur en indiquant un montant et la devise `jpy` (Konbini ne prend pas en charge d’autres devises). Si vous disposez déjà d’une intégration utilisant l’[API Payment Intents](https://docs.stripe.com/payments/payment-intents.md), ajoutez `konbini` à la liste des [types de moyens de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) pour votre PaymentIntent. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d "payment_method_types[]=konbini" \ -d "payment_method_options[konbini][product_description]=Tシャツ" \ -d "payment_method_options[konbini][expires_after_days]=3" ``` ### Récupérer la clé secrète du client Le PaymentIntent contient une *clé secrète* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) à utiliser côté client pour finaliser le processus de paiement en toute sécurité. Vous pouvez adopter différentes approches pour transmettre cette clé secrète côté client. #### Application monopage Récupérez la clé secrète du client à partir d’un endpoint sur votre serveur, à l’aide de la fonction `fetch` du navigateur. Cette approche est recommandée si votre côté client est une application d’une seule page, en particulier si elle repose sur un framework front-end moderne tel que React. Créez l’endpoint de serveur qui gère la clé secrète du client : #### Ruby ```ruby get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end ``` Récupérez ensuite la clé secrète du client à l’aide JavaScript côté client : ```javascript (async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })(); ``` #### Rendu côté serveur Transmettez la clé secrète à votre client depuis votre serveur. Cette approche fonctionne mieux si votre application génère du contenu statique sur le serveur avant de l’envoyer sur le navigateur. Ajoutez le [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) à votre formulaire de paiement. Dans votre code côté serveur, récupérez la clé secrète du client à partir du PaymentIntent : #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ### Options supplémentaires de moyens de paiement Les options de moyens de paiement peuvent être définies dans les [options des moyens de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini) sous la clé `konbini`. | Champ | Valeur | Obligatoire | Valeur par défaut | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------ | | `expires_after_days` | Nombre de jours calendaires avant l’expiration d’un paiement Konbini en attente. Les valeurs valides sont comprises entre 1 et 60 jours. Consultez la page [Expiration](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Non | 3 | | `expires_at` | Horodatage Unix indiquant la date d’expiration du paiement Konbini en attente. Cette date doit être située à moins de 30 minutes de l’heure actuelle et à moins de 60 jours de l’application du paramètre au PaymentIntent. Consultez la page [Expiration](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options-expiration). | Non | *non définie* | | `product_description` | Un libellé de produit allant jusqu’à 22 caractères, qui apparaîtra aux clients dans l’épicerie la plus proche. Présence de non-shift JIS([JIS X 0208 : 1997](https://en.wikipedia.org/wiki/Shift_JIS)) provoquera un retour d’erreur. Bien que ce ne soit pas obligatoire, nous recommandons de définir cette option. Sinon, nous revenons à un générique provisoire choisi à notre discrétion, par exemple お買い上げ商品・サービス. | Non | *paramètre substituable* | #### Expiration Les paiements Konbini en attente expirent juste avant minuit (23 h 59 m 59 s JST) à la date donnée. Par exemple, si le paramètre `expires_after_days` est défini sur 2 et que le PaymentIntent est confirmé le lundi, le paiement Konbini en attente expirera le mercredi à 23 h 59 m 59 s heure du Japon (UTC+9). Le paramètre `expires_at` est un horodatage Unix exprimé en secondes. Si cette valeur est définie à moins de 30 minutes de l’heure actuelle ou si la confirmation du PaymentIntent est effectuée moins de 30 minutes avant l’heure d’expiration, une erreur sera renvoyée. Les paramètres `expires_after_days` et `expires_at` s’excluent mutuellement. Une erreur sera renvoyée s’ils sont tous les deux définis. Ils sont également facultatifs, donc si aucun de ces paramètres n’est défini, la date d’expiration par défaut de 3 jours après la création du PaymentIntent s’appliquera à 23 h 59 heure du Japon (UTC+9). ### Gestion des erreurs Les requêtes sur PaymentIntents, telles que la création, la mise à jour et la confirmation sont susceptibles d’échouer. Vous pouvez examiner la valeur `erreur` de la réponse de l’API pour en déterminer la cause, et, dans de nombreux cas, soit renvoyer la requête, soit corriger l’erreur. En particulier, si vous indiquez une valeur pour l’option de moyen de paiement `confirmation_number`, vous devrez peut-être gérer certains codes d’erreur spécifiques que nous renvoyons. Consultez la page [Numéros de confirmation](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number) pour plus de détails. Il peut arriver que le moyen de paiement soit temporairement indisponible en raison de pannes, d’une maintenance programmée ou de vos habitudes d’utilisation. Consultez la page [Gestion des problèmes de disponibilité temporaires](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) pour plus de détails. ## Recueillir les informations du moyen de paiement [Côté client] Créez un formulaire de paiement côté client pour recueillir les informations de facturation du client : | Champ | Valeur | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | Le nom complet du client, tronqué à une longueur maximum de 20 caractères sur les interfaces utilisateur et les reçus des commerces. Les caractères non codés en Shift JIS ([JIS X 0208:1997](https://en.wikipedia.org/wiki/Shift_JIS)) seront ignorés et remplacés. | | `email` | L’adresse e-mail complète du client. | L’exemple de formulaire présenté ici recueille également le numéro de téléphone, lequel sera utilisé comme numéro de confirmation fourni par le client. ```html
``` ## Envoyer le paiement à Stripe [Côté client] Lorsqu’un client clique pour payer avec Konbini, utilisez Stripe.js pour soumettre le paiement à Stripe. [Stripe.js](https://docs.stripe.com/payments/elements.md) est notre bibliothèque JavaScript de base pour la création de tunnels de paiement. Intégrez le script Stripe.js à votre page de paiement en l’ajoutant entre les balises `head` de votre fichier HTML. ```html Checkout ``` Créez une instance de Stripe.js avec le code JavaScript suivant sur votre page de paiement. ```javascript // Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` Utilisez [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) et la [clé secrète du client](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) de l’objet PaymentIntent que vous avez créé à l’[étape 2](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-create-payment-intent) pour envoyer les informations de facturation du client. À la confirmation, Stripe ouvrira automatiquement une fenêtre modale afin d’afficher les instructions associées au paiement Konbini pour votre client. ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, } ); // Stripe.js will open a modal to display the Konbini payment instructions to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } }); ``` > `stripe.confirmKonbiniPayment` peut prendre plusieurs secondes pour se terminer. Pendant ce temps, désactivez votre formulaire pour éviter qu’il soit soumis à nouveau et affichez un indicateur d’attente, comme un spinner. Si une erreur se produit, affichez-la au client, réactivez le formulaire et cachez l’indicateur d’attente. ### Options supplémentaires de moyens de paiement Lors de la confirmation d’un PaymentIntent Konbini, d’autres options de moyens de paiement peuvent être définies dans les [options des moyens de paiement](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-payment_method_options-konbini) sous la clé `konbini`. | Champ | Valeur | Obligatoire | Valeur par défaut | | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ----------------- | | `confirmation_number` | Chaîne numérique de 10 à 11 chiffres. Ce numéro apparaît également dans les instructions de paiement et ne peut pas contenir que des zéros. Si aucune valeur n’est fournie pour `confirmation_number`, Stripe en génèrera un pour vous de manière aléatoire. Pour en savoir plus, consultez la page [Numéros de confirmation](https://docs.stripe.com/payments/konbini/accept-a-payment.md#confirm-payment-intent-additional-options-confirmation-number). | Non | *non définie* | #### Numéros de confirmation Pour finaliser leur paiement, vos clients devront se référer au `confirmation_number`. Si vous choisissez de définir cette valeur ou de laisser vos clients la définir, nous vous suggérons d’utiliser le numéro de téléphone du client. Un `confirmation_number` peut également être déterminé lors de la création du PaymentIntent côté serveur, mais il est en général défini par le client lors de la confirmation du PaymentIntent. La valeur définie lors de la création du PaymentIntent peut être modifiée jusqu’à la confirmation du PaymentIntent. Si un `confirmation_number` défini a trop d’occurrences dans les transactions en cours du commerce, il pourrait être rejeté au moment de la confirmation du PaymentIntent. Dans ce cas, le code d’erreur renvoyé serait alors `payment_intent_konbini_rejected_confirmation_number`. Ce message ne s’affiche que lors de la confirmation d’un PaymentIntent. Stripe bloque tous les numéros de confirmation composés uniquement de zéros lors de la création, de la modification et de la confirmation du PaymentIntent. Vérifiez que vous n’utilisez pas cette valeur et que vous n’autorisez pas vos clients à l’utiliser. ### Gestion des erreurs La confirmation d’un PaymentIntent côté client peut aussi échouer. Vous devez consulter la valeur `erreur` pour en déterminer la raison. Vous pourrez ainsi montrer l’erreur à votre client ou la corriger et réessayer. ## Optional: Afficher vos propres instructions de paiement Konbini pour votre client [Côté client] Nous recommandons l’utilisation de Stripe.js pour gérer l’affichage des instructions de paiement Konbini avec `confirmKonbiniPayment`. Toutefois, vous pouvez également afficher manuellement vos propres instructions de paiement pour vos clients : Pour gérer manuellement l’action suivante, qui consiste à afficher les informations Konbini à votre client, utilisez `handleActions: false` lorsque vous appelez `stripe.confirmKonbiniPayment` à l’[étape 4](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-submit-payment). ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmKonbiniPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, }, }, payment_method_options: { konbini: { confirmation_number: document.getElementById('phone').value.replace(/\D/g,''), }, }, }, {handleActions: false}, ); // This async function finishes when the PaymentIntent is confirmed if (result.error) { // Display error to your customer var errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } else { // A Konbini PaymentIntent was successfully created var amount = result.paymentIntent.amount; var currency = result.paymentIntent.currency; var details = result.paymentIntent.next_action.konbini_display_details; for (var store in details.stores) { // Do something with each store's details } var expires_at = details.expires_at; // Display Konbini details to end customer } }); ``` ### Présentation C’est à vous de choisir comment présenter les informations de paiement à votre client. Les instructions doivent au moins contenir les éléments suivants : - Informations générales concernant l’achat, telles que la description du ou des produit(s), le montant et la date d’expiration du paiement. - Codes de paiement et confirmation pour chaque chaîne de magasins de proximité obtenus via la confirmation du PaymentIntent. - Instructions indiquant au client comment exécuter le paiement Konbini. Voici des exemples d’instructions de paiement : ### Instructions de paiement Konbini 1. Recherchez le code de paiement et le numéro de confirmation valables pour la chaîne de magasins de proximité dans laquelle vous souhaitez procéder au paiement. 1. Dans le magasin, indiquez le code de paiement et le numéro de confirmation à la caisse automatique ou à l’hôte(sse) de caisse. 1. Une fois le paiement effectué, conservez le reçu à titre de référence. 1. Veuillez nous contacter si vous avez des questions. ## Optional: Soumettre le paiement à Stripe depuis votre serveur [Côté serveur] Nous vous recommandons d’utiliser Stripe.js pour gérer les paiements Konbini côté client avec [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment). L’utilisation de Stripe.js permet d’ajouter d’autres moyens de paiement à votre intégration. Cependant, vous pouvez aussi rediriger vos clients manuellement sur votre serveur en procédant comme suit : - Définissez `confirm` sur `true` lors de la création d’un [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) de type `konbini`, ou [confirmez](https://docs.stripe.com/api/payment_intents/confirm.md) un PaymentIntent existant. Vous devez fournir les propriétés `payment_method_data.billing_details.name` et `payment_method_data.billing_details.email`. Vous pouvez également définir `payment_method_options.konbini.confirmation_number` ainsi que d’autres [payment_method_options](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-additional-options). En précisant le paramètre `payment_method_data`, nous créerons un *PaymentMethod* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs) et l’utiliserons immédiatement avec ce PaymentIntent. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=jpy \ -d confirm=true \ -d "payment_method_types[]=konbini" \ -d "payment_method_data[type]=konbini" \ -d "payment_method_data[billing_details][name]=Jenny Rosen" \ --data-urlencode "payment_method_data[billing_details][email]=jenny@example.com" ``` Le `PaymentIntent` créé a l’état `requires_action` et le type de `next_action` est `konbini_display_details`. #### Json ```json {"status": "requires_action", "next_action": { "type": "konbini_display_details", "konbini_display_details": { "expires_at": 1642431599, "hosted_voucher_url": "https://payments.stripe.com/konbini/voucher/...", "stores": { "familymart": { "confirmation_number": "12345678901", "payment_code": "123456" }, ... } } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", "amount": 1099, "client_secret": "pi_1G1sgdKi6xqXeNtkldRRE6HT_secret_h9B56ObhTN72fQiBAuzcVPb2E", "confirmation_method": "automatic", "created": 1642126547, "currency": "jpy", "livemode": true, "charges": { "data": [], "object": "list", "has_more": false, "url": "/v1/charges?payment_intent=pi_1G1sgdKi6xqXeNtkldRRE6HT" }, "payment_method_options": { "konbini": { "confirmation_number": null, "expires_after_days": null, "expires_at": null, "product_description": null } }, "payment_method_types": [ "konbini" ] } ``` - Redirigez le client vers l’URL fournie dans la propriété `next_action.konbini_display_details.hosted_voucher_url`. L’exemple de code fourni sur cette page est approximatif : la méthode de redirection peut différer dans votre framework Web. #### Ruby ```ruby if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'konbini_display_details' url = payment_intent.next_action.konbini_display_details.hosted_voucher_url redirect(url) end ``` Nous vous recommandons d’[utiliser des webhooks](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks) afin de confirmer l’état du paiement. ## Optional: Personnaliser les instructions de paiement Vous pouvez personnaliser ce que vos clients voient en utilisant la page [Paramètres de marque](https://dashboard.stripe.com/account/branding). Si un [client](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-customer) est lié au PaymentIntent, les instructions de paiement hébergées utilisent sa langue préférée. Sinon, c’est la langue du navigateur du client qui sera utilisée. Vous pouvez appliquer les paramètres de marque suivants aux instructions de paiement hébergées : - **Icône** : l’image représentant votre marque et votre dénomination sociale publique - **Logo** : l’image de votre marque - **Couleur d’accentuation** : utilisée comme couleur du bouton d’impression - **Couleur de marque** : utilisée comme couleur d’arrière-plan ## Optional: Envoyer des instructions sur les paiements par e-mail Vous pouvez activer l’envoi d’instructions sur les paiements Konbini et de rappels par e-mail sur la page [Paramètres des e-mails](https://dashboard.stripe.com/settings/emails) sur le Dashboard. Une fois activé, Stripe enverra par e-mail des instructions sur les paiements dès le PaymentIntent confirmé. Ces e-mails contiennent le code du paiement, le numéro de confirmation et d’autres informations pour effectuer un paiement au commerce de proximité. Cela comprend un lien vers la page hébergée contenant les instructions sur les paiements. ## Optional: Envoyer des e-mails de rappel Vous pouvez activer les e-mails de rappel de paiement et configurer le nombre maximum d’e-mails de rappel par PaymentIntent sur la page [Paramètres d’e-mail](https://dashboard.stripe.com/settings/emails) du Dashboard. Stripe envoie au maximum un e-mail de rappel par jour jusqu’à ce qu’un paiement aboutisse, expire ou soit annulé. > Dans les environnements de test, les e-mails comprenant des instructions et les e-mails de rappel ne sont envoyés qu’aux adresses e-mail associées au compte Stripe. ## Gérer les événements post-paiement [Côté serveur] Konbini est un moyen de paiement à [notification différée](https://docs.stripe.com/payments/payment-methods.md#payment-notification) ; les fonds ne sont donc pas disponibles immédiatement. Les clients peuvent ne pas payer le paiement Konbini en attente dans un magasin de proximité immédiatement après le paiement. Une fois le paiement Konbini effectué, Stripe envoie un événement [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded). Utilisez le Dashboard ou créez un gestionnaire de *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) afin de recevoir ces événements et d’exécuter des actions. Exemples d’actions : envoyer un e-mail de confirmation de commande à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison. S’il peut être établi avec certitude qu’un paiement Konbini en attente n’a pas été finalisé (généralement, environ une heure après sa date/heure limite d’expiration), Stripe envoie un événement [payment_intent.payment_failed](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.payment_failed). | Événement | Description | Étapes suivantes | | -------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent.requires_action` | Le paiement Konbini en attente est créé. | Vous pouvez, à titre facultatif, envoyer le client sur la page contenant les instructions de paiement. Attendez que le client effectue le paiement Konbini. | | `payment_intent.succeeded` | Le client a effectué le paiement Konbini en attente avant la date d’expiration. | Traitez la commande de biens ou de services du client. | | `payment_intent.payment_failed` | Le client n’a pas effectué le paiement Konbini en attente avant la date d’expiration. | Envoyez un e-mail ou une notification push au client pour lui demander d’utiliser un autre moyen de paiement. | > En mode test, l’état d’un PaymentIntent Konbini peut changer automatiquement en fonction des paramètres envoyés, tels que `email`. Vous pouvez confirmer les mises à jour sur le [Dashboard](https://dashboard.stripe.com/test/payments). Pour en savoir plus, consultez la page [Tester l’intégration](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-test-integration). ### Recevoir des événements et exécuter des actions #### Manuellement Utilisez le Dashboard Stripe pour consulter tous vos paiements Stripe, envoyer des reçus par e-mail, gérer les virements et relancer les paiements en échec. - [Afficher vos paiements tests dans le Dashboard](https://dashboard.stripe.com/test/payments) #### Code personnalisé Créez un gestionnaire de webhooks pour écouter des événements et créer des tunnels de paiement asynchrones personnalisés. Testez et déboguez votre intégration de webhooks en local, grâce à l’interface de ligne de commande Stripe. - [Créer un webhook personnalisé](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) ## Tester l'intégration Lors des tests, définissez `payment_method.billing_details.email` sur les valeurs suivantes lorsque vous appelez [stripe.confirmKonbiniPayment](https://docs.stripe.com/js/payment_intents/confirm_konbini_payment) pour tester différents scénarios. Vous pouvez effectuer vos tests avec un numéro de confirmation spécial et/ou un modèle d’e-mail. Si les deux sont fournis, le numéro de confirmation spécial s’applique. | E-mail | Numéro de confirmation | Description | | ---------------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `{any_prefix}@{any_domain}` | `11111111110` | Simule un paiement Konbini qui réussit après 3 minutes. Le webhook `payment_intent.succeeded` s’affiche ensuite. Exemple : hanako@test.com | | `{any_prefix}succeed_immediately@{any_domain}` | `22222222220` | Simule un paiement Konbini qui réussit immédiatement. Le webhook `payment_intent.succeeded` s’affiche ensuite. Exemple : succeed_immediately@test.com | | `{any_prefix}expire_immediately@{any_domain}` | `33333333330` | Simule un paiement Konbini qui expire immédiatement. Le webhook `payment_intent.payment_failed` s’affiche ensuite. Le champ `expires_at` de [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) est défini sur la date/heure du jour, quelle que soit la valeur du paramètre `expires_after_days` ou `expires_at` des [options du moyen de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Exemple : expire_immediately@test.com | | `{any_prefix}expire_with_delay@{any_domain}` | `44444444440` | Simule un paiement Konbini qui ne réussit jamais. Il expire au bout de 3 minutes et le webhook `payment_intent.payment_failed` s’affiche ensuite. Le champ `expires_at` de [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at) est défini pour expirer après 3 minutes, quelle que soit la valeur définie dans les paramètres `expires_after_days` ou '`expires_at` des [options du moyen de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Exemple : expire_with_delay@test.com | | `{any_prefix}fill_never@{any_domain}` | `55555555550` | Simule un paiement Konbini qui ne réussit jamais. Il expire conformément à la valeur du champ `expires_at` dans `next_action.konbini_display_details`, en fonction des paramètres définis dans les [options des moyens de paiement](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-konbini-expires_after_days). Le `payment_intent.payment_failed` s’affiche ensuite. Exemple : fill_never@test.com | Pour tester la gestion des erreurs touchant au [numéro de confirmation](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-confirm-payment-intent-additional-options-confirmation-number), vous pouvez utiliser les valeurs suivantes pour `payment_method_options[confirmation_number]` : - `01234567890` génère un code d’erreur `payment_intent_konbini_rejected_confirmation_number`. - `00000000000` génère un code d’erreur de validation générique. Cette erreur peut être évitée dans votre intégration à l’aide de la prévalidation. ## Expiration et annulation Une fois la date définie par la valeur `expires_at` dans le [next_action.konbini_display_details](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-next_action-konbini_display_details-expires_at), le client ne peut plus *initier* le traitement du paiement Konbini en attente dans un kiosque de supérette. Cependant, si un reçu de paiement valide est émis avant l’échéance, il pourra *finaliser* le paiement à la caisse après la date `expires_at`. Dans ce cas, il existe une marge de manœuvre pour éviter des échecs de paiement prématurés. L’état du PaymentIntent passe à `requires_payment_method`. Vous pouvez alors annuler ou confirmer le PaymentIntent avec un autre moyen de paiement. Un paiement Konbini en attente peut également être annulé une fois confirmé, avant même la date spécifiée par `next_action.konbini_display_details.expires_at`. De la même manière, la mise à jour du PaymentIntent ou sa confirmation avec un autre moyen de paiement annulera de manière implicite le paiement Konbini existant. Si le client est en cours de paiement du paiement Konbini dans un commerce de proximité, la requête d’annulation échouera. Une nouvelle tentative d’annulation peut être envisagée si le client abandonne la tentative de paiement et une fois l’expiration du justificatif de paiement. Veuillez noter que les [problèmes de disponibilité temporaires des moyens de paiement](https://docs.stripe.com/payments/konbini/accept-a-payment.md#web-handling-temporary-availability-issues) impactent également les demandes d’annulation (explicites comme implicites). > Lorsque vous annulez un paiement en attente, les instructions de paiement initiales sont invalidées. Dans la plupart des cas d’usage, nous vous suggérons de contacter votre client pour l’informer de l’annulation. > > Lorsque vous reconfirmez un PaymentIntent dont l’état affiche `requires_action`, nous créons de nouvelles instructions ainsi qu’une nouvelle `hosted_voucher_url`. Vous devez veiller à ce que votre client en soit informé. ## Gérer les problèmes temporaires de disponibilité Les codes d’erreur suivants indiquent que des problèmes temporaires affectent la disponibilité du moyen de paiement : | Code | Description | Gestion | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `payment_method_rate_limit_exceeded` | Un trop grand nombre de requêtes successives sont effectuées pour ce moyen de paiement, dont les limites sont plus strictes que nos [limites de débit à l’échelle de l’API](https://docs.stripe.com/rate-limits.md). | Il suffit généralement de réessayer quelques instants plus tard pour résoudre le problème. Toutefois, en cas d’utilisation intensive du moyen de paiement (par exemple pendant une vente sur votre site web), ces erreurs peuvent persister pour un certain nombre de requêtes. Dans ce cas, vous pouvez demander à vos clients d’envisager un autre moyen de paiement. | | `payment_method_not_available` | Le moyen de paiement rencontre des problèmes temporaires inconnus qui peuvent potentiellement se prolonger un certain temps (par exemple, pendant les pannes ou les périodes de maintenance programmées). | Nous vous conseillons d’inviter vos utilisateurs à effectuer leur achat avec un autre moyen de paiement ou à réessayer plus tard. | > Si vous prévoyez une utilisation intensive, que ce soit de manière générale ou pour un évènement à venir, veuillez nous contacter à l’avance. ## Remboursements Il est possible de rembourser les payments par Konbini via le [Dashboard](https://dashboard.stripe.com/payments) ou les [API](https://docs.stripe.com/api.md#create_refund). Pour exécuter un remboursement et l’envoyer directement sur le compte bancaire du client, votre client doit fournir les coordonnées bancaires du compte sur lequel il souhaite recevoir les fonds. Stripe contacte le client à l’adresse e-mail indiquée dans les informations de facturation et lui demande ces informations. Une fois les coordonnées bancaires reçues, nous procédons automatiquement au remboursement. L’état du remboursement évolue comme suit : | Événement | État du remboursement | | --------------------------------------------------------------------------------- | --------------------- | | Le remboursement est créé | `requires_action` | | Le client soumet ses coordonnées bancaires et Stripe initie le remboursement | `pending` | | Le remboursement devrait arriver sur le compte bancaire du client | `succeeded` | | La banque du client reverse les fonds à Stripe | `requires_action` | | Le remboursement passe à l’état `requires_action` 45 jours après sa création | `failed` | | Le remboursement est annulé à partir d’un état `requires_action` | `canceled` | Si la banque du client ne parvient pas à mener à bien le transfert, les fonds sont reversés à Stripe et le remboursement bascule sur l’état `requires_action`. Cette situation se produit si le nom du titulaire du compte ne correspond pas aux données que la banque bénéficiaire possède dans ses archives, ou si le numéro de compte bancaire fourni contient une faute de frappe. Dans ces cas-là, Stripe envoie un e-mail au client pour l’informer de l’échec de l’opération et lui demande de soumettre à nouveau ses coordonnées bancaires. Si votre client ne fournit pas ses coordonnées bancaires sous 45 jours, l’état du remboursement passe à `failed` et nous envoyons l’événement [refund.failed](https://docs.stripe.com/api/events/types.md#event_types-refund.failed). Cela signifie que Stripe n’est pas en mesure de procéder au remboursement et que vous devez [restituer les fonds à votre client en dehors de Stripe](https://docs.stripe.com/refunds.md#failed-refunds). Le champ [instructions_email](https://docs.stripe.com/api/refunds/object.md#refund_object-instructions_email) du remboursement correspond à l’adresse e-mail à laquelle le remboursement a été envoyé. En attente de la réponse du client, vous pouvez retrouver les informations relatives à la date et l’adresse d’envoi de l’e-mail sous le champ [next_action.display_details.email_sent](https://docs.stripe.com/api/refunds/object.md#refund_object-next_action-display_details-email_sent) du remboursement. Chaque remboursement d’entrepreneur individuel (y compris les remboursements partiels) peut entraîner des frais. Veuillez consulter votre contact chez Stripe pour en savoir plus à ce sujet. ### Tester les remboursements Pour tester le comportement de remboursement en mode test, utilisez les comptes bancaires de test suivants sur la page de collecte des coordonnées bancaires, dont le lien figure dans l’e-mail envoyé au client. Aucunes autres coordonnées bancaires ne seront acceptées. | Routage | Compte | Type | | --------- | ------------------------------------------------------------- | ------------------------- | | `1100000` | `0001234` | Le remboursement réussit. | | `1100000` | `1111113` `1111116` `1111113` `3333335` `4444440` | Le remboursement échoue. | #### Tester l’expiration des remboursements Vous pouvez simuler l’expiration d’un remboursement en mode test en effectuant un appel à l’API. ```bash curl https://api.stripe.com/v1/test_helpers/refunds/{{REFUND_ID}}/expire \ -X POST \ -u <>: ```