Google oficjalnie przyjmuje interfejs API żądania płatności, umożliwiając płacenie za pomocą aplikacji innych firm w przeglądarce Chrome

Google oficjalnie wdraża interfejs API żądania płatności w przeglądarce Chrome, który ma zostać ogłoszony podczas Google I/O i umożliwi płacenie za pomocą aplikacji innych firm.

Zestaw do ogłoszenia podczas nadchodzącej konferencji programistów Google I/O interfejs Payment Request API zrewolucjonizuje sposób, w jaki dokonujemy płatności online na naszych urządzeniach mobilnych. Użytkownicy przeglądarki Google Chrome na Androidzie nie będą już musieli przechodzić przez długie procesy płatności, obejmujące wprowadzanie danych karty kredytowej lub logowanie się do PayPal. Zamiast tego interfejs API umożliwia twórcom witryn wysyłanie intencji do obsługiwanych aplikacji płatniczych stron trzecich w celu dokonania płatności. W przeciwieństwie do wielu inne niespodzianki jakie przygotował dla nas Google, jest już mnóstwo publicznych informacji na temat tego, jak dokładnie będzie działać ten nowy sposób płatności. Zagłębiliśmy się we wszystkie te dokumenty, aby dostarczyć Ci pewnych informacji przed oficjalnym ogłoszeniem Google w tym tygodniu.


Łatwiejsze dokonywanie płatności dzięki API żądania płatności

Przypomnijmy najpierw, jak obecnie obsługiwane są płatności w przeglądarkach internetowych. Kiedy przejdziesz na stronę kasy dowolnego sprzedawcy internetowego, zostaniesz poproszony o podanie informacji o płatności. Możesz dodać kartę kredytową obsługiwaną przez sprzedawcę lub skorzystać ze zintegrowanej usługi, takiej jak PayPal, aby sfinalizować transakcję. Teraz, chyba że zapisałeś już dane swojej karty kredytowej w witrynie (co wiele osób niechętnie robi) lub jesteś już zalogowany do PayPal, wstanie, przejście do portfela, znalezienie karty, a następnie wprowadzenie numeru karty, daty ważności i zabezpieczeń może być kłopotliwe kod. Za każdym razem, gdy chcesz dokonać zakupu na nowej stronie internetowej, musisz przejść przez pewną odmianę tego procesu. Dla tych z nas, którzy lubię polować na okazje, może to dość szybko stać się denerwujące.

Różne strony realizacji transakcji sprzedawców online

Wiele instytucji obsługujących karty kredytowe i bankowe udostępnia aplikacje w sklepie Google Play. Skoro już używamy tych aplikacji do monitorowania naszych rachunków finansowych, dlaczego nie możemy ich używać do uwierzytelniania płatności? Dokładnie taki jest proces myślowy Grupy Roboczej ds. Płatności Internetowych, składającej się z takich członków, jak Google, Mozilla, Samsung, Alibaba, Microsoft i nie tylko. Aby to osiągnąć, grupa ta pracowała za kulisami wprowadzić nowe API zwane API Żądania Płatności oraz nowy standard internetowy określony we Propozycji Manifestu Płatności w celu ułatwienia komunikacji pomiędzy przeglądarkami internetowymi i sprzedawców internetowych, aby sprzedawca internetowy mógł korzystać z istniejących aplikacji na urządzeniu użytkownika końcowego w celu obsługi płatności.

Jak to działa

Aby zrealizować to zadanie, przeglądarki internetowe musi obsługiwać interfejs API żądania płatności, sprzedawcy internetowi muszą obsługiwać interfejs API, wdrażając tzw Identyfikator metody płatnościi aplikacje na Androida konieczność wdrożenia nowych usług. Bez wchodzenia w szczegóły, pokrótce wyjaśnię, co dzieje się podczas procesu realizacji transakcji.

Zakładając, że Twoja przeglądarka internetowa obsługuje interfejs API żądania płatności (więcej o tym później), po przejściu do strony płatności sprzedawcy internetowego będziesz mieć możliwość zapłaty za pomocą jednego z obsługiwanych przez nich podmiotów zajmujących się płatnościami (karta kredytowa/PayPal/itp.). Po dotknięciu przycisku w celu dokonania zakupu (np. na przykładowej stronie poniżej używanej przez pracowników Google do przetestuj interfejs API żądania płatności), wówczas interfejs API żądania płatności wysyła intencję systemu Android do obsługiwanej aplikacji płatniczej, aby ta aplikacja mogła uwierzytelnić użytkownika Zapłata.

 Załóżmy, że nasza hipotetyczna aplikacja do obsługi kart kredytowych zainstalowana na hipotetycznym urządzeniu z Androidem nazywa się Bob Pay. Bob Pay doda do swojego pliku AndroidManifest.xml następujące elementy:

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

