Google adopte officiellement l'API de demande de paiement, vous permettant de payer avec des applications tierces dans Chrome

Prévu pour être annoncé lors de Google I/O, Google adopte officiellement l'API de demande de paiement dans Chrome, vous permettant de payer avec des applications tierces.

Prêt à être annoncé lors de la prochaine conférence des développeurs Google I/O, l'API Payment Request va révolutionner la façon dont nous effectuons des paiements en ligne sur nos appareils mobiles. Les utilisateurs de Google Chrome sur Android n'auront plus à passer par de longs processus de paiement impliquant la saisie des informations de leur carte de crédit ou la connexion à PayPal. Au lieu de cela, l'API permet aux développeurs de sites Web d'envoyer des intentions aux applications de paiement tierces prises en charge afin d'effectuer un paiement. Contrairement à beaucoup de d'autres surprises que Google nous réserve, il existe déjà une tonne d’informations publiques sur le fonctionnement exact de cette nouvelle façon de payer. Nous avons plongé dans tous ces documents afin de vous apporter quelques informations avant l'annonce officielle de Google cette semaine.


Faciliter les paiements avec l'API de demande de paiement

Récapitulons d'abord comment les paiements sont actuellement traités dans les navigateurs Web. Lorsque vous accédez à la page de paiement d'un commerçant en ligne, vous êtes invité à saisir vos informations de paiement. Vous pouvez soit ajouter une carte de crédit prise en charge par le commerçant, soit utiliser un service intégré tel que PayPal pour finaliser votre transaction. Désormais, à moins que vous n'ayez déjà enregistré les informations de votre carte de crédit sur le site Web (ce que beaucoup de gens hésitent à faire) ou que vous soyez déjà connecté dans PayPal, il peut être compliqué de se lever, d'accéder à votre portefeuille, de trouver votre carte, puis de saisir le numéro de carte, la date d'expiration et la sécurité code. Chaque fois que vous souhaitez effectuer un achat sur un nouveau site Web, vous devez suivre une variante de ce processus. Pour ceux d'entre nous qui j'aime chasser les bonnes affaires, cela peut devenir assez vite ennuyeux.

Diverses pages de paiement des commerçants en ligne

De nombreuses institutions de cartes de crédit et bancaires proposent des applications sur le Google Play Store. Puisque nous utilisons déjà ces applications pour surveiller nos comptes financiers, pourquoi ne pouvons-nous pas les utiliser pour authentifier les paiements? C'est exactement le processus de réflexion derrière le groupe de travail sur les paiements Web, composé de membres tels que Google, Mozilla, Samsung, Alibaba, Microsoft, etc. Ce groupe a travaillé en coulisses afin de introduire une nouvelle API appelée API de demande de paiement et une nouvelle norme en ligne définie dans la proposition de manifeste de paiement afin de faciliter la communication entre les navigateurs Web. et les commerçants en ligne afin que le commerçant en ligne puisse utiliser les applications existantes sur l'appareil d'un utilisateur final afin de gérer les paiements.

Comment ça fonctionne

Afin d'accomplir cette tâche, les navigateurs Web doit prendre en charge l'API de demande de paiement, les commerçants en ligne doivent prendre en charge l'API en mettant en œuvre ce qu'on appelle un Identifiant du mode de paiementet applications Android besoin de mettre en œuvre de nouveaux services. Sans entrer dans trop de détails, je vais expliquer brièvement ce qui se passe pendant le processus de paiement.

En supposant que votre navigateur Web prend en charge l'API de demande de paiement (nous en parlerons plus tard), lorsque vous accédez à la page de paiement d'un commerçant en ligne, vous aurez la possibilité de payer. avec l'un de leurs gestionnaires de paiement pris en charge (carte de crédit/PayPal/etc.) Lorsque vous appuyez sur le bouton pour effectuer un achat (comme sur l'exemple de page ci-dessous utilisé par les Googleurs pour testez l'API de demande de paiement), puis l'API de demande de paiement envoie une intention Android à l'application de paiement prise en charge afin que cette application authentifie l'utilisateur. paiement.

 Disons que notre hypothétique application de carte de crédit installée sur un hypothétique appareil Android s'appelle Bob Pay. Bob Pay ajoutera les éléments suivants à son fichier AndroidManifest.xml :

"font-weight: 400;"><manifestspan><spanstyle="font-weight: 400;">package=span><spanstyle="font-weight: 400;">"com.bobpay.app"span><spanstyle="font-weight: 400;">>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".IsReadyToPayService"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: enabled=span><spanstyle="font-weight: 400;">"true"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.IS_READY_TO_PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">service>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".PaymentActivity"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.default_payment_method_name"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: value=span><spanstyle="font-weight: 400;">"https://bobpay.com/put/optional/path/here"span><spanstyle="font-weight: 400;">/>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">activity>span>
<spanstyle="font-weight: 400;">manifest>span>

Lorsqu’une intention est envoyée ciblant cette hypothétique demande de carte de crédit, le service de cette application est démarré. Toutes les informations nécessaires à notre hypothétique application Bob Pay pour comprendre ce qui est acheté, auprès de quel fournisseur et pour combien d'argent sont contenues dans les extras de l'intention :

