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 StripeCôté serveur
Tout d’abord, inscrivez-vous pour créer un Compte Stripe.
Ajoutez ensuite la bibliothèque d’API Stripe à votre back-end :
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.
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_
.
Cliquez ensuite sur Copier en mode production pour dupliquer votre produit d’un environnement de test vers le mode production.
Créer des clientsCô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.
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 abonnementCôté serveur
Lorsque vous créez un abonnement pour utiliser le Payment Element, vous transmettez généralement payment_
. 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.
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.
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_
. 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 .
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.
{ "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.
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
- Ouvrez le volet Signatures et fonctionnalités de la cible de votre application.
- Cliquez sur + Fonctionnalité, puis sélectionnez Domaines associés.
- Ajoutez une entrée pour
applinks:example.
à la liste Domaines associés.com
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_
et une page /checkout_
.
Ouvrir Checkout dans SafariCôté client
Ajoutez un bouton de paiement à votre application. Ce bouton ouvre votre page de paiement personnalisée dans Safari.
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 applicationCôté serveur
Avec Elements, assurez-vous de rediriger les utilisateurs vers votre application (en utilisant le lien universel enregistré) une fois le paiement confirmé.
Gérer le traitement des commandesCô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 :
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_
, 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 :
- Cliquez sur le bouton de paiement, qui vous redirige vers votre page de paiement avec le composant Payment Element de Stripe.
- Saisissez le numéro de carte de test , un code CVC à trois chiffres, une date d’expiration et un code postal valide.
- Appuyez sur Payer.
- Le webhook
invoice.
s’active et Stripe notifie votre serveur de la transaction.payment_ succeeded - Vous êtes redirigé(e) vers votre application.
Si votre intégration ne fonctionne pas, consultez la section Ressources de test supplémentaires.