はじめに
「Push Provisioning(プッシュ・プロビジョニング)」という言葉をご存じでしょうか?これは主にモバイルアプリを経由してGoogle Payにカード情報を追加する仕組みとして使われる技術です。
通常、クレジットカードをウォレットに追加する場合は、ユーザーがカード番号などを手動で入力しますが、Push Provisioningを使えば、カード発行会社やアプリ側から直接ウォレットにカードを追加することができます。
ただ、この技術はまだ一般的ではなく、ネット上でまとまった情報を見つけることが難しいのが現状です。
Push Provisioningがあまり知られていない理由には以下のような点が挙げられます:
- この技術に関するドキュメントは、金融機関やウォレット開発者など一部のパートナー企業にしか公開されていない
- 開発を開始するまでに必要な申請やプロセスが複雑
私たちがPush Provisioningを利用することになった背景には、あるクレジットカードのアプリ開発プロジェクトがありました。このプロジェクトでは、物理カードを持たないユーザーが商業施設でカードを発行し、その場でスマートフォンに登録して当日から利用できる体験を実現することが目的でした。
本記事では、Push Provisioningの基本的な流れや、開発を進める際に必要な申請手続きについて解説します。なお、Googleとの秘密保持契約(NDA)の都合上、詳細な情報を共有できない部分もありますが、この技術について少しでも理解を深めていただければ幸いです。
開発背景
Push Provisioningの機能開発において、弊社は以下のような立場にありました

クレジットカードには、必ず発行元であるイシュアと呼ばれる会社が存在します。今回、当社はそのイシュアが発行するA社ブランドカードのアプリを開発することになりました。請求情報の確認機能は既にWebサイトやLINE公式アカウントで提供されていますが、イシュアから提供されたAPIを用いて独自のアプリをゼロから設計・開発する必要がありました。
Push Provisioningのフローについて
Push Provisioningを行うには、カード情報が必要です。今回のアプリでは、イシュアのAPIを利用して以下のような流れでカード情報を取得・処理しました。VISAやJCB、AMEXなど様々なブランドとの通信をイシュアのAPI側でラップすることで、カード発行に必要な情報をAPIから取得、アプリで利用することが可能となっておりました。
以下は、VISAのIn-App Provisioning(AppleでのPush Provisioningの呼称)のフローを参考にした説明です。

- カード識別子の取得
- クライアント(イシュア)がVISAのAPIを利用してカードを登録し、カード識別子を取得
- 暗号化されたPANがすでにある場合、このステップをスキップ可能
- GoogleのPush Provisioning APIの呼び出し
- 以下のいずれかの情報を使用:
- カード識別子とデバイス情報
- 暗号化されたPAN(カード情報)
- 以下のいずれかの情報を使用:
- ウォレットへの送信
- API呼び出しが成功すると、ウォレットが起動
- トークンの作成
- ウォレット上でトークンが生成される
- 利用可能化
- カードがウォレットに追加され、利用可能となる
1、2については、イシュアが各ブランド(VISA、JCB、AMEXなど)のAPIをラップし、アプリが暗号化されたPANを用いてPush Provisioning APIを呼び出す形で実現しました。
上記の情報に不備がない場合はウォレットが起動し、各カード会社の利用規約の同意や二要素認証などが済み、カードの有効性が確認された場合にのみウォレットに追加されます。

Push Provisioning APIについて
次に、実際に他のDocsなどで公開されている情報を用いてPush Provisioning APIについて説明していきたいと思います。StripeのDocsに記載のあるように、このPush Provisioning APIを呼び出すためにも様々な工程が必要となります。
まず、ドキュメントの申請とAPI利用申請を行います。
アプリのリリース状態にもよりますが、この時点でアプリケーションIDやフィンガープリントが必要になる場合もあります。記入漏れなど申請において不備があれば、サポートからメールで差し戻しが届きます。不備や不足箇所を指摘をしてくれるので、指示通りに修正をして再申請を行えば、通常は数営業日で承認が下ります。
申請が通った後にもう一つ工程があります。GoogleのSDKを手動でページからダウンロードし、そのライブラリをアプリに組み込む必要があります。(ライブラリの設定方法やgradleの設定などは公式ドキュメントに詳細が記載されているため、ここでは省略します。)
弊社ではReact NativeとNative Moduleの組み合わせで開発を進めましたが、アプリ上でカード追加できるまでには想定以上の時間を要しました。具体的に直面した課題や技術的に詰まった点などについては別の記事で説明できればと思います。
最後に
Push Provisioningは、モバイルアプリ経由でクレジットカードを追加するには必要不可欠な技術ですが、情報も多くなく、実装には特有のハードルが存在します。本記事ではその概要を解説しました。
今後は、実装における課題や技術的な詰まりポイント、AppleのIn-App Provisioningとの比較についても取り上げていきたいと思います。この記事が、Push Provisioningについての理解を深める一助となれば幸いです。
<ドキュメント>
※2つ目のリンク先は、Googleや金融機関と提携しているカード発行会社やウォレット事業者向けに限定公開されている技術ドキュメントです。申請が済んでいるアカウントであれば実際に閲覧することが可能です。