ネットショップでは決済方法はできるだけ多く揃えておいた方が何かと便利ですが、決済種類によっては手数料がネックになることもあります。
特にネットで購入する場合はクレジットカード決済を使う人の割合はかなり多いということは皆さんもご存知かと思います。
でも、カード決済の手数料って意外とバカにならないんですよね。
5%前後が標準的なラインというところですが、商材によっては審査に通らなかったり、通っても10%近くの手数料を取られることもあったり。
ということで、私が導入してみたのが、PayPal決済。
PayPal決済はアメリカではシェアの高い決済方法で、メールアドレスを利用してクレジット決済が利用できるシステム。
取扱金額によって手数料が変わるんですが、なんと!2.4%から3.4%という手数料で利用できちゃうんです。
登録も誰でもできる気軽さに加え、登録料も不要ですので、これはかなりありがたいサービスです。
ということで、EC-CUBEにPayPal決済を導入する手順を。
こちらの記事を参考にさせていただきました。ありがとうございます。
ただ、バージョン2.0ではファイル構造が変わっていること、私の場合はそのままの手順でうまくいかなかった箇所があったので、コードは多少手直ししています。
(プログラミングの知識は全くの素人なので、イマイチなところもあるかと思いますがご勘弁を)
■PayPalアカウント登録&設定
アカウントの種類がいくつかあるんですが、「ビジネスアカウント」を登録すると支払いを受領する(=販売する)ことができます。
PayPalビジネスアカウント登録はこちらから
ここでビジネスアカウントを選択し、必要事項を入力して登録します。
登録したアカウントでログイン後、[マイアカウント]⇒[個人設定]⇒[販売の設定-ウェブサイト決済の設定]へ移動し、
・ウェブサイト決済の自動復帰-「自動復帰」をオン
・復帰URL:注文完了画面を設定。ほとんどは「ショップURL/shopping/complete.php」だと思います。
・支払データ転送:オン
・暗号化されていないウェブサイト決済の受領拒否:オフ
・PayPalアカウントオプションサービス:オフ
・連絡先電話番号:任意
と設定します。
次に[マイアカウント]⇒[個人設定]⇒[販売の設定-言語のエンコード]へ移動し、言語を日本語を選択し、詳細オプションからエンコード方式を「UTF-8」を選択します。
そして最後に[マイアカウント]⇒[個人設定]⇒[販売の設定-支払い受領設定]へ移動し、「クレジットカード利用明細上の名前」をショップ名などにします。
以上でPayPal側の設定は完了(の、はず…)。
■EC-CUBE側の設定
注文時にユーザが入力した情報を極力PayPal側に引き継ぐように設定します。
まず、決済方法にPayPal決済を追加しておきます。([基本情報管理]⇒[支払方法設定])
次に、/data/class/pages/shopping/LC_Page_Shopping_Confirm.php を開き、
148行目:// 決済方法により画面切替
155行目:}
までの箇所を、以下のように変更します。
// 決済方法により画面切替
if($payment_type != "") {
$_SESSION["payment_id"] = $arrData['payment_id'];
header("Location: " . URL_SHOP_MODULE);
}else{
if($arrData['payment_id'] == payment_id) {
$paypalURL = "https://www.paypal.com/j1/cgi-bin/webscr?cmd=_xclick&" ;
$paypalURL .= "businesspaypalアカウントのメールアドレス&" ;
$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);
}
}
赤文字で書いた箇所がご自分の情報を入れる箇所になるので、ここを補足説明します。
○payment_id
PayPal支払の場合だけPayPalに飛ぶという設定をするために必要なIDです。
確認方法は、ご自分でテスト注文をして、注文ステップ途中の「お支払方法の指定」の画面でソースを見るとそれぞれの決済方法に「value="xx"」とIDが振られていますので、そのxxの部分を記載してください。
○paypalアカウントのメールアドレス
PayPalに登録したアカウントのメールアドレスを記載します。
○商品名
ここが私が試したところうまくPayPal側に情報を引き継げず、私は暫定措置で固定の商品名を入れました。ご自分のショップで当たり障りのない商品名を入れてみて下さい。(雑貨ショップであれば「雑貨」など…)
以上を修正してアップロードすると、PayPal決済可能になっているはずですので、テスト注文で試してみて下さい。
ユーザ側から見た画面遷移としては、[注文]⇒[決済方法選択]⇒[PayPal決済画面へ移動し、決済]⇒[ショップ側の注文完了画面]となります。
最後にこの修正方法の注意事項をいくつか。
(1)参考にした記事でも触れられていましたが、どうしてもユーザの住所のうち都道府県名を引き継ぐことができず、ここはユーザ側に入力してもらう必要があります。(その他の住所情報はPayPal側に引き継がれます)
(2)上記はバージョン2.0での修正方法です。それ以前のバージョンでは、/shopping/confirm.php を同様に修正すればOKです。
(3)ユーザがPayPalで決済完了後、PayPalからユーザとショップ宛に決済完了通知のメールが届きます。
(4)ユーザがPayPalで決済完了後、PayPal側の決済完了画面へ移動しますが、10秒間そのページが開いたままになり、その後ショップ側の購入完了ページへ移動し、その時点でショップ側に注文情報が送られます。
このため、ユーザが10秒間の間に別ページに移動しないよう注意書きを入れておく必要があります。
もしくはPayPal決済完了画面に「こちらをクリック」というリンクがあり、そこをクリックすればショップページに戻りますので、その旨をユーザに事前に知らせておいて下さい。
ちょっとここがわかりづらいため、ショップページにはPayPal決済用の説明ページを設けておくことを推奨します。(私はこんな感じで作りました)
長々と分かりづらい説明になりましたが、ご参考にしていただければ幸いです。
また、この修正方法で完全に対応しきれなかった点や不備などがありましたらお知らせいただけるととても助かります。