Google skal kunngjøres under Google I/O, og tar offisielt i bruk APIen for betalingsforespørsel i Chrome, slik at du kan betale med tredjepartsapper.
Skal annonseres på den kommende Google I/O-utviklerkonferansen vil Payment Request API revolusjonere måten vi foretar nettbetalinger på våre mobile enheter. Google Chrome-brukere på Android trenger ikke lenger å gå gjennom lange betalingsprosesser som involverer å legge inn kredittkortinformasjonen eller logge på PayPal. I stedet gjør API-en det mulig for nettstedutviklere å sende intensjoner til støttede tredjeparts betalingsapplikasjoner for å foreta en betaling. I motsetning til mange av de andre overraskelser som Google har i vente for oss, det er allerede massevis av offentlig informasjon om hvordan akkurat denne nye måten å betale på vil fungere. Vi har dykket ned i alle disse dokumentene for å gi deg litt informasjon før Googles offisielle kunngjøring denne uken.
Gjør betalinger enklere med Payment Request API
La oss først oppsummere hvordan betalinger for øyeblikket håndteres i nettlesere. Når du går til betalingssiden til en nettforhandler, blir du bedt om å legge inn betalingsinformasjonen din. Du kan enten legge til et kredittkort som støttes av selgeren eller bruke en integrert tjeneste som PayPal for å fullføre transaksjonen. Nå, med mindre du allerede har lagret kredittkortinformasjonen din på nettstedet (som mange er motvillige til å gjøre) eller allerede er logget inn på PayPal kan det være vanskelig å stå opp, gå til lommeboken, finne kortet ditt, og deretter angi kortnummer, utløpsdato og sikkerhet kode. Hver eneste gang du ønsker å foreta et kjøp på en ny nettside, må du gå gjennom en eller annen variant av denne prosessen. For de av oss som
Ulike betalingssider for selgere på nett
Mange kredittkort- og bankinstitusjoner har applikasjoner tilgjengelig i Google Play-butikken. Siden vi allerede bruker disse applikasjonene til å overvåke våre finansielle kontoer, hvorfor kan vi ikke bruke dem til å autentisere betalinger? Det er akkurat tankeprosessen bak Web Payments Working Group, som består av medlemmer som Google, Mozilla, Samsung, Alibaba, Microsoft og flere. Denne gruppen har jobbet bak kulissene for å gjøre det introdusere et nytt API kalt Payment Request API og en ny nettstandard definert i betalingsmanifestforslaget for å lette kommunikasjonen mellom nettlesere og nettforhandlere slik at netthandleren kan bruke eksisterende applikasjoner på en sluttbrukers enhet for å håndtere betalinger.
Hvordan det fungerer
For å utføre denne oppgaven, nettlesere må støtte Payment Request API, må netthandlere støtte API ved å implementere det som kalles en Identifikator for betalingsmåte, og Android-applikasjoner behov for å implementere nye tjenester. Uten å gå for mye i detalj vil jeg kort forklare hva som skjer under kasseprosessen.
Forutsatt at nettleseren din støtter Payment Request API (mer om det senere), vil du ha muligheten til å betale når du navigerer til en netthandlers betalingsside med en av deres støttede betalingsbehandlere (kredittkort/PayPal/etc.) Når du trykker på knappen for å foreta et kjøp (for eksempel på eksempelsiden nedenfor som brukes av Googlere til å test Payment Request API), så sender Payment Request API en Android-intensjon til den støttede betalingsapplikasjonen for at den appen skal autentisere brukerens innbetaling.
La oss si at vår hypotetiske kredittkortapplikasjon installert på en hypotetisk Android-enhet heter Bob Pay. Bob Pay vil legge til følgende i AndroidManifest.xml-filen:
"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>
Når en hensikt sendes rettet mot denne hypotetiske kredittkortapplikasjonen, startes denne applikasjonens tjeneste. All informasjon som er nødvendig for at vår hypotetiske Bob Pay-app skal forstå hva som kjøpes, fra hvilken leverandør og for hvor mye penger som er inkludert i intensjonens tillegg:
Bundle extras = new Bundle();
extras.putString("key", "value");
intent.putExtras(extras);
Når Bob Pay har validert betalingen, mottar Payment Request API denne informasjonen i en annen hensikt sendt av 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.
Men hvordan vet nettforhandleren som støtter Bob Pay at Bob Pay som er installert på telefonen din, er den ekte Bob Pay, og ikke noe skadelig programvare ment å begå svindel? Den oppnår dette ved å lage en JSON-fil for betalingsmetodemanifestidentifikasjon som er maskinlesbar av nettleseren.
{
<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>,
}
]
}
Inne i denne JSON-filen er en signatur som brukes til å bekrefte integriteten til applikasjonen installert på enheten din som hevder å være ekte Bob Pay. Hvis denne signatursjekken mislykkes, vil ikke Bob Pay bli akseptert som betalingsbehandler.
Selvfølgelig overforenkler jeg den generelle prosessen som er involvert her. Betalinger er et utrolig komplekst system som krever flere lag med sikkerhetskontroller for å sikre at kun gyldige betalinger utføres. De tre dokumentene jeg lenket til tidligere skisserer hvordan nettleseren fullt ut implementerer Payment Request API, hvordan en nettstedet implementerer JSON-manifestfilen, og hvordan en Android-app kan håndtere intensjonen sendt av betalingsforespørselen API. Her er et flytskjema som skisserer den generelle prosessen som jeg oppsummerte ovenfor:
Betalingsflytskjema. Kilde: Rouslan Solomakhin
Som du kan se, er det mange trinn involvert her. Alle disse endringene vil bli håndtert av utviklere av nettbutikknettsteder, Android-bank/kreditt kortapper og utviklere av nettlesere, slik at en sluttbruker sannsynligvis ikke har noen anelse om hva som egentlig skjer her. Men bare vit at sluttresultatet er at nettbetalingene dine blir mye enklere hvis alle involverte parter implementere disse endringene, som takket være standardiseringsinnsatsen til Web Payments Working Group forhåpentligvis vil bli det virkelighet.
Historien bak Payment Request API
World Wide Web Consortium (forkortet W3C) ble grunnlagt i 1994 for å utvikle plattformen standarder som vil tillate alle nettsteder og deres brukere å dra nytte av interkompatibilitet og konsistens. For å møte den økende fragmenteringen av nettbetalinger, dannet W3C Web Payments Working Group i 2015 for å standardisere noen aspekter av betalingsflyten på nett. Deretter startet arbeidet blant alle medlemmene av Web Payments Working Group for å finne måter å forbedre måten eksisterende online betalingssystemer fungerer på.
Gruppen kom opp med Payment Request API, en samling metoder for å tillate nettsteder å bruke betalingsmåter uten å integrere betalingsmetoden på nettstedet. Nettlesere må oppdateres for å støtte API, men den vanskeligere delen stammer fra få netthandlere om bord. For det formål medlemmer av arbeidsgruppen kom med et forslag om hvordan nettsteder kan opprette identifikatorer for å definere hvilke betalingsmåter de støtter. Dette innebærer å lage en betalingsmanifest JSON-fil som er maskinlesbar (betalingsmetodeidentifikatoren) – den må leses av nettleseren slik at Payment Request API kan identifisere om brukeren har en eller flere av applikasjonene som tilsvarer de støttede betalingsmetodene identifisert i JSON fil. Denne implementeringen er inspirert av Googles Digital Asset Links Protocol som er hvordan nettsteder omdirigerer deg fra mobilsiden til applikasjonen deres hvis du allerede har den installert.
Etter mye internt frem og tilbake av gruppen, sendte Zach Koch fra Google og Dapeng Liu fra Alibaba til slutt den 25. november 2016 en første utkast til betalingsmåtemanifestet for å starte standardiseringsprosessen for betalingsmåteidentifikatorer som alle medlemmer kan godta. Etter hvert medlemmer av arbeidsgruppen møtte personlig i Chicago mellom 23. og 24. mars for å hash ut Payment Request API, Payment Manifest Proposal og mer. Arbeidsgruppen stemte for å formelt vedta en ny versjon av betalingsmanifestforslaget (versjon 2), som er der vi står i dag.
Støtte for Payment Request API
10. mai er støtte for tredjeparts Android-betalingsapper nå aktivert som standard i Chromium siden forutsetningen for nettbetalingsmanifestet ble godkjent i blink-dev-grenen (Blink er navnet på gjengivelsesmotoren som brukes av Chrome). Merk at denne funksjonen har vært testet i Chrome i flere måneder, men det er først nylig at det ser ut til at gruppen er klar til å gå videre med dette. Denne funksjonen sendes videre alle plattformer/versjoner av Chromium bortsett fra Android Webview (som ikke har et brukergrensesnitt og dermed ikke kan implementere Payment Request API).
Først etter måneder med arbeid bak kulissene, skal vi nå se fordelene med det Web Payments Working Group har jobbet med. På Google I/O vil selskapet sannsynligvis kunngjøre at Google Chrome vil sendes med Payment Request API aktivert, og Zach Koch nevnte tidligere vil holde sitt foredrag på torsdag om hvordan tredjeparts betalingsleverandører kan støtte API ved å bygge betalingsmanifest JSON filer.
Andre nettlesere jobber også med å legge til støtte for Payment Request API. Mozilla og Samsung har imidlertid uttrykt offentlig støtte for å legge til API ifølge Googler Rouslan Solomakhin det er foreløpig ingen ord om hvorvidt Microsofts Edge-nettleser eller Apples Safari vil legge til støtte. Vi bør merke oss at Microsoft er det tester allerede Payment Request API for Universal Windows Platform (UWP)-apper og kl minst én bank har allerede implementert støtte (Monzo) i appen deres.
Når det gjelder andre nettbutikker og Android-applikasjoner som vil støtte denne nye betalingsspesifikasjonen, ifølge Googler Zach Koch:
Antallet "betalingsmetodeleverandører" som trenger å implementere denne spesifikasjonen er ganske lite (hundrevis), og akkurat nå jobber vi bare direkte med en veldig liten delmengde av disse (<5) for å teste vannene. Hvis vi skulle komme inn i en situasjon der vi trengte å endre et av feltene, tror jeg vi kunne gjort det enkelt og uten mye (om noen) interoperasjonsrisiko. Alle våre tidlige partnere er klar over at denne spesifikasjonen kan endre seg og er i orden med det.
Å få dette rullet ut er avgjørende for å la andre spillere delta i PR-økosystemet, i det minste på Android. Jeg foretrekker virkelig å ikke gå ned hele den proprietære ruten for å aktivere native apper for Android. Vi har holdt fotavtrykket på denne med vilje liten for å gi rom for vekst og mer avansert bruk.
Dermed kan vi se at selv om Google er banebrytende støtte for Payment Request API, det vil ta litt tid før vi virkelig ser denne nye måten å betale på finne veien inn i alle nettlesere, alle nettbutikker og alle applikasjoner. Jeg personlig er veldig glad for å se at Payment Request API blir støttet av Google. E-handelsøkosystemet har vært unødvendig fragmentert med betalingsmetoder i årevis, og hvis dette nye API-et vil betyr at jeg aldri trenger å legge inn kredittkortinformasjonen min manuelt på et nettsted igjen, da er jeg alt for den.
Hva synes du om denne kommende standarden? Lytt av i kommentarene og gi oss din mening!