バンドルカードが Google Pay™ に対応しました

バンドルカードのバックエンドエンジニアをしているshibaです。生粋のiPhoneユーザです。

昨年の10月頃にバンドルカードは Google Pay に対応しました。少し遅くなってしまいましたが、 Google Pay 対応について簡単に紹介したいと思います。なお、 Google Pay というアプリ名は2023年3月頃からGoogle ウォレット に変更され、 Google Pay はGoogle ウォレット 内の1機能という扱いになっています。

Google Pay について

まず、 Google Pay や、 Google Pay を使った決済の仕組みについて簡単に紹介します。

まずバンドルカードの説明になりますが、バンドルカードのアプリをインストールし、電話番号を使ってアカウント登録することで、バーチャルカード(オンラインのみで利用できるプリペイドカード)を即時発行することができます。 Google Pay 対応以前は、バンドルカードを実店舗で利用するにはリアルカードもしくはリアル+カードと呼ばれる物理カードの発行が必要でした。物理カードを発行するには発行費用や諸手続きが求められ、加えて、カードが家に届くまで待つ必要がありました。しかし、今回 Google Pay に対応したことによって、バンドルカードのアプリをインストールしてアカウント登録後、 Android 端末に搭載されている Google Pay にカードを登録することで、物理カードを発行する必要なく、すぐに実店舗で Google Pay を通したVisaのタッチ決済ができるようになりました。アプリをインストール後すぐに実店舗で決済できるというところは、バンドルカードと Google Pay の素晴らしい体験だと感じています。

続いて、 Google Pay を使った決済の仕組みについて紹介します。Google Pay を利用しない従来の決済であれば、PAN(カード番号)を含んだ決済データが加盟店様からVisa様のネットワークを通して弊社のようなカード発行会社に連携されます。一方、 Google Pay を使った決済では、PANではなく、トークンと呼ばれる、カードに紐づく一意なIDを含む決済データが連携されるようになります。トークンは、 Google Pay にバンドルカードを登録する際にVisa様を介して発行され、 Google Pay にはPANではなくこのトークンが格納されています。Google Pay を使った決済では、PANの代わりにトークンが加盟店様からVisa様に連携され、弊社のケースではそこから、Visa様がトークンをPANに変換した上で決済データが弊社に連携される仕組みになっています。Google Pay を使ったフローの全体像としては次のようになります。

Google Pay のトークン発行及び決済のフロー

PANの代わりにトークンを使うメリットですが、最も大きいのは漏洩時のリスクを抑えられることだと考えています。Google Pay に格納されるトークンは、カードを登録した特定の Android 端末および特定のGoogleアカウントに紐づいているため、 Google Pay に格納されているトークンの番号が仮に漏洩したとしても他の端末では決済ができないはずです。(実際に試したわけではないため、この情報の信憑性は担保できていません。)Visa様のネットワークまでの経路においてPANではなくトークンでやりとりされることは、カード所有者にとって非常に安全で良い体験だと感じています。

Google Pay 対応について

Google Pay に対応するにあたって、弊社が対応した内容を簡単に紹介します。バンドルカードを Google Pay で利用できるようするためには、大きく次の2つの要件を満たす必要がありました。

  • カードに紐づくトークンの発行を可能にすること
  • Visaのタッチ決済を処理できるようにすること

まずトークンの発行を可能にするために行なった弊社の対応について説明します。先に説明しましたが、バンドルカードを Google Pay に登録する際に、カードに紐づくトークンをVisa様が発行しており、発行されたトークンが Google Pay に格納されています。トークンの発行及び管理はVisa様が行なっております。ただし、Visa様は弊社のカードやカード所有者についての詳細な情報を把握していないため、 Google Pay にカードを登録する際に「トークンの発行を承認しても良いカード及びカード所有者か」どうかを弊社が都度判断する必要があります。カードを Google Pay に登録するフローの裏側では、Visa様と弊社のサーバ間でAPI連携がされており、弊社はAPIを通じて、この、トークン発行を承認するかどうかという判断をしています。加えて、カードを Google Pay に登録するフローの一部ではOne Time Passwordが求められますが、その認証コードを弊社がユーザに連携したりもしています。なお、 Google Pay にカードを登録するフローは2つあります。まず Google Pay のアプリから直にカード情報を入力するフロー、そして、バンドルカードのアプリのトップ画面に表示されている「 Google Pay に追加」ボタンをタップして登録するフローの2つです。

Android 端末におけるバンドルカードのTOP画面

