PAY ID OAuth API を導入する

こんにちは、PAYでエンジニアをしています @satetsu888 です。

前回の記事では、Checkoutを使ったPAY IDの導入についてご紹介しましたが、 今回はより自由な連携が可能になるPAY IDのOAuth APIについて、何ができるようになるのかの紹介と実際の導入について説明させていただきたいと思います。

PAY ID とは

PAY IDは、メールアドレスとパスワードだけで支払いができるようになる購入用のアカウントです。BASEや各事業者のWebサービスで導入されており、多くの支払いが行われています。

id.pay.jp

PAY ID OAuth APIで出来ること

現在「アカウント情報の取得」「カード情報の取得」「カード決済のためのトークン取得」「住所情報の取得」などの機能が提供されています。 (「カード情報の取得」ではカード番号下4桁やカードのブランドなど、利用カードの確認などにお使いいただける情報のみ取得できます。)

これらのAPIを活用することにより利用者がPAY IDでログインするだけで

  • ユーザの識別
  • カードによる決済
  • 商品配送先住所の取得

の3つが行え、特にEC系のサイトにおいて非常に快適な決済・購入体験を提供することができます。

BASEの事例

BASEのPAY ID連携ではOAuth APIが利用されています。

利用者は商品をカートに入れた後に「PAY IDで購入」を押し、メールアドレス/パスワードを入力してPAY IDにログインすることで f:id:payjp:20160907152346p:plain

PAY IDに登録してある決済情報や配送先住所が自動的に入力されるため、買い物のたびにカード番号や住所などを入力する必要がなく、快適に商品の購入が行えるようになっています。 f:id:payjp:20160907152403p:plain

PAY ID OAuth APIを使った実際の購入は http://shop.thebase.in/ やBASEで提供されている各店舗で体験可能です。是非お試しください。

OAth API の導入

OAuth APIの導入のためにOAuthクライアントの作成が必要となりますので、前回の記事の「1. OAuth Clientを作成する」と同じ手順でご用意ください。 Redirect URIについては、作成後も変更可能ですので仮のURIで作成していただいても問題ありません。

具体的なアプリケーションの実装について、下記のPHPによるPAY ID OAuth APIの簡単なサンプルコードを使って説明していきます。 https://github.com/payjp/payjp.github.io/tree/master/sample/pay-id-php

実際のアプリケーションの実装には、各言語で利用されているOAuthのライブラリ等を利用することをお勧めします。 また、各APIの詳細やOAuth API利用の流れ等の説明もありますのでリファレンスも合わせてご参照ください。

1. Authorization Endpointへのリンク作成

OAuth API利用の最初のステップとして「PAY IDで購入」などのボタンを押した利用者を、https://id.pay.jp/.oauth2/authorize に適切なクエリパラメータをつけたURLへと遷移させます。

サンプルコード100行目付近の処理をご参考ください。

https://github.com/payjp/payjp.github.io/blob/master/sample/pay-id-php/pay-id-sample.php#L99-L110

2. リダイレクトとToken Request

PAY IDのログインとアプリケーションのアクセス許可の同意を済ませた利用者は、codeパラメータとともにOAuthクライアント作成時に設定したRedirect URIへとリダイレクトされてきます。 Redirect URIの設定が仮になっている場合は、codeパラメータの処理するエンドポイントを作成後適切に設定してください。

ここで返って来たcodeパラメータを使って、トークンを取得するための Token Request を行います。

サンプルコード37行目から67行目の処理をご参考ください。

https://github.com/payjp/payjp.github.io/blob/master/sample/pay-id-php/pay-id-sample.php#L37-L65

3. トークンの取得とAPI呼び出し

Token Requestのレスポンスに含まれるaccess_tokenを使って、HTTPヘッダに Authorization: Bearer [access_token]を入れることでOAuth API のリクエストが行えます。

サンプルコード67行目から90行目では、「アカウント情報の取得」「カード情報の取得」「カード情報のトークン化」「住所情報の取得」のAPIを順番にリクエストしています。

https://github.com/payjp/payjp.github.io/blob/master/sample/pay-id-php/pay-id-sample.php#L67-L90

APIから取得したユーザの情報をアプリケーションでご利用いただき、スムーズな決済・購入体験を提供しましょう。

まとめ

今回はPAY ID OAuth APIの紹介と導入について簡単にですがご紹介しました。

OAuth APIの利用にはCheckoutに比べると少し実装のコストがかかるのですが、住所の自動入力もできることや、PAY IDにログイン済みのブラウザの場合は、メールアドレス/パスワードさえ入力しなくても良いという非常に快適な購入体験が可能になります。

PAY IDは提供開始から1ヶ月半で10万アカウントを突破し、その後も順調に利用者数が伸びています。この機会に是非PAY ID及びPAY ID OAuth APIを使ってみてください。

また、PAY.JP、PAY IDの導入について不明点などございましたらフォーラムでの質問やお問い合わせからご連絡いただければと思います。