Aktualisierung des Ereignisverhaltens „CanMakePayment“ der Payment Handler API

Mit der Payment Handler API und der Payment Request API können Zahlungsanbieter ihren Händlern benutzerdefinierte Zahlungsoptionen anbieten. Wenn die Payment Request API über den new PaymentRequest()-Konstruktor initialisiert wird, löst sie stillschweigend ein canmakepayment-Ereignis mit dem Ursprung des Händlers und beliebigen Daten an einen Dienst-Worker aus, der für die Payment Handler API registriert ist aus. Für diese plattformübergreifende Kommunikation ist keine Nutzeraktion erforderlich und es wird keine Benutzeroberfläche angezeigt.

In Chrome werden die identifizierenden Felder aus dem canmakepayment-Ereignis entfernt und der Ursprungstest wird ab Chrome 108 gestartet.

Die Informationen auf dieser Seite gelten nur für Anbieter von Zahlungs-Apps, die die Payment Handler API verwenden. Wenn Sie das nicht tun, können Sie diese Anleitung überspringen.

Was ändert sich?

Wenn ein Händler new PaymentRequest() aufruft, erhält ein registrierter Dienst-Worker ein canmakepayment-Ereignis (CanMakePaymentEvent), das die folgenden Informationen enthält:

  • topOrigin
  • paymentRequestOrigin
  • methodData
  • modifiers

Diese werden entfernt und der Service Worker erhält einfach das canmakepayment-Ereignis ohne zusätzliche Informationen.

Funktionserkennung

Um festzustellen, ob das Ereignis canmakepayment im Service Worker-Code geändert wird, prüfen Sie die entsprechenden Eigenschaften so:

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

Änderung lokal testen

So aktivieren Sie die Änderung lokal für Entwicklungszwecke:

  1. Verwenden Sie Chrome 108, 109 oder 110.
  2. Geben Sie chrome://flags/#clear-identity-in-can-make-payment in die URL-Leiste ein.
  3. Aktivieren Sie das Flag.
  4. Starten Sie Chrome neu.

Wenn Sie das Flag aktivieren, werden die Identitätsfelder im canmakepayment-Ereignis (und im Android-IS_READY_TO_PAY-Intent) geleert.

Änderung in der Produktion aktivieren

Sie können die Änderung auch zu Testzwecken in der Produktion aktivieren, bevor sie in Chrome eingeführt wird. Dieser Mechanismus wird als Ursprungstest bezeichnet.

Mit Ursprungstests können Sie neue Funktionen ausprobieren und der Webstandards-Community Feedback zu ihrer Nutzerfreundlichkeit, Praktikabilität und Effektivität geben. Weitere Informationen finden Sie im Leitfaden für Webentwickler zu Origin Trials. Wenn du dich für diesen oder einen anderen Test registrieren möchtest, rufe die Registrierungsseite auf.

So registrieren Sie einen Ursprungstest:

  1. Fordere ein Token für deinen Ursprung an.
  2. Fügen Sie das Token Ihrer Service Worker-JavaScript-Datei mit einem Origin-Trial-HTTP-Header hinzu. Zum Festlegen von HTTP-Headern ist Zugriff auf die Konfiguration Ihres Servers erforderlich. Der resultierende Antwortheader sollte in etwa so aussehen:
Origin-Trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

Wenn Sie das Testtoken für den Ursprung in der Service Worker-Datei sehen möchten, verwenden Sie die DevTools oder den Befehl curl:

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

Identitätsfelder nach Chrome 111 lokal wieder aktivieren

Wenn Sie Chrome 111 oder höher verwenden, bleiben die Identitätsfelder im Ereignis canmakepayment leer. So aktivieren Sie die Felder lokal wieder:

  1. Verwenden Sie Chrome 111 oder höher.
  2. Geben Sie chrome://flags/#add-identity-in-can-make-payment in die URL-Leiste ein.
  3. Aktivieren Sie das Flag.
  4. Starten Sie Chrome neu.

Nächste Schritte

Diese Änderung soll ab Chrome 111 standardmäßig aktiviert werden. Sie können schon heute mit den Tests beginnen, um für die Änderung des Startzeitpunkts gerüstet zu sein.