Google neemt officieel de Payment Request API over, waardoor u kunt betalen met apps van derden in Chrome

Google zal tijdens Google I/O aangekondigd worden dat Google de Payment Request API officieel in Chrome implementeert, waardoor u kunt betalen met apps van derden.

Wordt aangekondigd Tijdens de komende Google I/O ontwikkelaarsconferentie zal de Payment Request API een revolutie teweegbrengen in de manier waarop we online betalingen doen op onze mobiele apparaten. Google Chrome-gebruikers op Android hoeven niet langer langdurige betaalprocessen te doorlopen waarbij ze hun creditcardgegevens moeten invoeren of inloggen op PayPal. In plaats daarvan stelt de API website-ontwikkelaars in staat om intenties naar ondersteunde betalingsapplicaties van derden te sturen om een ​​betaling uit te voeren. In tegenstelling tot veel van de andere verrassingen die Google voor ons in petto heeft, er is al heel veel publieke informatie over hoe deze nieuwe manier van betalen precies zal werken. We hebben al deze documenten bestudeerd om u wat informatie te geven vóór de officiële aankondiging van Google deze week.


Maak betalingen eenvoudiger met de Payment Request API

Laten we eerst samenvatten hoe betalingen momenteel worden afgehandeld in webbrowsers. Wanneer u naar de afrekenpagina van een online verkoper gaat, wordt u gevraagd uw betalingsgegevens in te voeren. U kunt een door de verkoper ondersteunde creditcard toevoegen of een geïntegreerde service zoals PayPal gebruiken om uw transactie te voltooien. Nu, tenzij u uw creditcardgegevens al op de website heeft opgeslagen (wat veel mensen niet graag doen) of al ingelogd bent bij PayPal kan het lastig zijn om op te staan, naar uw portemonnee te gaan, uw kaart te zoeken en vervolgens het kaartnummer, de vervaldatum en de beveiliging in te voeren code. Elke keer dat u een aankoop wilt doen op een nieuwe website, moet u een variatie van dit proces doorlopen. Voor degenen onder ons die graag op jacht naar deals, dit kan behoorlijk snel vervelend worden.

Diverse afrekenpagina's voor online verkopers

Veel creditcard- en bankinstellingen hebben applicaties beschikbaar in de Google Play Store. Omdat we deze applicaties al gebruiken om onze financiële rekeningen te controleren, waarom kunnen we ze dan niet gebruiken om betalingen te verifiëren? Dat is precies het denkproces achter de Web Payments Working Group, bestaande uit leden als Google, Mozilla, Samsung, Alibaba, Microsoft en meer. Deze groep heeft achter de schermen gewerkt om dit te bewerkstelligen een nieuwe API introduceren, de Payment Request API en een nieuwe online standaard gedefinieerd in het Betalingsmanifestvoorstel om de communicatie tussen webbrowsers te vergemakkelijken en online verkopers, zodat de online handelaar bestaande applicaties op het apparaat van een eindgebruiker kan gebruiken om betalingen af ​​te handelen.

Hoe het werkt

Om deze taak te volbrengen, moeten webbrowsers moet de Payment Request API ondersteunen, moeten online verkopers de API ondersteunen door een zogenaamde a Betaalmethode-IDen Android-applicaties nieuwe diensten moeten implementeren. Zonder al te veel in detail te treden, zal ik kort uitleggen wat er gebeurt tijdens het afrekenproces.

Ervan uitgaande dat uw webbrowser de Payment Request API ondersteunt (daarover later meer), wanneer u naar de betalingspagina van een online verkoper navigeert, heeft u de mogelijkheid om te betalen met een van de ondersteunde betalingsverwerkers (creditcard/PayPal/etc.) Wanneer u op de knop tikt om een ​​aankoop te doen (zoals op de voorbeeldpagina hieronder die door Googlers wordt gebruikt om test de Payment Request API), dan stuurt de Payment Request API een Android-intentie naar de ondersteunde betalingsapplicatie zodat die app de gegevens van de gebruiker kan verifiëren betaling.

 Laten we zeggen dat onze hypothetische creditcardapplicatie die op een hypothetisch Android-apparaat is geïnstalleerd, Bob Pay heet. Bob Pay voegt het volgende toe aan hun AndroidManifest.xml-bestand:

"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>

