Google službeno usvaja Payment Request API, što vam omogućuje plaćanje aplikacijama trećih strana u Chromeu

Google će službeno usvojiti API zahtjeva za plaćanje u Chromeu, što će biti najavljeno tijekom Google I/O-a, što vam omogućuje plaćanje aplikacijama trećih strana.

Bit će najavljeno na nadolazećoj konferenciji za razvojne programere Google I/O, Payment Request API će revolucionirati način na koji vršimo online plaćanja na našim mobilnim uređajima. Korisnici preglednika Google Chrome na Androidu više neće morati prolaziti kroz dugotrajne procese naplate koji uključuju unos podataka o kreditnoj kartici ili prijavu na PayPal. Umjesto toga, API omogućuje programerima web stranica da pošalju namjere podržanim aplikacijama za plaćanje trećih strana kako bi izvršili plaćanje. Za razliku od mnogih od ostala iznenađenja koje Google sprema za nas, već postoji gomila javnih informacija o tome kako će ovaj novi način plaćanja točno funkcionirati. Zaronili smo u sve te dokumente kako bismo vam donijeli neke informacije prije Googleove službene objave ovog tjedna.


Olakšavanje plaćanja uz Payment Request API

Prvo rezimiramo kako se plaćanja trenutno obrađuju u web preglednicima. Kada odete na stranicu za naplatu bilo kojeg online trgovca, od vas se traži da unesete svoje podatke o plaćanju. Možete dodati kreditnu karticu koju podržava trgovac ili koristiti integriranu uslugu kao što je PayPal da dovršite svoju transakciju. Sada, osim ako već niste spremili podatke o svojoj kreditnoj kartici na web mjesto (što mnogi ljudi nerado čine) ili ste već prijavljeni u PayPal, može biti gnjavaža ustati, otići do novčanika, pronaći svoju karticu, zatim unijeti broj kartice, datum isteka i sigurnost kodirati. Svaki put kada želite obaviti kupnju na novoj web stranici, morate proći kroz neku varijaciju ovog postupka. Za nas koji vole loviti ponude, ovo može vrlo brzo postati dosadno.

Stranice za naplatu raznih online trgovaca

Mnoge kreditne kartice i bankarske institucije imaju aplikacije dostupne u Trgovini Google Play. Budući da već koristimo ove aplikacije za nadzor naših financijskih računa, zašto ih ne možemo koristiti za provjeru autentičnosti plaćanja? Upravo to je proces razmišljanja iza Radne grupe za web plaćanja, koju čine članovi kao što su Google, Mozilla, Samsung, Alibaba, Microsoft i drugi. Ova grupa je radila iza kulisa kako bi predstaviti novi API pod nazivom Payment Request API i novi online standard definiran u Prijedlogu manifesta plaćanja kako bi se olakšala komunikacija između web preglednika i mrežne trgovce kako bi mrežni trgovac mogao koristiti postojeće aplikacije na uređaju krajnjeg korisnika kako bi upravljao plaćanjima.

Kako radi

Kako bi izvršili ovaj zadatak, web preglednici mora podržavati API zahtjeva za plaćanje, mrežni trgovci trebaju podržati API implementacijom onoga što se naziva a Identifikator načina plaćanja, i Android aplikacije potrebno implementirati nove usluge. Ne ulazeći u previše detalja, ukratko ću objasniti što se događa tijekom procesa naplate.

Pod pretpostavkom da vaš web preglednik podržava Payment Request API (više o tome kasnije), kada prijeđete na stranicu plaćanja online trgovca, imat ćete opciju plaćanja s jednim od njihovih podržanih obrađivača plaćanja (kreditna kartica/PayPal/itd.) Kada dodirnete gumb za kupnju (kao na primjeru stranice u nastavku koju Googleovi zaposlenici koriste za testirati Payment Request API), tada Payment Request API šalje Android namjeru podržanoj aplikaciji za plaćanje kako bi ta aplikacija provjerila autentičnost korisnika plaćanje.

 Recimo da se naša hipotetska aplikacija za kreditne kartice instalirana na hipotetskom Android uređaju zove Bob Pay. Bob Pay će dodati sljedeće u svoju datoteku 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>

