Gérer les paiements récurrents sur Apple Pay
Améliorez les taux d'autorisation des transactions Apple Pay récurrentes.
Bonnes pratiques Checkout et Elements
Checkout et Elements appliquent automatiquement les bonnes pratiques recommandées dans ce guide.
Fonctionnement des paiements Apple Pay récurrents
Pour effectuer des paiements récurrents, certaines entreprises doivent enregistrer le moyen de paiement Apple Pay pendant la session d’un utilisateur, puis effectuer les paiements récurrents dans un second temps, lorsque l’utilisateur est hors session. Le premier paiement effectué pendant une session est souvent appelé transaction initiée par le client, tandis que les paiements récurrents ultérieurs sont souvent appelés transactions initiées par le marchand. Voici deux exemples de paiements récurrents (ou transactions initiées par le marchand) :
- Abonnements pour lesquels les utilisateurs sont facturés à une fréquence fixe.
- Paiements récurrents hors session pour lesquels la fréquence de facturation est irrégulière ou variable.
Lorsque les utilisateurs interagissent avec le formulaire de paiement Apple Pay, pour préserver la confidentialité du numéro de compte principal, également appelé numéro PAN (le numéro de carte bancaire d’origine), Apple Pay traite le numéro PAN de carte et génère un numéro PAN d’appareil (DPAN) ou un token de marchand (MPAN), selon l’intégration ou la version du système d’exploitation de l’appareil. Les numéros DPAN sont associés à un appareil Apple spécifique et peuvent être désactivés de manière involontaire si un utilisateur passe à un nouvel appareil (par exemple un iPhone ou un iPad) et y ajoute la même carte. Le numéro MPAN est l’option la plus récente et la plus fiable pour les paiements récurrents. Les MPAN ne sont pas désactivés lorsque les utilisateurs changent d’appareil et offrent une meilleure visibilité et une meilleure gestion du cycle de vie.
Au-delà de ces différences, les numéros MPAN et DPAN ont un comportement similaire.
Un cryptogramme expiré peut entraîner des échecs d’autorisation
Lorsqu’un numéro DPAN (ou MPAN) est généré, il est également accompagné d’un cryptogramme à usage unique et à la durée de validité limitée. Stripe doit effectuer traiter dès que possible la transaction effectuée par le client et envoyer le DPAN (ou MPAN) et le cryptogramme au réseau d’autorisation avant qu’il n’expire. Ce mécanisme d’expiration ajoute une couche de sécurité aux portefeuilles Apple Pay, mais un déclenchement retardé de la transaction initiée par le client est souvent à l’origine des échecs d’autorisation.
Si la première transaction initiée par le client avec envoi de cryptogramme échoue, les transactions ultérieures initiées par le marchand avec le même objet Card échoueront également, car ils sont liés en interne à la transaction initiée par le client. Ces échecs de paiement récurrents entraînent une baisse du taux d’autorisation.
Améliorez le taux d’autorisations de votre intégration API
Pour exécuter des transactions Apple Pay récurrentes avec l’API :
- Enregistrez le numéro DPAN (ou MPAN) et le cryptogramme dans un objet
Card
. - Initiez une transaction initiée par le client pour utiliser le cryptogramme avant son expiration. Envoyez au réseau d’autorisation une transaction de validation ou de paiement de 0 USD, et conservez un enregistrement de la transaction réseau renvoyée.
- Réutilisez le moyen de paiement pour les prochaines transactions hors sessions initiées par le marchand. Stripe envoie au réseau d’autorisation le DPAN (ou MPAN) et l’ID de transaction réseau de la transaction initiée par le client d’origine pour améliorer le taux d’autorisations.
Consommez les cryptogrammes dès leur création en suivant les recommandations ci-dessous.
Utilisez les abonnements pour offrir des essais gratuits
Lorsqu’un client souscrit un essai gratuit, il n’est pas débité jusqu’à la fin de la période d’essai. Pour utiliser le cryptogramme DPAN (ou MPAN) avant qu’il n’expire, utilisez les abonnements Stripe. Les objets Subscription créent un SetupIntent qui génère une validation de 0 USD auprès du réseau d’autorisation. Celle-ci tient lieu de transaction initiée par le client, qui utilise le cryptogramme immédiatement, plutôt que de retarder la première transaction jusqu’à la fin de la période d’essai, quand le cryptogramme aura expiré.
Vous pouvez également créer directement un SetupIntent afin d’enregistrer l’objet PaymentMethod Apple Pay en vue d’une utilisation ultérieure. La confirmation du SetupIntent initie la même validation de 0 USD initiée par le client pour utiliser le cryptogramme. Vous pourrez alors utiliser l’objet PaymentMethod Apple Pay ainsi autorisé pour créer un objet Subscription par la suite.
Créez un SetupIntent pour les intégrations de l’API Tokens Legacy
Nous vous déconseillons d’utiliser les anciennes API Tokens et Charges pour les paiements Apple Pay récurrents. En effet, elles entraînent un échec d’autorisation pour cause d’expiration du cryptogramme, tel que décrit dans ce document. L’API Tokens ne déclenche pas la demande d’autorisation à temps pour utiliser le cryptogramme. En outre, l’API Charges ne prend pas en charge les fonctionnalités suivantes, dont beaucoup sont requises pour assurer la conformité des cartes bancaires :
- Marchands en Inde
- Demandes d’authentification de carte émanant des banques
- Authentification forte du client
Pour ces raisons, nous vous recommandons de migrer vers les API PaymentIntents et SetupIntents.
Si vous utilisez l’ancienne API Tokens pour créer un token de paiement Apple Pay, et appelez par la suite l’API Charges pour débiter l’utilisateur à la fin de la période d’essai, vous pouvez améliorer votre taux d’autorisations en suivant ces étapes.
- Créez un moyen de paiement immédiatement après la création du token.
- Créez immédiatement un SetupIntent avec le nouvel objet PaymentMethod pour effectuer une transaction de validation de 0 USD.
Une fois ces deux étapes terminées, la transaction initiée par le client est effectuée et le cryptogramme est envoyé au réseau pour autorisation avant son expiration. Si vous utilisez Stripe.js, vous pouvez combiner ces étapes en appelant stripe.confirmCardSetup avec le token.
Vous pouvez désormais effectuer des paiements MIT hors session en utilisant le moyen de paiement Apple Pay enregistré. Si vous utilisez PaymentIntents, définissez off_session pour indiquer que le client n’est pas dans votre tunnel de paiement.
Configurez des paiements hors session
Si vous configurez des paiements Apple Pay différés hors session et souhaitez recueillir des informations de paiement en vue de futures utilisations hors session, comme une réservation d’hôtel, consultez la liste des types de paiements pris en charge par Apple Pay.
Apple Pay prend en charge les paiements usage=off_session utilisant un numéro DPAN (ou MPAN) lorsque le client est en dehors du tunnel de paiement. Ces paiements présentent toutefois un risque légèrement plus élevé, car ils ne bénéficient pas d’un transfert de responsabilité depuis le réseau et leur taux d’autorisation peut être inférieur à la moyenne.
Les Conditions d’Apple Pay interdisent l’utilisation d’un moyen de paiement enregistré pour les paiements usage=on_session. Si le client est dans le tunnel de paiement, vous devez lui demander d’autoriser la transaction et générer un nouveau cryptogramme pour cette transaction.
Apple Pay ne prend en charge les autorisations complémentaires que lorsque vous augmentez le montant d’un paiement autorisé avant le capturer.
Vous pouvez déclencher une transaction initiée par le marchand pour votre intégration de l’API Tokens de l’une des manières suivantes :
- Créez un SetupIntent comme décrit dans le scénario d’essai gratuit pour initier la validation d’une somme de 0 USD afin de créer un moyen de paiement réutilisable avec numéro DPAN (ou MPAN) pour les paiements hors session.
- Créez un PaymentIntent avec le paramétrage setup_future_usage=off_session.
Vous pouvez désormais effectuer des paiements hors session initiés par le marchand avec le moyen de paiement enregistré. Si vous utilisez PaymentIntents, paramétrez off_session=true pour indiquer que le client n’est pas dans votre tunnel de paiement.