Po wysłaniu zamiaru skierowanego do tej hipotetycznej aplikacji karty kredytowej uruchamiana jest usługa tej aplikacji. Wszystkie informacje niezbędne, aby nasza hipotetyczna aplikacja Bob Pay mogła zrozumieć, co jest kupowane, u jakiego sprzedawcy i za ile pieniędzy zawarte są w dodatkach do intencji:

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

Gdy Bob Pay zatwierdzi płatność, API żądania płatności otrzyma te informacje w innej intencji wysłanej przez 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.

Ale skąd sprzedawca internetowy obsługujący Bob Pay wie, że Bob Pay zainstalowany na Twoim telefonie to prawdziwy Bob Pay, a nie jakieś złośliwe oprogramowanie mające na celu popełnienie oszustwa? Osiąga to poprzez utworzenie pliku JSON z identyfikatorem manifestu metody płatności, który może zostać odczytany maszynowo przez przeglądarkę.

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

W tym pliku JSON znajduje się podpis używany do weryfikacji integralności aplikacji zainstalowanej na Twoim urządzeniu, która podszywa się pod prawdziwy Bob Pay. Jeśli weryfikacja podpisu nie powiedzie się, Bob Pay nie zostanie zaakceptowany jako podmiot obsługujący płatności.

Oczywiście ogromnie, ogromnie, ogromnie upraszczam ogólny proces, który ma tu miejsce. Płatności to niezwykle złożony system, który wymaga wielu warstw kontroli bezpieczeństwa, aby mieć pewność, że dokonywane są tylko prawidłowe płatności. Trzy dokumenty, do których podlinkowałem wcześniej, opisują, w jaki sposób przeglądarka w pełni implementuje interfejs API żądania płatności, w jaki sposób a witryna internetowa implementuje plik manifestu JSON oraz sposób, w jaki aplikacja na Androida może obsłużyć intencję wysłaną przez żądanie płatności API. Oto schemat blokowy przedstawiający ogólny proces, który podsumowałem powyżej:

Schemat płatności. Źródło: Rouslan Solomachin

Jak widać, jest tu wiele kroków. Wszystkimi tymi zmianami zajmą się twórcy witryn sklepów internetowych, bankowości/kredytów na Androida aplikacje kartowe i twórcy przeglądarek internetowych, więc użytkownik końcowy prawdopodobnie nie będzie miał pojęcia, co się naprawdę dzieje Tutaj. Ale pamiętaj, że efektem końcowym będzie to, że Twoje płatności online staną się o wiele prostsze, jeśli zaangażują się w to wszystkie strony wdrożyć te zmiany, które, miejmy nadzieję, staną się dzięki wysiłkom standaryzacyjnym Grupy Roboczej ds. Płatności Internetowych rzeczywistość.


Historia interfejsu API żądania płatności

Konsorcjum World Wide Web (w skrócie W3C) zostało założone w 1994 roku w celu rozwijania platformy standardy, które umożliwiłyby wszystkim stronom internetowym i ich użytkownikom korzystanie z interkompatybilności i konsystencja. Aby zaradzić rosnącej fragmentacji płatności internetowych, W3C utworzyła Grupa Robocza ds. Płatności Internetowych w 2015 r w celu ujednolicenia niektórych aspektów przepływu płatności online. Następnie wszyscy członkowie Grupy Roboczej ds. Płatności Internetowych rozpoczęli prace nad znalezieniem sposobów ulepszenia działania istniejących systemów płatności online.

Grupa wymyśliła API żądania płatności, zbiór metod umożliwiających witrynom internetowym korzystanie z metod płatności bez integrowania metody płatności ze swoją witryną. Przeglądarki internetowe muszą zostać zaktualizowane, aby obsługiwały interfejs API, ale trudniejsza część wynika z pozyskiwanie sprzedawców internetowych na pokład. W tym celu członkowie Grupy Roboczej wpadł na propozycję o tym, jak strony internetowe mogą tworzyć identyfikatory w celu określenia obsługiwanych metod płatności. Wiąże się to z utworzeniem pliku JSON manifestu płatności, który można odczytać maszynowo (identyfikator metody płatności) – musi on zostać odczytany przez przeglądarkę, aby Payment Request API może zidentyfikować, czy użytkownik posiada jedną lub więcej aplikacji odpowiadających obsługiwanym metodom płatności określonym w JSON plik. Ta implementacja jest inspirowana rozwiązaniami Google Protokół Digital Asset Links w ten sposób witryny przekierowują Cię ze swoich witryn mobilnych do aplikacji, jeśli już ją masz zainstalowaną.

