Accéder directement au contenu
Connectez-vous
Image du logo Stripe
/
Créez un compte
Connectez-vous
Accueil
Payments
Automatisation des opérations financières
Services bancaires
Outils de développement
Options sans code
Tous les produits
Accueil
Payments
Automatisation des opérations financières
Accueil
Payments
Automatisation des opérations financières
Services bancaires
Outils de développement
Aperçu
Démarrer
À propos des paiements Stripe
Start an integration
Payment Links
Checkout
Web Elements
Mobile Elements
Payment scenarios
During the payment
Après le paiement
Ajouter des moyens de paiement
Autres scénarios de paiement
    Aperçu
    Configurer des paiements différés
    Enregistrer les coordonnées bancaires lors du paiement
    Bloquer une somme d'argent sur un moyen de paiement
    Flexible payment scenarios
    Développer une expérience de confirmation à deux facteurs
    Collecter les informations de paiement avant de créer un Intent
    Finaliser les paiements sur le serveur
    Finalize payments on the server using Confirmation Tokens
    Authentification 3D Secure
    Cartes bancaires américaines et canadiennes
    Forward card details to third-party API endpoints
Paiement accéléré avec Link
Other Stripe products
Connect
Terminal
Radar
Financial Connections
Cryptomonnaie
Identity
Climate
Ressources
À propos des API
Guides d'implémentation
Aide en matière de réglementation
Test
Payments
·
AccueilPaymentsMore payment scenarios

Collecter les informations de paiement avant de créer un Intent

Développez une intégration dans laquelle vous pouvez afficher l'Element Payment avant de créer un objet PaymentIntent ou SetupIntent.

Le Payment Element vous permet d’accepter plusieurs moyens de paiement à l’aide d’une seule intégration. Dans cette intégration, vous apprendrez comment créer un tunnel de paiement personnalisé dans lequel vous afficherez le Payment Element, créerez le PaymentIntent et confirmerez le paiement dans l’application du client. Si vous préférez confirmer le paiement depuis le serveur, consultez la page Finaliser les paiements sur le serveur.

Configurer Stripe
Côté serveur
Côté client

Pour commencer, vous devez créer un compte Stripe. Inscrivez-vous maintenant.

Côté serveur

Cette intégration exige des endpoints sur votre serveur qui communiquent avec l’API Stripe. Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :

Command Line
# Available as a gem sudo gem install stripe
Gemfile
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Côté client

Le SDK Stripe Android est disponible en open source et fait l’objet d’une documentation complète.

Pour installer le SDK, ajoutez stripe-android au bloc dependencies de votre fichier app/build.gradle :

build.gradle
apply plugin: 'com.android.application' android { ... } dependencies { // ... // Stripe Android SDK implementation 'com.stripe:stripe-android:20.35.2' }

Note

Pour obtenir de plus amples informations sur la version la plus récente du SDK et ses versions antérieures, consultez la page des versions sur GitHub. Pour savoir quand une nouvelle version est disponible, surveillez les versions du référentiel.

Vous devez également définir votre clé publiable afin que le SDK puisse effectuer des appels API vers Stripe. Pour commencer rapidement, vous pouvez coder cela en dur côté client, mais récupérer la clé publiable sur votre serveur en mode production.

// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys PaymentConfiguration.init(context, publishableKey =
"pk_test_oKhSR5nslBRnBZpjO6KuzZeX"
)

Activer des moyens de paiement

Bêta

