【記事要約】
EC CUBE3系でのAmazonPay導入に関して、いよいよ本番実装。EC CUBEのプラグインを作成する。
EC CUBEはASPサービスではなく、自身のWEBサーバーにEC CUBEのプログラムを設置し、運用するタイプのネットショップだ。
大抵の場合、ホスティングサービスにEC CUBE3の自動インストール機能がある。
それによって、インストールした後、FTPなどによってサーバにアクセスし、全ファイルをダウンロードすれば、すべてのプログラムが閲覧できる。
よって今回、AmazonPayを利用できるようにするために、それらEC CUBEのコードをゴリゴリいじればよいかと考えた人も多いはずだ。
しかし、EC CUBE3になってから特に、基本的なEC CUBE3のプログラムを改変することは推奨されていない。
他のプラグインや、バージョンアップによって、変更部分が先祖返りしたり、思わぬ障害の原因になる可能性があるからだ。
そのため、EC CUBEに独自の機能を持たせるためには、プラグインによるドロップインが正規の干渉方法となっている。
そこで当初、僕もEC CUBE3のソースコードをゴリゴリ改変するつもりだったが、安全性を保つためにAmazonPayのプラグインを制作することにした。
僕が行ったプラグインの開発方法を下記に紹介する。
1. EC CUBE3プラグイン開発の全体像をつかむ
EC CUBEのプラグインを、どのように作成したら良いかEC CUBEのプラグイン開発ドキュメントが用意されている。
http://doc.ec-cube.net/plugin_tutorial-generate
AmazonPayのPHP SDKのインストールの際に、MacからSSHで接続する方法をすでに学んでいたので、
EC CUBEのプラグイン開発ドキュメントの内容に基いてコマンドをひとつひとつ打ち込むと、app>Pluginフォルダの中に、コマンドで指定した名前のプラグインファイル一式が自動生成された。
EC CUBEのプラグイン開発ドキュメントの中にある、新規ページの追加、利用しないページの削除、フォームの追加、変更、プラグイン用テーブルの追加、チュートリアルさらには、ベストプラクティスの内容を熟読して、プラグインに関する全般的な内容を頭に入れる。
一見遠回りのようだが、この事前に全体把握をすることは、後々の時間節約になる。
闇雲に、ひとつひとつ追求していると今自分がどこの何に向き合っているのか迷子になってしまうからだ。
こちらのプラグイン開発ドキュメントには、EC CUBE3のプラグイン仕様書も用意されている。
こちらの内容も僕はとても参照した。
http://downloads.ec-cube.net/manual/v3/plugin.pdf
2. AmazonPayプラグインの全体的な動き
今回、EC CUBE3でAmazonPayを利用するためのプラグインの具体的な内容に関しては、全内容の公表を差し控えさせていただく。
僕が紹介するヒントを確認いただいた上で、独自にコーディングを行い、さらに確実なテストを行った上で、自己責任で実装して欲しい。
なお、僕の場合、購入後の管理画面にて実質請求する処理(配送後にする処理)はAmazonPayの管理画面で行うことにしたため、EC CUBEの管理画面には実質請求の処理を組み込んでいない。
さて、プラグイン仕様書にあるように、EC CUBEのプラグインは「フックポイント」と呼ばれる各ポイントに切り込んで、独自の処理を通す。
AmazonPayプラグインの大まかな動きは下記のようになる。
1.カート画面
(1)[Amazonアカントでお支払い]ボタンを表示する
(2)会員ログイン時は[Amazonアカントでお支払い]ボタンをグレーアウト
(3)Amazonアカウントでログイン時は、その旨をメッセージ表示し、Amazonアカウントログアウトボタンを表示
(4)Amazonアカウントでログインしたら、購入確認画面にダイレクト遷移する
2.購入確認画面
(1)Amazonアカウントでログイン時、アドレスウィジットと支払いクレジットカード選択ウィジットを表示する。
(2)Amazonアカウントでログイン時は、EC CUBEの配送先変更、お客様情報変更ボタンを非表示とする
(3)Amazonアカウントでログイン時は、EC CUBEの支払い方法をAmazonPayで固定とする。
3.購入完了画面
(1)Amazonウィジットで選択したお客様情報をEC CUBEに登録する
(2)AmazonPayへ購入情報を送信する
(3)AmazonPayからエラーが返ってきた場合のエラーハンドリング
このような内容でプラグインの構築をすすめた。