Google が Payment Request API を正式に採用し、Chrome でサードパーティ製アプリでの支払いが可能に

Google I/O 中に発表される予定ですが、Google は Payment Request API を Chrome に正式に採用し、サードパーティ製アプリでの支払いを可能にします。

発表予定 今後開催される Google I/O 開発者カンファレンスでは、Payment Request API がモバイル デバイスでのオンライン支払い方法に革命をもたらすでしょう。 Android 上の Google Chrome ユーザーは、クレジット カード情報の入力や PayPal へのログインなどの長いチェックアウト プロセスを行う必要がなくなります。 代わりに、API を使用すると、Web サイト開発者は支払いを行うために、サポートされているサードパーティの支払いアプリケーションにインテントを送信できます。 多くのものとは異なり、 その他の驚き Google が私たちのために用意してくれているもの、 この新しい支払い方法が正確にどのように機能するかについては、すでに大量の公開情報があります. 今週の Google の公式発表に先立って情報をお届けするために、これらすべての文書を詳しく調査しました。


Payment Request API で支払いを簡単にする

まず、Web ブラウザーで現在支払いがどのように処理されているかをまとめてみましょう。 オンライン販売者のチェックアウト ページに移動すると、支払い情報の入力を求められます。 販売者がサポートするクレジット カードを追加するか、PayPal などの統合サービスを使用して取引を完了することができます。 ただし、すでにクレジット カード情報を Web サイトに保存している場合 (多くの人はこれに抵抗があります)、またはすでにログインしている場合を除きます。 PayPal にログインする場合、立ち上がって財布に行き、カードを見つけて、カード番号、有効期限、セキュリティを入力するのは面倒な場合があります。 コード。 新しい Web サイトで購入するたびに、このプロセスのいくつかのバリエーションを実行する必要があります。 そんな私たちにとって、 取引を探すのが好き、これはすぐに面倒になる可能性があります。

さまざまなオンライン販売者のチェックアウト ページ

多くのクレジット カードや銀行機関では、Google Play ストアでアプリケーションを入手できます。 私たちはすでに金融口座の監視にこれらのアプリケーションを使用しているのに、なぜ支払いの認証にそれらのアプリケーションを使用できないのでしょうか? これはまさに、Google、Mozilla、Samsung、Alibaba、Microsoft などのメンバーで構成される Web Payments Working Group の背後にある思考プロセスです。 このグループは、次の目的で舞台裏で活動しています。

Payment Request API と呼ばれる新しい API を導入します Web ブラウザ間の通信を容易にするために、Payment Manifest Proposal で定義された新しいオンライン標準 これにより、オンライン販売者は、支払いを処理するためにエンドユーザーのデバイス上の既存のアプリケーションを使用できるようになります。

使い方

このタスクを実行するには、Web ブラウザー Payment Request API をサポートする必要がある、オンライン販売者は、いわゆる 支払い方法識別子、Android アプリケーション 新しいサービスを実装する必要がある. あまり詳しくは説明せずに、チェックアウトプロセス中に何が起こっているのか簡単に説明します。

Web ブラウザが Payment Request API (詳細は後ほど) をサポートしていると仮定すると、オンライン販売者の支払いページに移動すると、支払いのオプションが表示されます。 サポートされている支払いハンドラ(クレジット カード、PayPal など)のいずれかで購入ボタンをタップしたとき(Google 社員が使用する以下のサンプル ページなど) Payment Request API をテストします)。次に、Payment Request 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 が支払いを検証すると、Payment Request 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 は支払いハンドラーとして受け入れられません。

もちろん、私はここに含まれる一般的なプロセスを非常に、非常に、非常に単純化しすぎています。 支払いは信じられないほど複雑なシステムであり、有効な支払いのみが行われることを保証するために複数層のセキュリティ チェックが必要です。 前にリンクした 3 つのドキュメントでは、ブラウザが Payment Request API を完全に実装する方法と、 Web サイトが JSON マニフェスト ファイルを実装し、Android アプリが支払いリクエストによって送信されたインテントをどのように処理できるか API。 これは、上で要約した一般的なプロセスの概要を示すフローチャートです。

支払いのフローチャート。 ソース: ルスラン・ソロマキン

ご覧のとおり、ここには多くの手順が含まれています。 これらの変更はすべて、オンライン販売者の Web サイト、Android バンキング/クレジットの開発者によって処理されます。 カード アプリや Web ブラウザの開発者のため、エンド ユーザーには実際に何が起こっているのかわからない可能性があります。 ここ。 ただし、すべての関係者が関与すれば、最終的にはオンライン支払いがはるかに簡単になることを知っておいてください。 これらの変更は、Web Payments Working Group の標準化努力のおかげで、うまくいけば 現実。


Payment Request API の背後にある歴史

World Wide Web Consortium (略称 W3C) は、プラットフォームを開発するために 1994 年に設立されました。 すべての Web サイトとそのユーザーが相互互換性から恩恵を受けることを可能にする標準。 一貫性。 ウェブ決済の細分化が進むことに対処するために、W3C は 2015 年の Web 決済ワーキング グループ オンライン支払いフローのいくつかの側面を標準化するため。 その後、既存のオンライン決済システムの動作を強化する方法を見つけるために、Web 決済ワーキング グループのメンバー全員による作業が始まりました。