Po wielu wewnętrznych dyskusjach w grupie ostatecznie 25 listopada 2016 r. Zach Koch z Google i Dapeng Liu z Alibaba przesłali wstępny projekt Manifestu Metod Płatności w celu rozpoczęcia procesu standaryzacji identyfikatorów metod płatności, na który wszyscy członkowie mogliby wyrazić zgodę. Ostatecznie członkowie Grupy Roboczej spotkaliśmy się osobiście w Chicago w dniach 23-24 marca w celu wymieszania API żądania płatności, propozycji manifestu płatności i innych. Grupa Robocza głosowało za formalnym przyjęciem nowa wersja Propozycji Manifestu Płatności (wersja 2), na którym stoimy dzisiaj.


Wsparcie dla API żądania płatności

Od 10 maja dostępna jest już obsługa aplikacji płatniczych innych firm na Androida domyślnie włączone w Chromium, ponieważ warunek wstępny manifestu płatności internetowych został zatwierdzony w gałęzi Blink-dev (Blink to nazwa silnika renderującego używanego przez Chrome). Należy pamiętać, że ta funkcja była testowana w przeglądarce Chrome od miesięcy, ale dopiero niedawno okazało się, że grupa jest gotowa na dalsze prace nad nią. Ta funkcja będzie dostępna wszystkie platformy/wersje Chromium z wyjątkiem Android Webview (który nie ma interfejsu użytkownika i dlatego nie może zaimplementować interfejsu API żądania płatności).

Dopiero po miesiącach pracy za kulisami zobaczymy korzyści płynące z tego, nad czym pracowała Grupa Robocza ds. Płatności Internetowych. Podczas Google I/O firma najprawdopodobniej ogłosi, że przeglądarka Google Chrome będzie dostarczana z włączonym interfejsem Payment Request API, o czym wspomniał Zach Koch wcześniej wygłosi w czwartek wykład na temat tego, jak zewnętrzni dostawcy usług płatniczych mogą wspierać API, budując manifest płatności w formacie JSON akta.

Inne przeglądarki również pracują nad dodaniem obsługi interfejsu API żądania płatności. Mozilli i Samsung wyraziły jednak publiczne poparcie dla dodania interfejsu API według Googlera Rouslan Solomachin nie ma jeszcze informacji, czy przeglądarka Microsoft Edge lub Safari firmy Apple dodadzą obsługę. Warto zauważyć, że Microsoft już testuje interfejs API żądania płatności dla aplikacji platformy uniwersalnej systemu Windows (UWP). i o godz przynajmniej jeden bank wdrożył już wsparcie (Monzo) w swojej aplikacji.

Według Googlera Zacha Kocha, jeśli chodzi o innych sprzedawców internetowych i aplikacje na Androida, które będą obsługiwać tę nową specyfikację płatności:

Liczba „dostawców metod płatności”, którzy musieliby wdrożyć tę specyfikację, jest dość mała (setki), a obecnie pracujemy bezpośrednio tylko z bardzo małym podzbiorem tych (<5), aby przetestować wody. Gdybyśmy rzeczywiście znaleźli się w sytuacji, w której musielibyśmy zmienić jedno z pól, myślę, że moglibyśmy to zrobić łatwo i bez dużego (jeśli w ogóle) ryzyka międzyoperacyjnego. Wszyscy nasi pierwsi partnerzy są świadomi, że ta specyfikacja może ulec zmianie i nie przeszkadza im to.

Wdrożenie tej funkcji ma kluczowe znaczenie, aby inni gracze mogli uczestniczyć w ekosystemie PR, przynajmniej na Androidzie. Naprawdę wolałbym nie korzystać z pełnej, zastrzeżonej ścieżki, aby włączyć natywne aplikacje dla Androida. Celowo ograniczyliśmy obszar tego rozwiązania, aby pozostawić miejsce na rozwój i bardziej zaawansowane przypadki użycia.

Widzimy więc, że chociaż Google jest pionierem w obsłudze API Payment Request, minie trochę czasu, zanim naprawdę zobaczymy, że ten nowy sposób płatności trafi do wszystkich przeglądarek, wszystkich sprzedawców internetowych i wszystkich aplikacji. Osobiście jestem bardzo podekscytowany faktem, że Google obsługuje interfejs API żądania płatności. Ekosystem eCommerce był przez lata niepotrzebnie fragmentowany metodami płatności, a jeśli tak się stanie, to nowe API oznacza, że ​​nigdy więcej nie będę musiał ręcznie wprowadzać danych mojej karty kredytowej na stronie internetowej, więc jestem za To.


Co sądzisz o tym nadchodzącym standardzie? Wyraź swoją opinię w komentarzach i daj nam znać!