Mise à jour du comportement de l'événement CanMakePayment de l'API Payment Handler

L'API Payment Handler permet aux fournisseurs de services de paiement de proposer une expérience de paiement personnalisée aux marchands, tout comme l'API Payment Request. Lorsque l'API Payment Request est initialisée via le constructeur new PaymentRequest(), elle déclenche silencieusement un événement canmakepayment avec l'origine du marchand et des données arbitraires à un service worker enregistré pour l'API Payment Handler. Cette communication multi-origine ne nécessite pas de geste de l'utilisateur et n'affiche aucune interface utilisateur.

Chrome va supprimer les champs d'identification de l'événement canmakepayment et démarrer la phase d'évaluation à partir de Chrome 108.

Les informations de cette page ne s'appliquent qu'aux fournisseurs d'applications de paiement qui utilisent l'API Payment Handler. Si vous ne l'utilisez pas, vous pouvez ignorer ces instructions.

Ce qui change

Lorsqu'un marchand appelle new PaymentRequest(), un service worker enregistré reçoit un événement canmakepayment (CanMakePaymentEvent) contenant les informations suivantes:

  • topOrigin
  • paymentRequestOrigin
  • methodData
  • modifiers

Ceux-ci vont être supprimés, et le service worker recevra simplement l'événement canmakepayment sans aucune information supplémentaire.

Détection de fonctionnalités

Pour détecter si l'événement canmakepayment a été modifié dans le code du service worker, examinez les propriétés respectives comme suit:

self.addEventListener(e => {
  if (e.paymentRequestOrigin) {...}
  if (e.topOrigin) {...}
  if (e.methodData && e.methodData.length > 0) {...}
  if (e.modifiers && e.modifiers.length > 0) {...}
  ...
});

Essayer la modification en local

Pour activer la modification localement à des fins de développement:

  1. Utilisez Chrome 108, 109 ou 110.
  2. Saisissez chrome://flags/#clear-identity-in-can-make-payment dans la barre d'adresse.
  3. Activez l'indicateur.
  4. Relancez Chrome.

Si vous activez l'indicateur, les champs d'identité de l'événement canmakepayment sont vidés (et l'intent IS_READY_TO_PAY Android).

Activer le changement en production

Vous pouvez également activer la modification en production à des fins de test avant qu'elle n'arrive dans Chrome. Ce mécanisme est appelé "phase d'évaluation".

Les phases d'évaluation vous permettent d'essayer de nouvelles fonctionnalités et de donner votre avis sur leur facilité d'utilisation, leur praticité et leur efficacité à la communauté des standards Web. Pour en savoir plus, consultez le Guide sur les phases d'évaluation pour les développeurs Web. Pour vous inscrire à cette phase d'évaluation ou à une autre, accédez à la page d'inscription.

Pour enregistrer une phase d'évaluation:

  1. Demandez un jeton pour votre origine.
  2. Ajoutez le jeton au fichier JavaScript de service worker à l'aide d'un en-tête HTTP Origin-Trial. La définition d'en-têtes HTTP nécessite un accès à la configuration de votre serveur. L'en-tête de réponse obtenu doit se présenter comme suit:
Origin-Trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

Pour afficher le jeton de la phase d'évaluation dans le fichier du service worker, utilisez les outils de développement ou la commande curl comme suit:

$ curl --head <Service Worker JS file URL> | grep -i origin-trial
origin-trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

Réactiver les champs d'identité localement après Chrome 111

Si vous utilisez Chrome 111 ou une version ultérieure, les champs d'identité de l'événement canmakepayment sont laissés vides. Pour réactiver les champs localement, procédez comme suit:

  1. Utilisez Chrome 111 ou une version ultérieure.
  2. Saisissez chrome://flags/#add-identity-in-can-make-payment dans la barre d'adresse.
  3. Activez l'indicateur.
  4. Relancez Chrome.

Étapes suivantes

Cette modification devrait être activée par défaut à partir de Chrome 111. Vous pouvez commencer les tests dès aujourd'hui pour vous préparer au changement à temps pour le lancement.