Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
    Présentation
    Payment Sheet
    Composant Payment Element intégré
    Utiliser les redirections pour les achats intégrés à l'application
      Utiliser une page de paiement préconfigurée
      Utiliser Payment Links (low-code)
      Créer un flux personnalisé
      Use a customer portal
    Collecter les adresses
    Cartes bancaires américaines et canadiennes
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
AccueilPaiementsBuild an in-app integrationLink out for in-app purchases

Accepter des paiements pour des biens numériques sur iOS avec une page de paiement personnalisée

Créez votre propre page de paiement personnalisée pour vendre des biens numériques et des abonnements dans l'application à l'aide de Payment Element.

Dans certains pays, vous pouvez ajouter un lien vers un autre site web pour accepter des paiements sur iOS. Ce guide explique comment vendre un abonnement dans votre application en redirigeant les clients vers votre propre page de paiement à l’aide d’Elements. Si vous disposez déjà de votre propre page de paiement avec Elements, consultez la page Configurer des liens universels.

Remarque

Contacter notre équipe si votre entreprise est nouvelle sur Stripe, traite un volume élevé de paiements et présente des besoins d’intégration complexes.

Ce que vous allez créer

Remarque

Ce guide décrit uniquement le processus de vente de biens numériques dans l’application. Si vous vendez l’un des produits suivants, utilisez plutôt le guide de paiement iOS natif :

  • Produits physiques
  • Biens et services destinés à la consommation en dehors de votre application
  • Services en temps réel de personne à personne entre deux individus

Ce guide vous explique comment :

  • Collectez des informations de paiement sur votre propre page de paiement avec Elements.
  • Modéliser vos abonnements avec des produits, des tarifs et des clients.
  • Utiliser les liens universels pour rediriger directement vers votre application depuis Checkout.
  • Écouter des webhooks pour mettre à jour les abonnements de vos clients dans l’application.

Configurer Stripe
Côté serveur

Tout d’abord, inscrivez-vous pour créer un Compte Stripe.

Ajoutez ensuite la bibliothèque d’API Stripe à votre back-end :

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

Installez ensuite l’interface de ligne de commande Stripe. L’interface de ligne de commande fournit les tests de webhooks requis, que vous pouvez exécuter pour créer vos produits et vos tarifs.

Command Line
homebrew
# Install Homebrew to run this command: https://brew.sh/ brew install stripe/stripe-cli/stripe # Connect the CLI to your dashboard stripe login

Pour davantage d’options d’installation, consultez la page consacrée à l’interface de ligne de commande Stripe.

Créer des produits et tarifs

Créez vos produits et leurs tarifs dans le Dashboard ou via l’interface de ligne de commande Stripe.

Cet exemple utilise un produit et un tarif uniques pour représenter un produit d’abonnement à un tarif mensuel de 9,99 USD.

Accédez à la page Ajouter un produit et créez un produit d’abonnement à un tarif mensuel de 9,99 USD.

Après avoir créé le tarif, enregistrez l’ID du tarif pour pouvoir l’utiliser dans les étapes suivantes. Les ID de tarif sont similaires à : price_G0FvDp6vZvdwRZ.

Cliquez ensuite sur Copier en mode production pour dupliquer votre produit d’un environnement de test vers le mode production.

Créer des clients
Côté serveur

Chaque fois que votre client accède à votre page de paiement, créez un objet Customer s’il n’en existe pas déjà un.

Votre serveur doit gérer :

  • La création d’un client (s’il n’existe pas encore de client Stripe correspondant).
  • La création d’un abonnement à l’état incomplete.
  • Le renvoi de la clé secrète du client PaymentIntent au front-end.
  • Les webhooks afin que vous puissiez mettre à jour l’état de l’abonnement de votre client dans votre propre base de données.
Node
// Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys const stripe = require('stripe')(
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
); // This assumes your app has an existing user database, which we'll call `myUserDB`. const user = myUserDB.getUser("jennyrosen"); if (!user.stripeCustomerID) { const customer = await stripe.customers.create({ name: user.name, email: user.email, }); // Set the user's Stripe Customer ID for later retrieval. user.stripeCustomerID = customer.id; }