La prise en charge des comptes bancaires américains est en version bêta limitée. Pour accéder aux paiements par compte bancaire américain, {% collect-email modal=true modal_link_text=“contactez-nous.” list=“payment-element-beta+us_bank_account@stripe.com” send_direct_email=true intro_text=“Utilisez le moyen de paiement us_bank_account dans le mode de paiement différé Payment Element” body_text=“Si vous souhaitez tester cette fonctionnalité, saisissez votre adresse e-mail ci-dessous. » form_cta_text=” S’inscrire" success_text=“Merci ! Nous vous contacterons prochainement.” show_email_confirmation=true /%}

Affichez vos paramètres des moyens de paiement et activez les moyens de paiement que vous souhaitez prendre en charge. Vous devez activer au moins un moyen de paiement pour créer un PaymentIntent.

Par défaut, Stripe active les cartes bancaires et les autres moyens de paiement courants qui peuvent vous permettre d’atteindre davantage de clients. Nous vous recommandons toutefois d’activer d’autres moyens de paiement pertinents pour votre entreprise et vos clients. Consultez la page des options d’intégration des moyens de paiement pour découvrir les produits et moyens de paiement pris en charge, et la page des tarifs pour prendre connaissance des frais que nous appliquons.

Recueillir les informations de paiement
Côté client

Nous proposons deux types d’intégration. Choisissez-en un pour continuer.

PaymentSheetPaymentSheet.FlowController
PaymentSheet
PaymentSheet.FlowController
Affiche un formulaire permettant de collecter les informations de paiement et de finaliser le paiement. Le bouton du formulaire indique Payer X $ et permet d’effectuer le paiement.Affiche une feuille permettant de collecter uniquement les informations de paiement. Le bouton dans la feuille indique Continuer et redirige le client vers votre application, où votre propre bouton finalise le paiement.

Initialiser la PaymentSheet

Initialisez PaymentSheet et transmettez un attribut CreateIntentCallback. Pour l’instant, laissez l’implémentation vide.

class MyCheckoutActivity : AppCompatActivity() { private lateinit var paymentSheet: PaymentSheet override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... paymentSheet = PaymentSheet( activity = this, createIntentCallback = { _, _ -> TODO() // You'll implement this later }, paymentResultCallback = ::onPaymentSheetResult, ) } fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // You'll implement this later } }

Présenter la PaymentSheet

Ensuite, présentez la PaymentSheet en appelant presentWithIntentConfiguration() et en transmettant une IntentConfiguration. L’IntentConfiguration contient des informations sur le le paiement en question, comme le montant et la devise.

class MyCheckoutActivity : AppCompatActivity() { // ... private fun handleCheckoutButtonPressed() { val intentConfig = PaymentSheet.IntentConfiguration( mode = PaymentSheet.IntentConfiguration.Mode.Payment( amount = 1099, currency = "usd", ), // Other configuration options... ) paymentSheet.presentWithIntentConfiguration( intentConfiguration = intentConfig, // Optional configuration - See the "Customize the sheet" section in this guide configuration = PaymentSheet.Configuration( merchantDisplayName = "Example Inc.", ) ) } }

Confirmer le paiement

When the customer taps the Pay button in PaymentSheet, it calls the CreateIntentCallback you passed above with a PaymentMethod object representing the customer’s payment details.

Implement this method to send a request to your server. Your server creates a PaymentIntent and returns its client secret.

When the request returns, return your server response’s client secret or an error. The PaymentSheet confirms the PaymentIntent using the client secret or displays the error in its UI.

class MyCheckoutActivity : AppCompatActivity() { private lateinit var paymentSheet: PaymentSheet override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... paymentSheet = PaymentSheet( activity = this, createIntentCallback = { _, _ -> // Make a request to your server to create a PaymentIntent and return its client secret try { val response = myNetworkClient.createIntent( ) CreateIntentResult.Success(response.clientSecret) } catch (e: Exception) { CreateIntentResult.Failure( cause = e, displayMessage = e.message ) } }, paymentResultCallback = ::onPaymentSheetResult, ) } fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // You'll implement this later } }

Une fois que le client a terminé son paiement, le formulaire se ferme et le PaymentSheetResultCallback est appelé avec un PaymentSheetResult.

class MyCheckoutActivity : AppCompatActivity() { // ... fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { when(paymentSheetResult) { is PaymentSheetResult.Canceled -> { // Customer canceled - you should probably do nothing. } is PaymentSheetResult.Failed -> { print("Error: ${paymentSheetResult.error}") // PaymentSheet encountered an unrecoverable error. You can display the error to the user, log it, etc. } is PaymentSheetResult.Completed -> { // Display, for example, an order confirmation screen print("Completed") } } } }

Créer un PaymentIntent
Côté serveur

Sur votre serveur, créez a PaymentIntent en indiquant un montant et une devise. Vous pouvez gérer les moyens de paiement depuis le Dashboard. Stripe gère le l’affichage des moyens de paiement admissibles en fonction de facteurs tels que le montant de la transaction, la devise et le tunnel de paiement. Pour éviter que des clients malveillants ne choisissent eux-mêmes leurs tarifs, décidez toujours du montant à débiter côté serveur (un environnement sécurisé) plutôt que côté client.

Si l’appel réussit, renvoyez la clé secrète du client du PaymentIntent. Si l’appel échoue, traitez l’erreur et renvoyez un message d’erreur avec une courte explication à l’intention de votre client.

Note

Lors de la confirmation d’un PaymentIntent côté serveur, transmettez le paramètre mandate_data pour confirmer que vous avez présenté au client les conditions applicables à la collecte de ses informations de paiement. Pour afficher les conditions appropriées, veillez à ce que toutes les propriétés IntentConfiguration correspondent à votre PaymentIntent (par exemple, setup_future_usage, amount et currency).

main.rb
require 'stripe' Stripe.api_key =
'sk_test_VePHdqKTYQjKNInc7u56JBrQ'
post '/create-intent' do data = JSON.parse request.body.read params = { amount: 1099, currency: 'usd', # In the latest version of the API, specifying the `automatic_payment_methods` parameter is optional because Stripe enables its functionality by default. automatic_payment_methods: {enabled: true}, } begin intent = Stripe::PaymentIntent.create(params) {client_secret: intent.client_secret}.to_json rescue Stripe::StripeError => e {error: e.error.message}.to_json end end

Gérer les événements post-paiement
Côté serveur

Stripe envoie un événement payment_intent.succeeded à l’issue du paiement. Utilisez l’outil de webhook du Dashboard ou suivez le guide consacré aux webhooks pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un flux de livraison.

Plutôt que d’attendre un rappel de votre client, écoutez ces événements. Côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel. Certains clients malintentionnés peuvent d’autre part tenter de manipuler la réponse. En configurant votre intégration de manière à ce qu’elle écoute les événements asynchrones, vous pourrez accepter plusieurs types de moyens de paiement avec une seule et même intégration.

En plus de l’événement payment_intent.succeeded, nous vous recommandons de gérer ces autres événements lorsque vous encaissez des paiements à l’aide de l’Element Payment :

ÉvénementDescriptionAction
payment_intent.succeededEnvoyé lorsqu’un client effectue un paiement avec succès.Envoyez au client une confirmation de commande et traitez sa commande.
payment_intent.processingEnvoyé lorsqu’un client initie un paiement, mais qu’il ne l’a pas encore finalisé. Dans la plupart des cas, cet événement est envoyé lorsque le client initie un prélèvement bancaire. Il est suivi par un événement payment_intent.succeeded ou payment_intent.payment_failed.Envoyez au client une confirmation de commande qui indique que son paiement est en attente. Pour des marchandises dématérialisées, vous pourrez traiter la commande sans attendre que le paiement soit effectué.
payment_intent.payment_failedEnvoyé lorsqu’un client effectue une tentative de paiement qui se solde par un échec.Si un paiement passe de l’état processing à payment_failed, proposez au client de retenter le paiement.

Tester l'intégration

Vérifiez votre intégration à l’aide des informations de paiement test et de la page de redirection test. Le tableau suivant contient quelques scénarios de test de base. Pour plus d’informations sur le test des paiements, consultez la section consacrée aux tests.

Moyen de paiementScénarioMéthode de test
Carte bancaireLe paiement par carte bancaire aboutit et ne nécessite pas d’authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4242 4242 4242 4242 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLe paiement par carte bancaire requiert une authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte 4000 0025 0000 3155 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte est refusée avec un code de refus de type insufficient_funds.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro 4000 0000 0000 9995 ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Carte bancaireLa carte UnionPay a un numéro d’une longueur variable, allant de 13 à 19 chiffres.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro 6205 500 0000 0000 0004 ainsi que la date d’expiration, le CVC et le code postal de votre choix.

FacultatifActiver les cartes sauvegardées
Côté serveur
Côté client

FacultatifAutoriser les moyens de paiement à notification différée
Côté client

FacultatifActiver Google Pay

FacultatifActiver la numérisation de carte

FacultatifPersonnaliser le formulaire

Cette page vous a-t-elle été utile ?
Besoin d'aide ? Contactez le service d'assistance.
Découvrez nos tutoriels pour les développeurs.
Consultez notre journal des modifications des produits.
Des questions ? Contactez l'équipe commerciale.
Propulsé par Markdoc
Vous pouvez vous désabonner à tout moment. Lisez notre politique de confidentialité.
Sur cette page
Configurer Stripe
Activer des moyens de paiement
Recueillir les informations de paiement
Créer un PaymentIntent
Gérer les événements post-paiement
Tester l'intégration
Produits utilisés
Payments
Elements
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Log in to your Stripe account and press Control + Backtick (`) on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g., )
Le Shell Stripe est plus optimisé sur la version bureau.
$