【記事要約】
AmazonPayはエラーハンドリングなど適切な処理をしていないと、Amazonサイドから利用を打ち切られる場合がある。そのため、確実に処理が適正に行われるよう念入りなコーディングと検証が必要になる。
その1から7に記載した内容はあくまで概要のため、AmazonPayをEC CUBE3で利用するためには、確実な処理を行うように詳細を念入りに設計する必要がある。
※ここに書いてある記事はあくまで概要です。プログラムは自己責任で開発してください。
1. Amazonログインステータスによる切り分け
当然のことだが、Amazonアカウントにログインしている状態か否かでロジックを切り分ける必要がある。
Amaonアカウントにログインしているかどうかを判別するためには、Amazonログインと同時にCookieが作成されるため、それらを利用するのが望ましい。
Cookieの内容はEC CUBE3の管理画面の設定>システム情報設定>EC CUBEログ表示で閲覧できる。
デフォルトのログ表示設定はINFOレベルとなっているため、デバックレベルに変更したい場合は、app>config>eccubeのlog.ymlの設定が必要となる。
詳細はこちら
http://doc.ec-cube.net/guideline_log
僕は、ややこしさとトラブルを回避するために、会員ログイン時はAmazonPayを利用できない仕様にした。
また、Amazonログイン時は、カート画面にログアウトボタンを表示させた。
さらに、ログアウトした時点で自作のAmazon関連のセッション等をクリアする処理を施した。
2. エラーハンドリング
STEP7の3にも記載したが、Amazonとの通信時には、レスポンス、オーソリーエラーなどエラーハンドリングが必要となる
さらにウィジット表示の際も、Javascriptにエラーハンドリングの記載が必要になる。
この点もコーディングを施し、テストをする必要がある。
3. セッションのハンドリング
AmazonPay関連のオリジナルセッションを使った場合、Amazonアカウントでのログイン時とログアウト時でそれらのセッションハンドリングが必要になる。
忘れがちなので、これらも合わせて確認してほしい。
4. デバックモードでの検証
検証の際に絶対的に必要になってくるのが、デバックモードだ。
EC CUBEでは、echoやprint_rなどを使ってエラーを表示させようとしても、出てこない。
そのため、デバックモードを利用する。
デバックモードの利用は簡単で、
https://ショップアドレス/index_dev.php
でアクセスするだけでOKだ。
しかし、僕の場合は、index_dev.phpの47行目付近を下記のように書き換える必要があった。
1 2 3 |
//[INFO]index.php,install.phpをEC-CUBEルート直下に移動させる場合は、コメントアウトしている行に置き換える //require_once __DIR__.'/../autoload.php'; require_once __DIR__.'/autoload.php'; |
AmazonPayから渡ってくる値等も閲覧できたので、デバックモードはかなり重要だ。
他にも細かいところでつまづき、色々と調べながらのコーディングとなったが、大体の概要は紹介できたと思う。
EC CUBE3とAmazonPayがランニングコストなしで利用できれば、かなりのコスト削減になるので、ぜひ実現してほしいと思う。
2018年1月16日追記:
このシリーズを書き終えた直後にNIPPON PAYという会社からEC CUBEで利用できるAmazon Payの無料プラグインがリリースされていた模様。
https://nippon-pay.com/AmazonPay.html
僕には必要なくなったので、詳しく調べていませんが、基本無料配布のようです。もしかしたら設定サポートや何やら費用がかかる可能性もあるので、ご自身で確認の上、自己責任で利用するのもよいかもです。