AmazonPayの簡易テストをする[EC CUBE3でAmazonPayを利用するためのステップその3]

【記事要約】

EC CUBE3系でのAmazonPay導入に関して、EC CUBEに組み込む前にまず簡単なファイルを作成し、AmazonPayの大まかな動きを把握。そうすることによってEC CUBEへの組み込みイメージをつかむ。

 

AmazonPayをEC CUBEに組み込む前に、まずは簡単なファイルを作成し、ローカルのファイルとAmazonPayの動きを把握すると、その後の作業がしやすい。

目次にあるように、AmazonPayの全体的な流れをつかむために3つのファイルを作った。

お支払ボタンを表示させる機能とアドレス・支払いウィジェットを表示させるには、特にプログラミングは必要なかった。

AmazonPayへ売上電文を送信したり、AMAZON_ORDER_REFERENCE_IDという一意なキーから住所や連作先を取得する場合にプログラミングが必要となる。

なお、以下の作業内容は、AmazonPayでの設定がすべて完了し、テスト環境での実施を想定している。

初期設定とテスト環境に関しては、AmazonPayインテグレーションガイドのStep1登録Step2 SDKの設定を参照

1.  [Amazonアカウントでお支払い]ボタンを表示させる(step1.html)

AmazonPayでお支払ボタンを表示させる手順は、インテグレーションガイドのStep3 ボタンウィジェットの追加を参照した。

基本的にこのページに記載されているコードでAmazonお支払ボタンが表示される。

エラーハンドリングなどは省略されているが、取り急ぎテスト環境での動作検証なので、本番環境のコードにエラーハンドリングをしっかり記載する。

分かりにくかった点としては、SELLER-IDと記載されている箇所には、AmazonPayでログインし、インテグレーション>MWS Access Keyで見ることができる出品者IDを記載する必要があった。

REDIRECT-URLには、step2.htmlを記載する。

その他のパラメータの詳細は、ボタンウィジェットのページで確認できる。

2. アドレスウィジェットと支払カード選択ウィジェットを表示させる(step2.html)

アドレスウィジェットと支払いカードウィジェットを表示させるstep2.htmlは、インテグレーションガイドのStep 4:アドレス帳とお支払い方法ウィジェットの追加を参照した。

ここで、アドレスウィジェットと支払いカードウィジットが表示されると、orderReferenceIdが取得できるようになる。

PythonとRubyのサンプルコードが表示されているが、ページ下部の「アドレス帳ウィジェット」と「お支払い方法ウィジェット」のコードを記載すれば、それぞれのウィジットが表示されるはずだ。

AmazonPayに売上情報を送信するために、orderReferenceIdと支払い総合計が必要になる。

そのため、次のstep3.phpへのフォームボタンを用意し、hiddenで値を渡すようにコーディングを追加した。

oRIDには、orderReferenceId。

支払い総額は、OrderTotalとし、valueに1500と記載し、1500円を仮の支払い総額とした。

さらに、orderReferenceIdを取得し、hiddenのoRIdに自動的に反映させるJavascriptを追加

インテグレーションガイドのStep 5:注文詳細のセットと確認も参照するとよい。

なお、インテグレーションガイドのStep5に記載されているサンプルコードはPHP以外のものなので、取り急ぎ見なくてOK。

なお、インテグレーションで紹介されているコードにはエラーハンドリングが省略されているので、これも本番環境でしっかり記述する必要がある。

3. AmazonPayに売上情報を送信する(step3.php)

step2.htmlから渡ってきた情報をAmazonPayに渡し、決済を完結させる必要がある。

ここで登場するのが、SDKだ。

AmazonPayのPHP SDKはこちら>>

これをどこで使うべきなのかが分からず当初苦労した。

なぜなら、Amazonアカウントでお支払ボタン(step1)やウィジットの表示(step2)にもSDKを絡ませる必要があると思い込んでいたからだ。

また、インストール方法に「Installing using Composer」と記載されているのも意味が分からなかった。

とことん調べてみると、元々composerがインストールされているサーバに直接アクセスするSSHを利用して、「composer require amzn/amazon-pay-sdk-php」と電文送信すれば、Amazon Pay SDK (PHP)がインストールされるということだった。

幸いにして、EC CUBEは、このComposerが利用されている。

vendorという名前のフォルダを見ていると分かるが、中にComposer関連のファイルが格納されている。

よって、SSHでサーバにアクセスし、「composer require amzn/amazon-pay-sdk-php」と打ち込めば、vendorフォルダの中に、amznというフォルダができて、AmazonPay関連のSDKファイルが追加される。

しかし結果的に後からわかったことは、この面倒くさい手続きをしなくとも、AmazonPayのPHP SDKのページからファイルをダウンロードして、パスを通せば、Amazon Pay SDK (PHP)の機能は利用することができた。

Composerというものも、EC CUBE3にすでにComposerが存在することも知らなかったため、Composerのインストールから、MacからSSHでサーバにアクセスする方法も調べ、実施してみたが、結局はファイルをダウンロードして、サーバにアップロードし、step3.phpのファイルからamzn内のClient.phpへパス通すという作業で問題なかった。

そして、AmazonPayと決済完結の処理を実施するために使うのが、AmazonPayのPHP SDKのページに記載されいる「Convenience Methods」の内容だ。

Amazon Pay SDK (PHP)ですでに用意されているchargeという関数を使えば、Standard Payments(ワンタイムペイメント:ワ) / Recurring Payments(定期支払:定)で必要な下記の3ステップの処理を一括で行ってくれるのである。

①SetOrderReferenceDetails(ワ) / SetBillingAgreementDetails(定)
②ConfirmOrderReference(ワ) / ConfirmBillingAgreement(定)
③Authorize(ワ) / AuthorizeOnBillingAgreement(定)

charge関数を実施するために必要なパラメータの詳細も記載されている。

print_r($response);と記載したので、step2.htmlからstep3.phpに画面が変わった時に、AmazonPayからのレスポンス内容が表示される。

レスポンスコードが200で帰ってくれば、OKということになる。

エラーレスポンスコードに関しては、エラーコードのページを参照。

step1.htmlからstep3.phpの一連の流れを実際に自分の手で掴んでみると、今後の作り込みイメージも湧きやすくなったと思う。


[EC CUBE3でAmazonPayを利用するためのステップその3]AmazonPayの簡易テストをする[EC CUBE3でAmazonPayを利用するためのステップその3]
AmazonPayの簡易テストをする