【EC-CUBE】PAYPAL支払いがちゃんとできるかテストする

とりあえず、このエントリーは、↓の続き。

https://bton.papalabs.net/?p=1135

PAYPAL決済を導入するに当たって、EC-CUBEからPAYPALのテストサイトへつないで決済テストを行うやり方。

テストなんだよね。テストなんだけど、いっぱい設定とか準備があって、面倒なんだよね。。。
ここからは、英語ばんばんの海外サイトなので、本当のところ気が狂いそう・・・

とか言ってられないので、がんばりましょう!

1)PAYPALの「Developer Central」内の下記URLへアクセスし、

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_testing_sandbox

Sign Upメニューから、テスト用の新規アカウントを作成しましょう。

画面は英語だけど、基本的には通常のアカウント登録と同じなので、わからなくなったら、日本語の通常PAYPALサイトを参考にするとイイデスヨ。

アカウントを作ったらサンドボックスにログイン。別に本番アカウントのコピーでもOK。

左メニューで、「Sandbox」-「Home」

ページの真ん中の、Test Accounts 「Create a preconfigured buyer or seller account.」リンクから「Create a Sandbox Test Account」ページへ進む。

  • country:United States
  • Account Type:BuyerとSellerを1つずつ(かそれ以上)作る
  • Login Email:サンドボックスでのテスト用にセラーとバイヤーそれぞれ1つずつ用意する。
  • Password:決める

バイヤーとセラー両方のテストアカウントが必要なので、それぞれを1つずつ、2回登録する。

作成後、左メニューで「Sandbox」-「Test Accounts」をクリックすると、テストアカウントの確認ができるはず。「View Details」でテスト作成されたアカウントの詳細が確認できる。
クレジットカードや銀行の情報も作成されている。

表の中の、「Payment Review」と「Test Mode」をいずれも「Enabled」に変更しておきましょう。

ここまでできたら、いよいよテスト。

ページ右下の「Enter Sandbox Test Site」ボタンをクリックする。

すると、通常のPAYPALのページみたいなテストサイトがあら現れる。この画面に、先ほど作成した、バイヤーアカウントでログインすれば、購入者の動作確認ができるし、セラーアカウントでログインすれば、販売者の動作確認ができる。それぞれ、買い物をしたあと、画面に代金がどのように計上されるのか(できるのかできないのか、)確認すればいい。

さて、ここで、1つ問題が(ということでもないけど;)

前のエントリーでEC-CUBEに設定したのは、本番の設定。

つまり、テストをするためには、一時的に、

/data/class/pages/shopping/LC_Page_Shopping_Confirm.php

で接続するサイトをPAYPALの本番サイトからテストサイトのURLへ変更して、テストアカウントで接続させないといけない。

なので、先に編集した、L148~L155、テスト用には下記のようになります。

// 決済方法により画面切替
if($payment_type != “”) {
$_SESSION[“payment_id”] = $arrData[‘payment_id’];
header(“Location: ” . URL_SHOP_MODULE);
}else{
if($arrData[‘payment_id’] == ※payment_id) {
// 設定変更行して下さい ↑ if($arrData[‘payment_id’] == payment_id) {
$paypalURL = “https://www.sandbox.paypal.com/j1/cgi-bin/webscr?cmd=_xclick&” ;
$paypalURL .= “business=” . “テストアカウントに登録したメールアドレス” . “&” ;
// 設定変更行して下さい ↑$paypalURL .= “business=” . “paypalアカウントのメールアドレス” . “&” ;
$paypalURL .= “lc=JP&item_name=” . “商品名” . “&” ;
// 設定変更行して下さい ↑ $paypalURL .= “lc=JP&item_name=” . “商品名” . “&” ;
$paypalURL .= “invoice=” . $order_id . “&” ;
$paypalURL .= “currency_code=JPY&no_shipping=1&no_note=1&” ;
$paypalURL .= “shipping=” . $arrData[‘deliv_fee’] . “&” ;
$paypalURL .= “amount=” . ($arrData[‘payment_total’]-$arrData[‘deliv_fee’]) . “&” ;
$paypalURL .= “email=” . $arrData[“order_email”] . “&” ;
$paypalURL .= “first_name=” . urlencode(mb_convert_encoding($arrData[“deliv_name02”], “UTF-8”,CHAR_CODE)) . “&” ;
$paypalURL .= “last_name=” . urlencode(mb_convert_encoding($arrData[“deliv_name01”], “UTF-8”, CHAR_CODE)) . “&” ;

// 郵便番号から市町村を得る

$city = $objQuery->get(‘mtb_zip’, ‘city’, ‘zipcode = ?’, $arrData[‘deliv_zip01’] . $arrData[‘deliv_zip02’]);

$paypalURL .= “address1=” . urlencode(mb_convert_encoding(str_replace($city, “”, $arrData[“deliv_addr01”]), “UTF-8”, CHAR_CODE)) . “&” ;
$paypalURL .= “address2=” . urlencode(mb_convert_encoding($arrData[“deliv_addr02”], “UTF-8”, CHAR_CODE)) . “&” ;
$paypalURL .= “city=” . urlencode(mb_convert_encoding($city, “UTF-8”, CHAR_CODE)) . “&” ;
$paypalURL .= “zip=” . $arrData[“deliv_zip01”] . “-” . $arrData[“deliv_zip02”] . “&” ;
$paypalURL .= “night_phone_b=(” . $arrData[“order_tel01”] . “)” . $arrData[“order_tel02”] . “-” . $arrData[“order_tel03”] ;

header(“Location: ” . $paypalURL);
} else {
header(“Location: ” . URL_SHOP_COMPLETE);
}
}

PAYPALのURLをPAYPALのサンドボックスのURLに、PAYPALのアカウントをPAYPALのサンドボックスのアカウントに、それぞれ、一時的に変更しましょう~。

これで、LC_Page_Shopping_Confirm.phpをアップロードしたら、EC-CUBEで、決済方法にPAYPALを選んで、テスト決済してみる。
PAYPAL(サンドボックス)サイトで決済して、その後、自サイトへリダイレクトされて戻ってくる、という一連の動作ができれば、OK。何度か動作確認して問題なければ、本番に切り替える。
以上どす。