Wanneer een intentie wordt verzonden gericht op deze hypothetische creditcardaanvraag, wordt de service van deze toepassing gestart. Alle informatie die onze hypothetische Bob Pay-app nodig heeft om te begrijpen wat er wordt gekocht, bij welke leverancier en voor hoeveel geld, zit in de extra's van de intentie:

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

Zodra Bob Pay de betaling heeft gevalideerd, ontvangt de Payment Request API deze informatie in een andere intentie verzonden door 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.

Maar hoe weet de online verkoper die Bob Pay ondersteunt dat de Bob Pay die op uw telefoon is geïnstalleerd de echte Bob Pay is, en niet een of andere malware die bedoeld is om fraude te plegen? Dit wordt bereikt door een Payment Method Manifest Identifier JSON-bestand te maken dat machinaal leesbaar is door de browser.

{
<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>,
}
]
}

In dit JSON-bestand bevindt zich een handtekening die wordt gebruikt om de integriteit te verifiëren van de applicatie die op uw apparaat is geïnstalleerd en die beweert de echt Bob Pay. Als deze handtekeningcontrole mislukt, wordt Bob Pay niet geaccepteerd als betalingsafhandelaar.

Natuurlijk vereenvoudig ik het algemene proces dat hier betrokken is enorm, enorm, enorm. Betalingen zijn een ongelooflijk complex systeem dat meerdere lagen van veiligheidscontroles vereist om ervoor te zorgen dat alleen geldige betalingen worden gedaan. De drie documenten waarnaar ik eerder heb gelinkt, schetsen hoe de browser de Payment Request API volledig implementeert, hoe a website het JSON-manifestbestand implementeert en hoe een Android-app om kan gaan met de intentie die door het betalingsverzoek wordt verzonden API. Hier is een stroomdiagram dat het algemene proces schetst dat ik hierboven heb samengevat:

Betalingsstroomdiagram. Bron: Rouslan Solomakhin

Zoals u kunt zien, zijn er hier veel stappen nodig. Al deze wijzigingen zullen worden afgehandeld door ontwikkelaars van online verkoperswebsites, Android-bankieren/krediet kaartapps en ontwikkelaars van webbrowsers, zodat een eindgebruiker waarschijnlijk geen idee heeft wat er werkelijk aan de hand is hier. Maar weet dat het eindresultaat is dat uw online betalingen een stuk eenvoudiger worden als alle partijen erbij betrokken zijn implementeren van deze veranderingen, die dankzij de standaardisatie-inspanningen van de Web Payments Working Group hopelijk zullen gebeuren realiteit.


De geschiedenis achter de Payment Request API

Het World Wide Web Consortium (afgekort W3C) werd in 1994 opgericht om platformen te ontwikkelen standaarden waarmee alle websites en hun gebruikers kunnen profiteren van intercompatibiliteit samenhang. Om de groeiende fragmentatie van internetbetalingen aan te pakken, heeft het W3C de Werkgroep Webbetalingen in 2015 om bepaalde aspecten van de online betalingsstroom te standaardiseren. Daarna begon het werk onder alle leden van de Web Payments Working Group om manieren te vinden om de manier waarop bestaande online betalingssystemen werken te verbeteren.

De groep kwam met de Betalingsverzoek-API, een verzameling methoden waarmee websites betaalmethoden kunnen gebruiken zonder de betaalmethode in hun site te integreren. Webbrowsers moeten worden bijgewerkt om de API te ondersteunen, maar het moeilijkere deel komt voort uit online verkopers aan boord krijgen. Daartoe leden van de werkgroep kwam met een voorstel over hoe websites identificatiegegevens kunnen aanmaken om te definiëren welke betaalmethoden zij ondersteunen. Hierbij wordt een Payment Manifest JSON-bestand gemaakt dat machinaal leesbaar is (de Payment Method Identifier). Het moet door de browser worden gelezen, zodat de Payment Request API kan identificeren of de gebruiker een of meer van de applicaties heeft die overeenkomen met de ondersteunde betalingsmethoden die in de JSON zijn geïdentificeerd bestand. Deze implementatie is geïnspireerd op die van Google Protocol voor digitale activakoppelingen Dit is de manier waarop websites u omleiden van hun mobiele site naar hun applicatie als u deze al hebt geïnstalleerd.

