Accepter des paiements pour des biens numériques sur iOS à l'aide d'une page de paiement préconfigurée
Ouvrez Stripe Checkout dans un navigateur pour vendre des biens et services numériques dans l’application.
Dans certains pays, vous pouvez ajouter un lien vers un autre site web pour accepter des paiements sur iOS. À titre d’exemple, ce guide décrit comment vendre des crédits à la consommation dans votre application. Vous utilisez Stripe Checkout pour rediriger vos clients vers une page de paiement hébergée par Stripe. Si vous disposez d’un nombre limité de produits et de tarifs, vous pouvez également utiliser la solution low-code Payment Links pour accepter des paiements en règlement de biens numériques sur iOS.
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 n’explique le processus que pour la vente de biens numériques intégrés à l’application. Si vous vendez :
- 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
Utilisez plutôt le guide de paiement iOS natif.
Ce guide explique comment :
- Collectez des informations de paiement avec Checkout.
- Modélisez vos forfaits de crédits avec des produits, des tarifs et des clients.
- Utilisez les liens universels pour rediriger directement vers votre application depuis Checkout.
- Surveillez des webhooks pour mettre à jour le solde de la devise du client dans l’application.
Ce qui n’est pas couvert
Ce guide vous explique comment ajouter Stripe Checkout à côté de votre système d’achat actuel dans l’application. Il ne couvre pas les points suivants :
- Authentification d’utilisateur. Si vous ne disposez pas encore d’un fournisseur d’authentification, vous pouvez faire appel à un tiers (par exemple, avec l’option Se connecter avec Apple ou Authentification Firebase).
- Achats dans l’application native. Pour implémenter des achats dans l’application avec StoreKit, consultez le guide d’Apple sur les achats intégrés à 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. Cette dernière vous permet d’exécuter les tests webhook dont vous aurez besoin et vous pouvez l’utiliser 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 des tarifs
Créez vos produits et leurs tarifs dans le Dashboard ou via l’interface de ligne de commande Stripe. Vous pouvez modéliser les biens numériques à l’aide de tarifs ponctuels et les abonnements à l’aide de tarifs récurrents. Vous pouvez également laisser votre client payer le montant de son choix (par exemple, pour décider du nombre de crédits à acheter), en sélectionnant Les clients indiquent le montant à payer.
Cet exemple utilise un seul produit et un tarif pour représenter un lot de 100 coins.
Créer des clientsCôté serveur
Chaque fois que vous créez une session Checkout, créez un objet Customer pour votre utilisateur si celui-ci n’existe pas encore.
Avertissement
Veillez à conserver sur votre serveur l’association entre le compte d’utilisateur et l’ID de client Stripe. Sans cela, vous ne pourrez pas associer vos clients à des achats et vos clients ne pourront donc pas récupérer leurs achats.
Si votre application ne dispose pas de fournisseur d’authentification, vous pouvez utiliser l’option Se connecter avec Apple.
Utilisez l’argument customer pour transmettre leur ID client lorsqu’ils créent une session Checkout. Cela permet de vérifier que tous les objets créés pendant la session sont associés à l’objet Customer correspondant.
Remarque
Si le client change son adresse e-mail sur la page Checkout, l’objet Customer se met à jour avec la nouvelle adresse.
En mode payment
, nous nous référons au paiement par carte bancaire le plus récent du client pour renseigner automatiquement son adresse e-mail, son nom, ses informations de carte bancaire et son adresse de facturation sur la page Checkout. Une adresse de facturation valide est requise pour que Checkout puisse remplir automatiquement les informations de carte bancaire du client.
Vous pouvez enregistrer les informations du moyen de paiement pour que Checkout associe automatiquement ce moyen de paiement à l’objet Customer afin de pouvoir le réutiliser.
Configurer des liens universelsCôté clientCôté serveur
Les liens universels autorisent Checkout à vous renvoyer directement vers 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 plus sur les liens universels, consultez la page d’Apple sur les liens universels pour les développeurs.
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.
Veillez à créer une page de renvoi vers les URL success
et cancel
.
Créer une session CheckoutCôté serveur
Une session Checkout est la représentation programmatique de ce que votre client voit lorsqu’il est redirigé vers le formulaire de paiement. Configurez-la avec :
- ID du client
- ID du produit (paiement ponctuel ou abonnement)
- Une URL
success_
, à savoir un lien universel vers lequel rediriger votre client après avoir finalisé le paiement.url - Une URL
cancel_
, à savoir un lien universel vers lequel rediriger votre client s’il clique sur votre logo dans Checkout.url
Remarque
Les sessions Checkout expirent 24 heures après leur création.
Après avoir créé une session Checkout, renvoyez l’URL contenue dans la réponse vers votre application.
Remarque
Apple Pay est activé par défaut et s’affiche automatiquement dans Checkout 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 moyens de paiement dynamiques.
Ouvrir Checkout dans SafariCôté client
Ajoutez un bouton de paiement à votre application. Ce bouton :
- Appelez un endpoint côté serveur pour créer une session Checkout.
- Renvoie la session Checkout au client.
- Ouvre l’URL de la session dans Safari.
import Foundation import SwiftUI import StoreKit struct BuyCoinsView: View { @EnvironmentObject var myBackend: MyServer @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 { myBackend.createCheckoutSession { url in UIApplication.shared.open(url, options: [:], completionHandler: nil) } } label: { Text("Buy 100 coins") }.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 } } } } } }
Récupérer l’URL Checkout côté client
Utilisez votre endpoint serveur pour récupérer la session de paiement.
class MyServer: ObservableObject { // The cached login token var token: String? func createCheckoutSession(completion: @escaping (URL) -> Void) { // Send the login token to the `/create_checkout_session` endpoint let request = URLRequest(url: URL(string: "https://example.com/create-checkout-session?token=\(self.token)")!) let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in guard let unwrappedData = data, let json = try? JSONSerialization.jsonObject(with: unwrappedData, options: []) as? [String : Any], let urlString = json["url"] as? String, let url = URL(string: urlString) else { // Handle error return } DispatchQueue.main.async { // Call the completion block with the Checkout session URL returned from the backend completion(url) } }) task.resume() } func login() { // Login using the server and set the login token. let request = URLRequest(url: URL(string: "https://example.com/login")!) let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in guard let unwrappedData = data, let json = try? JSONSerialization.jsonObject(with: unwrappedData, options: []) as? [String : Any], let token = json["token"] as? String else { // Handle error return } self.token = token }) task.resume() } }
Gérer le traitement des commandesCôté serveur
Une fois l’achat terminé, Stripe vous envoie un webhook checkout.
. Lorsque vous l’avez reçu, vous pouvez ajouter les coins au client sur votre serveur.
Checkout redirige votre client vers l’URL success_
lorsque vous confirmez avoir reçu l’événement. Si votre endpoint est hors service ou si l’événement n’est pas confirmé correctement, Checkout redirige le client vers l’URL success_
10 secondes après la finalisation du paiement.
Pour les tests, vous pouvez surveiller les événements dans le Dashboard ou utiliser l’interface de ligne de commande Stripe. Pour le mode production, configurez un endpoint de webhook et abonnez-vous aux types d’événement appropriés. Si vous ne connaissez pas votre clé STRIPE_
, cliquez sur le webhook dans le Dashboard pour l’afficher.
Tests
Vous devriez maintenant disposer d’un bouton de règlement fonctionnel qui redirige votre client vers Stripe Checkout.
- Cliquez sur le bouton de paiement qui vous redirige vers le formulaire de paiement Stripe Checkout.
- 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
checkout.
s’active et Stripe notifie votre serveur de la transaction.session. completed - Vous êtes redirigé vers votre application.
Si votre intégration ne fonctionne pas, consultez la section Ressources de test supplémentaires ci-dessous.