Очаква се да бъде обявено по време на Google I/O, Google официално приема Payment Request API в Chrome, което ви позволява да плащате с приложения на трети страни.
Очаква се да бъде обявено на предстоящата конференция за разработчици на Google I/O API за искане на плащане ще революционизира начина, по който извършваме онлайн плащания на нашите мобилни устройства. Вече няма да се налага потребителите на Google Chrome на Android да преминават през дълги процеси на плащане, включващи въвеждане на информация за кредитната им карта или влизане в PayPal. Вместо това API позволява на разработчиците на уебсайтове да изпращат намерения до поддържани приложения за плащане на трети страни, за да извършат плащане. За разлика от много от други изненади които Google е подготвил за нас, вече има много публична информация за това как точно ще работи този нов начин на плащане. Гмурнахме се във всички тези документи, за да ви предоставим малко информация преди официалното съобщение на Google тази седмица.
Извършване на плащания по-лесно с API за искане на плащане
Нека първо обобщим как в момента се обработват плащанията в уеб браузърите. Когато отидете на страницата за плащане на всеки онлайн търговец, ще бъдете помолени да въведете информацията си за плащане. Можете или да добавите кредитна карта, поддържана от търговеца, или да използвате интегрирана услуга като PayPal, за да завършите транзакцията си. Сега, освен ако вече не сте запазили информацията за кредитната си карта на уебсайта (което много хора не желаят да направят) или вече сте влезли в PayPal, може да бъде караница да станете, да отидете до портфейла си, да намерите вашата карта, след това да въведете номера на картата, датата на изтичане и сигурността код. Всеки път, когато искате да направите покупка на нов уебсайт, трябва да преминете през някакъв вариант на този процес. За тези от нас, които обичат да търсят сделки, това може да стане досадно доста бързо.
Различни страници за плащане на онлайн търговци
Много кредитни карти и банкови институции имат налични приложения в Google Play Store. След като вече използваме тези приложения за наблюдение на нашите финансови сметки, защо не можем да ги използваме за удостоверяване на плащания? Точно това е мисловният процес зад работната група за уеб плащания, съставена от членове като Google, Mozilla, Samsung, Alibaba, Microsoft и др. Тази група работи зад кулисите, за да въведе нов API, наречен API за заявка за плащане и нов онлайн стандарт, дефиниран в Предложението за платежен манифест, за да се улесни комуникацията между уеб браузърите и онлайн търговци, така че онлайн търговецът да може да използва съществуващи приложения на устройството на крайния потребител, за да обработва плащания.
Как работи
За да изпълнят тази задача, уеб браузърите трябва да поддържа API за заявка за плащане, онлайн търговците трябва да поддържат API чрез прилагане на това, което се нарича a Идентификатор на метода на плащанеи приложения за Android необходимост от въвеждане на нови услуги. Без да навлизам в много подробности, ще обясня накратко какво се случва по време на процеса на плащане.
Ако приемем, че вашият уеб браузър поддържа API за заявка за плащане (повече за това по-късно), когато отидете до страницата за плащане на онлайн търговец, ще имате опцията да платите с един от поддържаните им манипулатори на плащания (кредитна карта/PayPal/и т.н.), когато докоснете бутона, за да направите покупка (като примерната страница по-долу, използвана от служители на Google за тествайте API за заявка за плащане), тогава API за заявка за плащане изпраща намерение за Android към поддържаното приложение за плащане, за да може това приложение да удостовери автентичността на потребителя плащане.
Да приемем, че нашето хипотетично приложение за кредитна карта, инсталирано на хипотетично устройство с Android, се нарича Bob Pay. Bob Pay ще добави следното към своя 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>
Когато се изпрати намерение, насочено към това хипотетично приложение за кредитна карта, тогава се стартира услугата на това приложение. Цялата информация, необходима на нашето хипотетично приложение Bob Pay, за да разбере какво се купува, от кой продавач и за колко пари се съдържа в екстрите на намерението:
Bundle extras = new Bundle();
extras.putString("key", "value");
intent.putExtras(extras);
След като Bob Pay потвърди плащането, тогава API за заявка за плащане получава тази информация в друго намерение, изпратено от 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.
Но как онлайн търговецът, който поддържа Bob Pay, знае, че Bob Pay, инсталиран на вашия телефон, е истинският Bob Pay, а не някакъв злонамерен софтуер, предназначен да извърши измама? Той постига това чрез създаване на JSON файл с идентификатор на манифеста на метода на плащане, който е машинно четим от браузъра.
{
<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>,
}
]
}
В рамките на този JSON файл има подпис, който се използва за проверка на целостта на приложението, инсталирано на вашето устройство, което твърди, че е истински Боб Пей. Ако тази проверка на подписа е неуспешна, тогава Bob Pay няма да бъде приет като оператор на плащане.
Разбира се, аз много, много, много опростявам общия процес, включен тук. Плащанията са невероятно сложна система, която изисква множество нива на проверки за сигурност, за да се гарантира, че се извършват само валидни плащания. Трите документа, към които се свързах по-рано, очертават как браузърът напълно внедрява API за заявка за плащане, как a уебсайтът имплементира JSON манифестния файл и как приложение за Android може да обработва намерението, изпратено от искането за плащане API. Ето блок-схема, която очертава общия процес, който обобщих по-горе:
Схема на плащане. източник: Руслан Соломахин
Както можете да видите, тук са включени много стъпки. Всички тези промени ще бъдат обработени от разработчици на уебсайтове за онлайн търговци, Android банкиране/кредитиране приложения за карти и разработчици на уеб браузъри, така че крайният потребител вероятно няма да има представа какво наистина се случва тук. Но просто знайте, че крайният резултат е, че вашите онлайн плащания ще станат много по-лесни, ако участват всички страни внедри тези промени, които се надяваме да станат благодарение на усилията за стандартизация на работната група за уеб плащания реалност.
Историята зад API за заявка за плащане
Консорциумът World Wide Web (съкратено W3C) е основан през 1994 г. с цел разработване на платформа стандарти, които биха позволили на всички уебсайтове и техните потребители да се възползват от взаимната съвместимост и последователност. За да се справи с нарастващата фрагментация на уеб плащанията, W3C създаде Работна група за уеб плащания през 2015 г за да се стандартизират някои аспекти на онлайн платежния поток. След това започна работа между всички членове на работната група за уеб плащания, за да се намерят начини за подобряване на начина, по който работят съществуващите системи за онлайн плащания.
Групата излезе с API за искане на плащане, колекция от методи, позволяващи на уебсайтовете да използват методи на плащане, без да интегрират метода на плащане в техния сайт. Уеб браузърите трябва да бъдат актуализирани, за да поддържат API, но по-трудната част произтича от привличане на онлайн търговци на борда. За тази цел членовете на работната група излезе с предложение как уебсайтовете могат да създават идентификатори, за да определят кои методи на плащане поддържат. Това включва създаване на JSON файл на платежния манифест, който е машинно четим (идентификатор на метода на плащане) - той трябва да бъде прочетен от браузъра, така че API за заявка за плащане може да идентифицира дали потребителят има едно или повече от приложенията, съответстващи на поддържаните методи на плащане, идентифицирани в JSON файл. Това внедряване е вдъхновено от Google Протокол за връзки с цифрови активи което е начинът, по който уебсайтовете ви пренасочват от своя мобилен сайт към своето приложение, ако вече сте го инсталирали.
След много вътрешни преговори от групата, в крайна сметка на 25 ноември 2016 г. Зак Кох от Google и Дапенг Лиу от Alibaba подадоха първоначален проект на манифеста на метода на плащане за да започне процеса на стандартизация за идентификаторите на методите на плащане, с които всички членове могат да се съгласят. В крайна сметка членовете на работната група се срещнаха лично в Чикаго между 23-24 март за да хеширате API за заявка за плащане, предложението за манифест за плащане и други. Работната група гласува за официално приемане нова версия на предложението за платежен манифест (версия 2), където се намираме днес.
Поддръжка за API за заявка за плащане
На 10 май поддръжката за приложения за плащане на Android на трети страни е вече активиран по подразбиране в Chromium, тъй като предпоставката за манифеста на уеб плащанията беше одобрена в клона blink-dev (Blink е името на машината за изобразяване, използвана от Chrome). Имайте предвид, че тази функция се тества в Chrome от месеци, но едва наскоро изглежда, че групата е готова да продължи напред с това. Тази функция ще бъде доставена на всички платформи/версии на Chromium с изключение на Android Webview (който няма потребителски интерфейс и следователно не може да внедри API за заявка за плащане).
Само след месеци работа зад кулисите, сега ще видим ползите от това, върху което работи Работната група за уеб плащания. На Google I/O компанията вероятно ще обяви, че Google Chrome ще се доставя с активиран API за искане на плащане и Зак Кох спомена по-рано ще изнесе своята беседа в четвъртък за това как трети страни доставчици на плащания могат да поддържат API чрез изграждане на манифест за плащане JSON файлове.
Други браузъри също работят за добавяне на поддръжка за API за заявка за плащане. Mozilla и Samsung обаче изразиха публична подкрепа за добавяне на API според служител на Google Руслан Соломахин все още няма информация дали браузърът Edge на Microsoft или Safari на Apple ще добави поддръжка. Трябва да отбележим, че Microsoft е вече тества API за заявка за плащане за приложения на универсалната Windows платформа (UWP). и при поне една банка вече е внедрила поддръжка (Monzo) в тяхното приложение.
Що се отнася до други онлайн търговци и приложения за Android, които ще поддържат тази нова спецификация за плащане, според служителя на Google Зак Кох:
Броят на „доставчиците на методи на плащане“, които ще трябва да внедрят тази спецификация, е доста малък (стотици) и в момента работим директно само с много малка подгрупа от тях (<5), за да тестваме водите. Ако попаднем в ситуация, в която трябва да променим едно от полетата, мисля, че бихме могли да го направим лесно и без голям (ако има такъв) риск за взаимодействие. Всички наши ранни партньори са наясно, че тази спецификация може да се промени и са съгласни с това.
Разпространяването на това е от решаващо значение, за да позволите на други играчи да участват в PR екосистемата, поне на Android. Наистина бих предпочел да не минавам по пълния патентован маршрут, за да активирам собствените приложения за Android. Запазихме отпечатъка върху това умишлено малък, за да оставим място за растеж и по-напреднали случаи на използване.
По този начин можем да видим, че въпреки че Google е пионер в поддръжката на API за заявка за плащане, ще отнеме известно време, преди наистина да видим този нов начин за плащане да намери своето място във всички браузъри, всички онлайн търговци и всички приложения. Аз лично съм много развълнуван да видя API за заявка за плащане да се поддържа от Google. Екосистемата на електронната търговия е ненужно фрагментирана с методи на плащане от години и ако този нов API ще означава, че никога повече не трябва да въвеждам информацията за кредитната си карта ръчно в уебсайт, тогава съм за то.
Какво мислите за този предстоящ стандарт? Изключете звука в коментарите и ни кажете вашето мнение!