Bundle extras = new Bundle();
extras.putString("key", "value");
intent.putExtras(extras);

Une fois que Bob Pay a validé le paiement, alors l'API Payment Request reçoit ces informations dans une autre intention envoyée par Bob Pay :

Intent result = new Intent();
Bundle extras = new Bundle();
extras.putString("key", "value");
result.putExtras(extras);
setResult(RESULT_OK, result); // Changeto RESULT_CANCELED on failure.
finish(); // Close the payment activity.

Mais comment le commerçant en ligne qui prend en charge Bob Pay sait-il que le Bob Pay installé sur votre téléphone est le vrai Bob Pay, et non un malware destiné à commettre une fraude? Pour ce faire, il crée un fichier JSON d’identifiant de manifeste de mode de paiement lisible par machine par le navigateur.

{
<span ><span >"span>name<span >"span>span><span >:span><span ><span >"span>BobPay - World's Greatest Payment Method<span >"span>span>,
<span ><span >"span>description<span >"span>span><span >:span><span ><span >"span>This payment method changes lives<span >"span>span>,
<span ><span >"span>short_name<span >"span>span><span >:span><span ><span >"span>BobPay<span >"span>span>,
<span ><span >"span>icons<span >"span>span><span >:span> [{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.webp<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>,
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>image/webp<span >"span>span>
},{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.png<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>
}, {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/hd_hi<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>128x128<span >"span>span>
}],
<span ><span >"span>serviceworker<span >"span>span><span >:span> {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>payment-sw.js<span >"span>span>,
<span ><span >"span>scope<span >"span>span><span >:span><span ><span >"span>/pay<span >"span>span>,
<span ><span >"span>use_cache<span >"span>span><span >:span><span >falsespan>
}
<span ><span >"span>related_applications<span >"span>span><span >:span> [
{
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>play<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://play.google.com/store/apps/details? id=com.bobpay<span >"span>span>,
<span ><span >"span>fingerprints<span >"span>span><span >:span> [{
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>sha256_cert<span >"span>span>,
<span ><span >"span>value<span >"span>span><span >:span><span ><span >"span>59:5C: 88:65:FF: C4:E8:20:CF: F7:3E: C8...<span >"span>span>
}], <span >//newspan>
<span ><span >"span>min_version<span >"span>span><span >:span><span ><span >"span>1<span >"span>span>, <span >// newspan>
<span ><span >"span>id<span >"span>span><span >:span><span ><span >"span>com.example.app1<span >"span>span>
}, {
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>itunes<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://itunes.apple.com/app/example-app1/id123456789<span >"span>span>,
}
]
}

Dans ce fichier JSON se trouve une signature utilisée pour vérifier l'intégrité de l'application installée sur votre appareil qui prétend être la réel Bob Payer. Si cette vérification de signature échoue, Bob Pay ne sera pas accepté comme gestionnaire de paiement.

Bien sûr, je simplifie énormément, énormément, énormément le processus général impliqué ici. Les paiements sont un système incroyablement complexe qui nécessite plusieurs niveaux de contrôles de sécurité afin de garantir que seuls les paiements valides sont effectués. Les trois documents auxquels j'ai lié précédemment décrivent comment le navigateur implémente pleinement l'API de demande de paiement, comment un le site Web implémente le fichier manifeste JSON et comment une application Android peut gérer l'intention envoyée par la demande de paiement API. Voici un organigramme qui décrit le processus général que j'ai résumé ci-dessus :

Organigramme de paiement. Source: Rouslan Solomakhine

Comme vous pouvez le constater, de nombreuses étapes sont impliquées ici. Tous ces changements seront gérés par les développeurs de sites marchands en ligne, Android banking/crédit applications de cartes et développeurs de navigateurs Web, de sorte qu'un utilisateur final n'aura probablement aucune idée de ce qui se passe réellement ici. Mais sachez simplement que le résultat final est que vos paiements en ligne deviendront beaucoup plus simples si toutes les parties impliquées mettre en œuvre ces changements qui, grâce aux efforts de normalisation du groupe de travail sur les paiements Web, deviendront, espérons-le, réalité.


L'histoire derrière l'API de demande de paiement

Le World Wide Web Consortium (en abrégé W3C) a été fondé en 1994 dans le but de développer une plateforme des normes qui permettraient à tous les sites Web et à leurs utilisateurs de bénéficier de l'intercompatibilité et cohérence. Afin de répondre à la fragmentation croissante des paiements en ligne, le W3C a créé le Groupe de travail sur les paiements Web en 2015 afin de standardiser certains aspects du flux de paiement en ligne. Par la suite, un travail a commencé entre tous les membres du groupe de travail sur les paiements en ligne afin de trouver des moyens d'améliorer le fonctionnement des systèmes de paiement en ligne existants.