Kada se pošalje namjera koja cilja ovu hipotetsku aplikaciju za kreditnu karticu, tada se pokreće usluga ove aplikacije. Sve informacije potrebne našoj hipotetskoj aplikaciji Bob Pay kako bi razumjela što se kupuje, od kojeg dobavljača i za koliko novca sadržano je u dodacima namjere:

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

Nakon što Bob Pay potvrdi plaćanje, API zahtjeva za plaćanje prima ove informacije u drugoj namjeri koju šalje 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.

Ali kako mrežni trgovac koji podržava Bob Pay zna da je Bob Pay instaliran na vašem telefonu pravi Bob Pay, a ne neki zlonamjerni softver namijenjen za prijevaru? To postiže stvaranjem JSON datoteke identifikatora manifesta načina plaćanja koju preglednik strojno čita.

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

Unutar ove JSON datoteke nalazi se potpis koji se koristi za provjeru integriteta aplikacije instalirane na vašem uređaju koja tvrdi da je stvaran Bob Pay. Ako ova provjera potpisa ne uspije, tada Bob Pay neće biti prihvaćen kao voditelj plaćanja.

Naravno, uvelike, uvelike, uvelike, previše pojednostavljujem opći proces koji je ovdje uključen. Plaćanja su nevjerojatno složen sustav koji zahtijeva višestruke slojeve sigurnosnih provjera kako bi se osiguralo da se vrše samo važeća plaćanja. Tri dokumenta s kojima sam se ranije povezao opisuju kako preglednik u potpunosti implementira API zahtjeva za plaćanje, kako a web-mjesto implementira datoteku manifesta JSON i kako Android aplikacija može obraditi namjeru koju šalje Zahtjev za plaćanje API. Evo dijagrama toka koji opisuje opći proces koji sam gore sažeo:

Dijagram toka plaćanja. Izvor: Rouslan Solomakhin

Kao što vidite, ovdje je uključeno mnogo koraka. Svim ovim promjenama bavit će se programeri web stranica za online trgovce, Android bankarstvo/kreditiranje kartice i programeri web preglednika tako da krajnji korisnik vjerojatno neće imati pojma što se zapravo događa ovdje. Ali samo znajte da je krajnji rezultat da će vaša online plaćanja postati puno jednostavnija ako su uključene sve strane implementirati ove promjene, što će, nadamo se, postati zahvaljujući naporima Radne skupine za web plaćanja na standardizaciji stvarnost.


Povijest iza API-ja zahtjeva za plaćanje

World Wide Web Consortium (skraćeno W3C) osnovan je 1994. godine kako bi razvio platformu standardi koji bi omogućili svim web stranicama i njihovim korisnicima da imaju koristi od međusobno kompatibilnosti i dosljednost. Kako bi se pozabavila rastućom fragmentacijom web plaćanja, W3C je osnovao Radna skupina za web plaćanja u 2015 kako bi se standardizirali neki aspekti tijeka online plaćanja. Nakon toga, započeo je rad među svim članovima Radne grupe za web plaćanja kako bi se pronašli načini za poboljšanje načina na koji postojeći sustavi za online plaćanje funkcioniraju.

Grupa je smislila API zahtjeva za plaćanje, zbirka metoda koje web stranicama omogućuju korištenje metoda plaćanja bez integriranja metode plaćanja na njihovu stranicu. Web preglednike je potrebno ažurirati kako bi podržavali API, ali teži dio proizlazi iz uključivanje online trgovaca. U tu svrhu članovi Radne skupine došao s prijedlogom o tome kako web stranice mogu stvoriti identifikatore za definiranje koje metode plaćanja podržavaju. To uključuje stvaranje JSON datoteke Manifesta plaćanja koja je strojno čitljiva (Identifikator načina plaćanja) - treba je pročitati preglednik kako bi API zahtjeva za plaćanje može identificirati ima li korisnik jednu ili više aplikacija koje odgovaraju podržanim metodama plaćanja identificiranim u JSON-u datoteka. Ova implementacija inspirirana je Googleom Digital Asset Links Protocol što je način na koji vas web stranice preusmjeravaju sa svoje mobilne stranice na svoju aplikaciju ako je već imate instaliranu.