グループが考え出したのは、 支払いリクエストAPI、支払い方法をサイトに統合せずに、Web サイトで支払い方法を使用できるようにする方法のコレクション。 API をサポートするには Web ブラウザを更新する必要があります、しかし、より難しい部分は次のとおりです。 オンライン販売者を参加させる. そのために、ワーキンググループのメンバーは、 提案を思いついた Web サイトがサポートする支払い方法を定義する識別子を作成する方法について。 これには、機械読み取り可能な支払いマニフェスト JSON ファイル (支払い方法識別子) の作成が含まれます。このファイルはブラウザーによって読み取られる必要があるため、 Payment Request API は、JSON で識別されるサポートされている支払い方法に対応するアプリケーションをユーザーが 1 つ以上持っているかどうかを識別できます。 ファイル。 この実装は Google の影響を受けています。 デジタルアセットリンクプロトコル これは、すでにインストールされている場合に、Web サイトがモバイル サイトからアプリケーションにリダイレクトする方法です。

グループ内で何度もやりとりがあった後、最終的に 2016 年 11 月 25 日、Google の Zach Koch と Alibaba の Dapeng Liu が、 支払方法マニフェストの初稿 すべてのメンバーが同意できる支払い方法識別子の標準化プロセスを開始するため。 最終的に、ワーキンググループのメンバーは、 3月23日から24日にかけてシカゴで直接会った Payment Request API、Payment Manifest Proposal などをハッシュ化するため。 ワーキンググループ 正式に採用することに投票した 新しいバージョンの支払いマニフェスト提案 (バージョン2)、それが今日の私たちの立場です。


支払いリクエスト API のサポート

5 月 10 日、サードパーティの Android 支払いアプリのサポートが開始されました。 デフォルトで有効になっています Web 支払いマニフェストの前提条件がblink-dev ブランチで承認されたため、Chromium で使用されます (Blink は Chrome で使用されるレンダリング エンジンの名前です)。 この機能は数か月間 Chrome でテストされてきましたが、グループがこれを進める準備ができているように見えるのはつい最近のことです。 この機能は次の日に出荷されます Android Webview を除く Chromium のすべてのプラットフォーム/バージョン (UI がないため、Payment Request API を実装できません)。

何か月にもわたる舞台裏での作業を経て初めて、Web ペイメント ワーキング グループが取り組んできたことのメリットが明らかになるのです。 Google I/O で、同社は Google Chrome が Payment Request API を有効にして出荷されることを発表する可能性が高く、Zach Koch 氏は次のように述べました。 アーリー氏は、サードパーティの決済プロバイダーが支払いマニフェスト JSON を構築することで API をサポートできる方法について木曜日に講演する予定です ファイル。

他のブラウザも、Payment Request API のサポートの追加に取り組んでいます。 モジラ とサムスンは API の追加に対する公的支持を表明していますが、 Google社員によると ルスラン・ソロマキン Microsoft の Edge ブラウザまたは Apple の Safari がサポートを追加するかどうかはまだ発表されていません。 Microsoft が すでにユニバーサル Windows プラットフォーム (UWP) アプリの Payment Request API をテストしています そしてで 少なくとも 1 つの銀行がすでにサポートを導入しています (Monzo) アプリで。

この新しい支払い仕様をサポートする他のオンライン販売者や Android アプリケーションについては、Google 社員の Zach Koch 氏が次のように述べています。

この仕様を実装する必要がある「支払い方法プロバイダー」の数は非常に少ないです (数百)、そして現在、テストのためにそれらのうちの非常に小さなサブセット (<5) のみを直接操作しています。 水域。 フィールドの 1 つを変更する必要がある状況に遭遇したとしても、相互運用リスク (あるとしても) をあまりせずに、簡単に変更できると思います。 私たちの初期のパートナーは全員、この仕様が変更される可能性があることを認識しており、それを受け入れています。

これを展開することは、少なくとも Android 上で、他のプレイヤーが PR エコシステムに参加できるようにするために重要です。 私は、Android ネイティブ アプリを有効にするために完全な独自のルートをたどることは避けたいと思っています。 私たちは、成長とより高度な使用例の余地を残すために、このフットプリントを意図的に小さく保ちました。

したがって、Google は Payment Request API のサポートに先駆けて取り組んでいますが、 この新しい支払い方法がすべてのブラウザに導入されるまでには、しばらく時間がかかるでしょう。、すべてのオンライン販売者、およびすべてのアプリケーション。 私個人としては、Payment Request API が Google によってサポートされることを非常に楽しみにしています。 e コマース エコシステムは何年にもわたって支払い方法によって不必要に断片化されてきましたが、この新しい API が つまり、もう二度とクレジット カード情報を Web サイトに手動で入力する必要がなくなるということなら、私は賛成です それ。


この次期規格についてどう思いますか? コメント欄で意見を聞かせてください。