Le groupe a proposé le API de demande de paiement, un ensemble de méthodes permettant aux sites Web d'utiliser des moyens de paiement sans intégrer le mode de paiement dans leur site. Les navigateurs Web doivent être mis à jour pour prendre en charge l'API, mais le plus difficile vient de impliquer les commerçants en ligne. À cette fin, les membres du Groupe de travail est venu avec une proposition sur la manière dont les sites Web peuvent créer des identifiants pour définir les méthodes de paiement qu'ils prennent en charge. Cela implique la création d'un fichier JSON de manifeste de paiement lisible par machine (l'identifiant du mode de paiement): il doit être lu par le navigateur afin que le L'API de demande de paiement peut identifier si l'utilisateur dispose d'une ou plusieurs des applications correspondant aux méthodes de paiement prises en charge identifiées dans le JSON. déposer. Cette implémentation s'inspire de celle de Google Protocole de liens d’actifs numériques c'est ainsi que les sites Web vous redirigent de leur site mobile vers leur application si vous l'avez déjà installée.

Après de nombreux échanges internes au sein du groupe, le 25 novembre 2016, Zach Koch de Google et Dapeng Liu d'Alibaba ont soumis une ébauche initiale du manifeste de mode de paiement afin de lancer le processus de normalisation des identifiants de méthode de paiement sur lequel tous les membres pourraient accepter. Finalement, les membres du groupe de travail rencontré en personne à Chicago entre le 23 et le 24 mars afin de hacher l'API de demande de paiement, la proposition de manifeste de paiement, etc. Le groupe de travail a voté pour adopter formellement une nouvelle version de la proposition de manifeste de paiement (version 2), où nous en sommes aujourd’hui.


Prise en charge de l'API de demande de paiement

Le 10 mai, la prise en charge des applications de paiement Android tierces est désormais disponible. activé par défaut dans Chromium puisque le prérequis du manifeste de paiement Web a été approuvé dans la branche clin-dev (Blink est le nom du moteur de rendu utilisé par Chrome). Notez que cette fonctionnalité est en test dans Chrome depuis des mois, mais ce n'est que récemment qu'il semble que le groupe soit prêt à aller de l'avant. Cette fonctionnalité sera disponible toutes les plateformes/versions de Chromium à l'exception de la vue Web Android (qui n'a pas d'interface utilisateur et ne peut donc pas implémenter l'API de demande de paiement).

Ce n’est qu’après des mois de travail en coulisses que nous allons maintenant constater les avantages de ce sur quoi le groupe de travail sur les paiements Web a travaillé. Lors de Google I/O, la société annoncera probablement que Google Chrome sera livré avec l'API de demande de paiement activée, et Zach Koch a mentionné plus tôt, il donnera son exposé jeudi sur la façon dont les fournisseurs de paiement tiers peuvent prendre en charge l'API en créant le manifeste de paiement JSON. des dossiers.

D'autres navigateurs travaillent également à ajouter la prise en charge de l'API de demande de paiement. Mozilla et Samsung ont exprimé publiquement leur soutien à l'ajout de l'API, cependant selon Googler Rouslan Solomakhine on ne sait pas encore si le navigateur Edge de Microsoft ou Safari d'Apple ajoutera la prise en charge. Il convient de noter que Microsoft est testant déjà l'API de demande de paiement pour les applications de la plateforme Windows universelle (UWP) et à au moins une banque a déjà mis en place un support (Monzo) dans leur application.

Quant aux autres marchands en ligne et applications Android qui prendront en charge cette nouvelle spécification de paiement, selon le googleur Zach Koch :

Le nombre de « fournisseurs de moyens de paiement » qui auraient besoin de mettre en œuvre cette spécification est assez faible. (des centaines), et pour le moment, nous ne travaillons directement qu'avec un très petit sous-ensemble de ceux-ci (<5) à tester les eaux. Si nous nous retrouvions dans une situation où nous devions modifier l'un des champs, je pense que nous pourrions le faire facilement et sans trop (voire aucun) risque d'interopérabilité. Tous nos premiers partenaires sont conscients que cette spécification peut changer et sont d'accord avec cela.

Le déploiement de ce système est essentiel pour permettre à d'autres acteurs de participer à l'écosystème des relations publiques, du moins sur Android. Je préférerais vraiment ne pas emprunter la voie propriétaire complète pour activer les applications natives Android. Nous avons intentionnellement réduit l'empreinte sur ce produit pour laisser de la place à la croissance et à des cas d'utilisation plus avancés.

Ainsi, nous pouvons constater que bien que Google soit pionnier dans la prise en charge de l'API de demande de paiement, il faudra un certain temps avant de voir réellement cette nouvelle façon de payer se frayer un chemin dans tous les navigateurs, tous les marchands en ligne et toutes les applications. Personnellement, je suis très heureux de voir l'API de demande de paiement devenir prise en charge par Google. L'écosystème du commerce électronique a été inutilement fragmenté avec les méthodes de paiement depuis des années, et si cette nouvelle API signifie que je n'aurai plus jamais à saisir manuellement les informations de ma carte de crédit sur un site Web, alors je suis tout à fait pour il.


Que pensez-vous de cette prochaine norme? Exprimez-vous dans les commentaires et donnez-nous votre avis !