Na veel intern heen en weer door de groep dienden uiteindelijk op 25 november 2016 Zach Koch van Google en Dapeng Liu van Alibaba een eerste concept van het Betaalmethodenmanifest om het standaardisatieproces voor betalingsmethode-identificatoren te starten waarmee alle leden konden instemmen. Uiteindelijk leden van de werkgroep persoonlijk ontmoet in Chicago tussen 23 en 24 maart om de Payment Request API, het Payment Manifest Proposal en meer uit te schakelen. De Werkgroep gestemd om formeel aan te nemen een nieuwe versie van het Betalingsmanifestvoorstel (versie 2), en dat is waar we vandaag staan.


Ondersteuning voor de Payment Request API

Op 10 mei is er nu ondersteuning voor Android-betaalapps van derden standaard ingeschakeld in Chromium sinds de vereiste voor het webbetalingsmanifest is goedgekeurd in de blink-dev branch (Blink is de naam van de weergave-engine die door Chrome wordt gebruikt). Houd er rekening mee dat deze functie al maanden in Chrome wordt getest, maar pas sinds kort lijkt het erop dat de groep klaar is om hiermee verder te gaan. Deze functie wordt verzonden alle platforms/versies van Chromium behalve de Android Webview (die geen gebruikersinterface heeft en dus de Payment Request API niet kan implementeren).

Pas na maanden van werk achter de schermen gaan we nu de voordelen zien van waar de Web Payments Working Group aan heeft gewerkt. Op Google I/O zal het bedrijf waarschijnlijk aankondigen dat Google Chrome wordt geleverd met de Payment Request API ingeschakeld, en Zach Koch vermeldde eerder zal donderdag zijn lezing geven over hoe externe betalingsproviders de API kunnen ondersteunen door Payment Manifest JSON te bouwen bestanden.

Andere browsers werken ook aan het toevoegen van ondersteuning voor de Payment Request API. Mozilla en Samsung hebben echter publieke steun uitgesproken voor het toevoegen van de API volgens Googler Rouslan Solomakhin er is nog geen woord over of Microsoft's Edge-browser of Apple's Safari ondersteuning zullen toevoegen. We moeten er rekening mee houden dat Microsoft dat wel is de Payment Request API voor Universal Windows Platform (UWP)-apps al aan het testen en bij Minstens één bank heeft al steun geïmplementeerd (Monzo) in hun app.

Wat betreft andere online verkopers en Android-applicaties die deze nieuwe betalingsspecificatie zullen ondersteunen, aldus Googler Zach Koch:

Het aantal ‘betaalmethodeproviders’ dat deze specificatie zou moeten implementeren, is vrij klein (honderden), en op dit moment werken we alleen rechtstreeks met een zeer kleine subset daarvan (<5) om te testen de wateren. Als we in een situatie terecht zouden komen waarin we een van de velden moesten veranderen, denk ik dat we dat gemakkelijk en zonder veel (of helemaal geen) interoperabiliteitsrisico zouden kunnen doen. Al onze vroege partners zijn zich ervan bewust dat deze specificaties kunnen veranderen en vinden dat prima.

Het uitrollen hiervan is van cruciaal belang om andere spelers te laten deelnemen aan het PR-ecosysteem, tenminste op Android. Ik zou liever niet de volledige propriëtaire route volgen om native Android-apps in te schakelen. We hebben de voetafdruk hiervan bewust klein gehouden om ruimte te laten voor groei en geavanceerdere gebruiksscenario's.

We kunnen dus zien dat, hoewel Google baanbrekend werk verricht op het gebied van de ondersteuning van de Payment Request API, het zal nog enige tijd duren voordat we deze nieuwe manier van betalen echt zijn weg naar alle browsers zien vinden, alle online verkopers en alle applicaties. Persoonlijk ben ik erg enthousiast om te zien dat de Payment Request API door Google wordt ondersteund. Het e-commerce-ecosysteem is al jaren onnodig gefragmenteerd met betaalmethoden, en als deze nieuwe API dat ook zal doen Beteken dat ik nooit meer mijn creditcardgegevens handmatig in een website hoef in te voeren, dan ben ik er helemaal voor Het.


Wat vind jij van deze aankomende standaard? Laat het horen in de reacties en laat ons je mening weten!