Google Pay に追加」ボタンをタップするフローにおいては、 Google Pay に用意されている Push Provisioning という仕組みを利用しています。いずれのフローを利用しても、裏側では先に説明したAPI連携がされています。このように、Visa様とのAPI連携及びPush Provisioningの対応をすることで、弊社はトークンの発行に対応し、 Google Pay にカードを登録できるようにしました。

次にVisaのタッチ決済を処理できるようにするために行なった弊社の対応について説明します。決済データはバイナリ形式でVisa様から弊社に連携され、弊社のProcessorと呼ばれるシステムがバイナリをパースして処理しています。Visaのタッチ決済では従来のバイナリデータに新しいフィールドが追加されて送られてくるため、既存のパース処理を拡張する必要がありました。そのため、Visa様が公開している決済データのドキュメントを確認し、タッチ決済時に追加されるフィールドの仕様を確認した上でパース処理を追加することで、Visaのタッチ決済を処理できるようにしました。余談ですが、弊社に入社した当時から、カンムのエンジニアはバイナリをパースする特殊な集団であるというイメージがありました。どこかのタイミングで自分もバイナリのパース処理を扱ってみたいと思っていたので良い機会になりました。なお、バイナリ処理については2022年度のGoConにて、関連したクイズを弊社が出題しているので参考にしてみてください。

tech.kanmu.co.jp

プロジェクトを振り返って

プロジェクトを振り返ってみると、リリースまでに1年強の期間を要しましたが、グローバルにサービスを展開するVisa様とこのような長期プロジェクトを進められたことは、弊社ならではの貴重な経験だったと感じています。Visa様とのプロジェクトには特有の面白さがありました。例えば、プロジェクトの初期段階でVisa様のシンガポール支社にいるエンジニアから英語でプロジェクト概要の説明を受けたり、設計レビューでこちらから英語で質問をする機会があったりしたことは面白かったなと感じています。また、プロジェクトはウォーターフォール方式で進められました。プロジェクトを開始する前にVisa様からリリースまでのタスク一覧とスケジュールの目安が提示され、全体のスケジュールやタスクなどを詰めた上でプロジェクトが開始されました。ウォーターフォール方式で長期プロジェクトを進めた経験がなかったので良い経験になりました。

特有の面白さとして1つ関連したエピソードを紹介します。Google Pay に対応するにあたって、本番リリースする前に試験環境でタッチ決済の動作確認をする必要がありました。Visa様から提供される試験環境の決済用のソフトウェアはWindowsで実行する必要があるため、弊社では手元のMacからRDPでWindowsインスタンスに接続して決済を試すようになっています。従来の決済の動作確認は、このソフトウェアで完結しますが、タッチ決済の動作確認をする場合はカードリーダーをWindowsに接続し、カードリーダーに Android 端末をタッチして試す必要がありました。弊社ではuTrust 4701 F デュアルインターフェーススマートカードリーダーを購入し、Windowsに接続を試みましたが、Windowsインスタンス側でカードリーダーが認識されず、頭を抱えていたことがありました。動作確認の期日が迫っていたこともあり、先輩のsummerwind が「俺にやらせてみろ。とりあえずカードリーダーをスカイツリーに持ってきてくれ。」と伝えてくれたので、スカイツリーでカードリーダーを受け渡したのですが、その後、すぐに原因を特定して問題を解決してくれました。物理カードリーダーのドライバはMacにインストール済みであったもののNFCリーダーのドライバをMacに追加でインストールする必要があったようでした。力量の差に空いた口が塞がらなかったのは良い思い出です。

余談ですが、 Google Pay 対応のリリース後にTwitterで見かけたコメントが印象に残っています。Google Pay 対応のリリース後、何か問題が起きていないかを確認するために、Twitterエゴサーチをちょくちょくしていたのですが、リリース直後に次のようなツイートを見かけて大変嬉しく感じたことを覚えています。良い声も悪い声もですが、こういったユーザの声をダイレクトに確認できるところは、toCサービスならではだと感じています。

バンドルカードがGooglepayに対応したからpixelwatchでもタッチ決済に使えるようになったんだが えっめちゃくちゃ楽じゃん 助かる…… どんどん使いやすくなる…… https://x.com/Ruri_Midorimiya/status/1714272066302886004

最後に

私はiPhoneユーザなので、Apple Payの対応を心待ちにしていたりします。TwitterでもApple Pay非対応を嘆く声を度々見かけます。バンドルカードはApple Payにも対応する予定ではあるのですが、エンジニアの人数も少なく、手が回っていません。

ということで、バンドルカードではプロダクトを改善するバックエンドエンジニアを募集しています。ご応募お待ちしております。

kanmu.co.jp

AndroidGoogle Pay、Google Wallet は Google LLC の商標です。