Nakon mnogo internih trzavica grupe, na kraju su 25. studenog 2016. Zach Koch iz Googlea i Dapeng Liu iz Alibabe podnijeli početni nacrt Manifesta načina plaćanja kako bismo započeli proces standardizacije za identifikatore načina plaćanja s kojim bi se svi članovi mogli složiti. Na kraju, članovi Radne skupine osobno susreli u Chicagu između 23. i 24. ožujka kako biste raspršili API zahtjeva za plaćanje, prijedlog manifesta plaćanja i više. Radna skupina glasovali za službeno usvajanje nova verzija prijedloga manifesta plaćanja (verzija 2), gdje se danas nalazimo.


Podrška za API zahtjeva za plaćanje

Od 10. svibnja dostupna je podrška za Android aplikacije za plaćanje trećih strana omogućeno prema zadanim postavkama u Chromiumu budući da je preduvjet manifesta web plaćanja odobren u grani blink-dev (Blink je naziv mehanizma za iscrtavanje koji koristi Chrome). Imajte na umu da se ova značajka testira u Chromeu mjesecima, ali tek nedavno se čini da je grupa spremna krenuti s tim. Ova će značajka biti isporučena sve platforme/verzije Chromiuma osim Android Webviewa (koje nema korisničko sučelje i stoga ne može implementirati API zahtjeva za plaćanje).

Tek nakon mjeseci rada iza kulisa, sada ćemo vidjeti prednosti onoga na čemu je radila Radna grupa za web plaćanja. Na Google I/O, kompanija će vjerojatno objaviti da će se Google Chrome isporučivati ​​s omogućenim Payment Request API, a Zach Koch je spomenuo ranije će u četvrtak održati govor o tome kako pružatelji usluga plaćanja treće strane mogu podržati API izgradnjom Payment Manifest JSON datoteke.

Drugi preglednici također rade na dodavanju podrške za API zahtjeva za plaćanje. Mozilla i Samsung izrazili su javnu potporu za dodavanje API-ja prema Googleru Rouslan Solomakhin još nema riječi hoće li Microsoftov preglednik Edge ili Appleov Safari dodati podršku. Moramo napomenuti da je Microsoft već testira Payment Request API za aplikacije Universal Windows Platform (UWP). i kod najmanje jedna banka je već implementirala podršku (Monzo) u njihovoj aplikaciji.

Što se tiče drugih online trgovaca i Android aplikacija koje će podržavati ovu novu specifikaciju plaćanja, prema Zachu Kochu, zaposleniku Googlea:

Broj "pružatelja načina plaćanja" koji bi trebali implementirati ovu specifikaciju prilično je mali (stotine), a trenutno radimo izravno samo s vrlo malim podskupom njih (<5) za testiranje vode. Ako bismo naišli na situaciju u kojoj bismo morali promijeniti jedno od polja, mislim da bismo to mogli učiniti lako i bez velikog (ako uopće postoji) rizika međudjelovanja. Svi naši prvi partneri svjesni su da se ova specifikacija može promijeniti i slažu se s tim.

Uvođenje ovoga ključno je za dopuštanje drugim igračima da sudjeluju u PR ekosustavu, barem na Androidu. Stvarno radije ne bih išao punim vlasničkim putem da omogućim izvorne aplikacije za Android. Otisak na ovome smo namjerno smanjili kako bismo ostavili prostora za rast i naprednije slučajeve upotrebe.

Dakle, možemo vidjeti da, iako je Google pionir u podršci za API zahtjeva za plaćanje, proći će neko vrijeme prije nego što uistinu vidimo da se ovaj novi način plaćanja nalazi u svim preglednicima, svi online trgovci i sve aplikacije. Osobno sam vrlo uzbuđen što vidim da Google podržava API zahtjeva za plaćanje. Ekosustav e-trgovine godinama je bespotrebno fragmentiran metodama plaćanja, a ako će ovaj novi API znači da nikad više ne moram ručno unositi podatke o svojoj kreditnoj kartici na web mjesto, onda sam za to.


Što mislite o ovom nadolazećem standardu? Zvučite u komentarima i javite nam svoje mišljenje!