Avertissement

Veillez à conserver une association sur votre serveur entre le compte d’utilisateur et l’ID du client Stripe. Sans cela, vos clients ne pourront pas récupérer leurs achats.

Si le client modifie son adresse e-mail sur la page de paiement, l’objet Customer se met à jour avec la nouvelle adresse.

Créer un abonnement
Côté serveur

Lorsque vous créez un abonnement pour utiliser le Payment Element, vous transmettez généralement payment_behavior: 'default_incomplete'. Cela indique à Stripe de créer un abonnement à l’état incomplete et de générer un Payment Intent pour le paiement initial.

Remarque

Conservez la valeur subscription.id dans votre base de données pour gérer les événements d’abonnement futurs, tels que les annulations, les mises à niveau et les passages à des offres inférieures.

Node
// This example sets up an endpoint using the Express framework. const express = require('express'); const app = express(); const stripe = require('stripe')(
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
) app.post('/create-subscription', async (req, res) => { const { priceId, customerId } = req.body; // Create the subscription // setting payment_behavior to "default_incomplete" ensures we get a Payment Intent // that we can confirm on the client using the Payment Element const subscription = await stripe.subscriptions.create({ customer: customerId, items: [{ price: priceId }], payment_behavior: 'default_incomplete', expand: ['latest_invoice.payment_intent'], }); // Make sure you associate the subscription ID with the user in your database! myUserDB.addUserSubscription("jennyrosen", subscription.id); // Get the Payment Intent client secret const paymentIntent = subscription.latest_invoice.payment_intent; const clientSecret = paymentIntent.client_secret; return res.json({ subscriptionId: subscription.id, clientSecret: clientSecret, }); }); app.post('/login', async (req, res) => { // This assumes your app has an existing user database, which we'll call `myUserDB`. const token = myUserDB.login(req.body.login_details) res.json({token: token}) }); app.listen(4242, () => console.log(`Listening on port ${4242}!`));

Remarque

Apple Pay est activé par défaut et s’affiche automatiquement dans le Payment Element lorsqu’un client utilise un appareil pris en charge et a enregistré au moins une carte dans son wallet. Vous pouvez accepter des moyens de paiement supplémentaires à l’aide de la propriété payment_method_types. Consultez la page Aperçu des moyens de paiement pour en savoir plus.

Configurer des liens universels

Les liens universels permettent à votre page de paiement d’être profondément liée à votre application. Pour configurer un lien universel :

  • Ajoutez un fichier apple-app-site-association à votre domaine.
  • Ajoutez un droit de domaine associé à votre application.
  • Ajoutez une page de renvoi pour vos URL de redirection Checkout.

Définissez les domaines associés

Ajoutez un fichier à votre domaine sur .well-known/apple-app-site-association pour définir les URL que votre application peut gérer. Ajoutez l’ID d’application avec votre ID d’équipe que vous pourrez trouver sur la page d’abonnement du portail développeur d’Apple.

.well-known/apple-app-site-association
{ "applinks": { "apps": [], "details": [ { "appIDs": [ "A28BC3DEF9.com.example.MyApp1", "A28BC3DEF9.com.example.MyApp1-Debug" ], "components": [ { "/": "/checkout_redirect*", "comment": "Matches any URL whose path starts with /checkout_redirect" } ] } ] } }

Avertissement

Vous devez traiter le fichier avec le type MIME application/json. Utilisez curl -I pour confirmer le type de contenu.

Command Line
curl -I https://example.com/.well-known/apple-app-site-association

Pour en savoir plus, consultez la page d’Apple relative aux domaines associés pris en charge.

Ajouter un droit de domaine associé à votre application

  1. Ouvrez le volet Signatures et fonctionnalités de la cible de votre application.
  2. Cliquez sur + Fonctionnalité, puis sélectionnez Domaines associés.
  3. Ajoutez une entrée pour applinks:example.com à la liste Domaines associés.

Pour en savoir davantage sur les liens universels, consultez la documentation d’Apple sur les liens universels.

Bien qu’iOS intercepte les liens vers les URL définies dans votre fichier apple-app-site-association, il se peut que la redirection ne parvienne pas à ouvrir votre application.

Créez une page de renvoi vers les URL success et cancel. Par exemple, vous pouvez avoir une page /checkout_redirect/success et une page /checkout_redirect/cancel.

Ouvrir Checkout dans Safari
Côté client

Ajoutez un bouton de paiement à votre application. Ce bouton ouvre votre page de paiement personnalisée dans Safari.

CheckoutView.swift
import Foundation import SwiftUI import StoreKit struct BuySubscriptionsView: View { @EnvironmentObject var myBackend: MyBackend @State var paymentComplete = false var body: some View { // Check if payments are blocked by Parental Controls on this device. if !SKPaymentQueue.canMakePayments() { Text("Payments are disabled on this device.") } else { if paymentComplete { Text("Payment complete!") } else { Button { UIApplication.shared.open("https://example.com/checkout", options: [:], completionHandler: nil) } label: { Text("Subscribe") }.onOpenURL { url in // Handle the universal link from Checkout. if url.absoluteString.contains("success") { // The payment was completed. Show a success // page and fetch the latest customer entitlements // from your server. paymentComplete = true } } } } } }

Rediriger vers votre application
Côté serveur

Avec Elements, assurez-vous de rediriger les utilisateurs vers votre application (en utilisant le lien universel enregistré) une fois le paiement confirmé.

Item 1
stripe.confirmPayment({ elements, confirmParams: { // Return URL where the customer should be redirected after the PaymentIntent is confirmed. return_url: 'https://example.com/checkout_redirect/success', }, }) .then(function(result) { if (result.error) { // Inform the customer that there was an error. } });

Gérer le traitement des commandes
Côté serveur

Lorsque l’utilisateur effectue le paiement initial ou lorsque des paiements récurrents ultérieurs ont lieu, Stripe envoie des événements tels que :

  • invoice.payment_succeeded
  • customer.subscription.updated
  • invoice.payment_failed

Écoutez ces événements dans votre endpoint de webhook. Par exemple :

Node
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => { const sig = req.headers['stripe-signature']; let event; try { event = stripe.webhooks.constructEvent(req.body, sig, process.env.STRIPE_WEBHOOK_SECRET); } catch (err) { console.error('Webhook signature verification failed.', err.message); return res.sendStatus(400); } switch (event.type) { case 'invoice.payment_succeeded': { const invoice = event.data.object; // Mark subscription as active in your database // e.g., invoice.subscription -> "sub_abc123" console.log('Payment succeeded'); break; } case 'invoice.payment_failed': { const invoice = event.data.object; console.log('Payment failed - notify the user to update their payment methods'); break; } case 'customer.subscription.updated': { const subscription = event.data.object; // e.g., handle pause, cancellation, or other changes console.log(`Subscription updated: ${subscription.id}`); break; } default: console.log(`Unhandled event type ${event.type}`); } res.json({ received: true }); });

Pour tester votre intégration, vous pouvez surveiller les événements dans le Dashboard ou utiliser l’interface de ligne de commande Stripe. Lorsque vous développez en mode production, configurez un endpoint de webhook et abonnez-vous aux types d’événements pertinents. Si vous ne connaissez pas votre clé STRIPE_WEBHOOK_SECRET, cliquez sur le webhook dans le Dashboard pour l’afficher.

Tests

Pour tester le bon fonctionnement de votre bouton de paiement, procédez comme suit :

  1. Cliquez sur le bouton de paiement, qui vous redirige vers votre page de paiement avec le composant Payment Element de Stripe.
  2. Saisissez le numéro de carte de test , un code CVC à trois chiffres, une date d’expiration et un code postal valide.
  3. Appuyez sur Payer.
  4. Le webhook invoice.payment_succeeded s’active et Stripe notifie votre serveur de la transaction.
  5. Vous êtes redirigé(e) vers votre application.

Si votre intégration ne fonctionne pas, consultez la section Ressources de test supplémentaires.

FacultatifRessources de test supplémentaires

Voir aussi

  • Ajouter des réductions
  • Collecte des taxes
  • Collecter des numéros fiscaux
  • Personnaliser l’adaptation à votre marque
  • Personnaliser votre page de confirmation de paiement
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc