?前振り
この記事はこの度、我がブログサイトに寄付金を受け付ける決済機能を追加した訳だが、思い立って導入に至るまでの間に調べたGoogle Pay APIに関する記事です。
【残念編】とあるように、このページの記事に従っても今のところ自力でGoogle Pay APIを実装することはできない。
しかし、Google Pay APIの実装に関して日本語で書かれている記事は少ないので後学の為に記事にしておく。
いつか、【成功編】の記事が書けたらいいなぁ?
?Google Pay APIの概念と決済の流れ
そもそも私は今回、決済処理についてまったくの無知の状態から導入に着手した。
ただ自分のサイトに決済機能がほしいという状態から、Google Pay APIという名前を見つけてきて、きっとこれは決済処理に使うんだろうという漠然とした感覚でドキュメントを読み始めた。
しかし、残念ながらGoogle Pay APIは決済機構ではなかった。
あくまで、決済処理が行われるのは④Payment service providerとなっている部分の別の事業者のサービスであり、Google Pay APIでは①⇒②で、ユーザのGoogleアカウントに紐づけられているカード情報を暗号トークン化して橋渡しすることで、ユーザがはじめて訪れるサイトでクレジットカード情報を入力しなくてよくなるという仕組みだった。
実際に使ってみると、なるほどGoogleアカウント経由のやりとりではカード番号の下4桁とカード会社がどこかっていうくらいしかカード番号は手に入らない。
しかし、ここで取得した暗号化トークンで24時間以内に決済リクエストを決済代行サービスへ送れば決済が可能なわけだ。
つまり、『入力しなくていいから楽だよ。』というよりも、『カード番号見せないで決済できるから安心だよ。』の仕組みだったのだ!!?
?決済代行サービス「Stripe」
さて、結局は別で決済代行サービスの契約をしなければならないとわかった。
皆さんがどの決済代行サービスを選ぶかは「決済代行サービス」でググって比較サイトを見てほしい。
なんだか、いろいろあって・・・どこも決済手数料が結構高い。
ただ私が探した中で、Google Payに対応している中で導入費0円で、手数料が3.6%と安かったのは「Stripe」と「Square」だった。
今回は、特に深く考えず「Stripe」を選択した。
?テスト試したところまで。
↑ ↑ ↑
もし、Google Payに対応したブラウザでこのページを開いたら、上にGoogle Payボタンが表示されていると思う。(テスト環境用になってるのでクリックしても平気です。)
こんなボタンだ。
さて、このサンプルはこちらのチュートリアルの通りに作ってみたボタンな訳だが、このボタンで「お支払い」ボタンを押すと、Google Pay APIを介してTokenが取得される。
しかし、肝心の決済処理に関しては「後はお使いの決済サービスに従ってくれ」となっているのだ。
// @todo pass payment token to your gateway to process payment paymentToken = paymentData.paymentMethodData.tokenizationData.token;
なるほど、Stripe側の認証ログを見ると/v1/tokensというAPIが呼び出されているのがわかる。
さて、このToken使えば決済できるんだろー?って思ってStripe側のドキュメントを見てみる。
・・・アレ?Stripe Docsを見るとGoogle PayやApple Payを使う時はCheck-outを使えってなってる。
tokensを使って決済する方法が紹介されていない?
しかも、リファレンスがバックエンド側のStripe APIとフロント側のStripe JSに分かれててどこみればいいのか読み取りにくい。。。
うおおおおおって思って調べてたんだけども、結局紐解くのがめんどくさくなって有償のアドオン買ってきて導入してみました?
有償のアドオン使って試しに決済してみると、Google Payしたときに使われている認証ログで/v1/tokens使ってないことがわかった?
なんだよ、もう。。。
えーん?って思いながらSquareのAPIドキュメント眺めてみたらこっちはフロントエンドスクリプトベースで簡単に実装できそうな雰囲気の仕様になってる。。。
購入したStripe有償アドオンは1年間のサブスクなので、来年、元気だったら改めて乗り換え検討実験してみようかなー?
?結論、わんすけの決済システムは安心だよ?
以上が、当サイトへ決済機能を組み込むまでに勉強した内容でした。
要するに、このサイトの決済処理ではキチンと決済代行サービスで提供している正規の有償フレームワークを使って決済サービス側に転送しており、当サイトのサーバ側では決済情報などは一切収集していないので安心して決済してねってことです?
さぁ、遠慮せず支援金をポチって決済していいですよ(笑)