PayPal決済導入方法


ネットショップでは決済方法はできるだけ多く揃えておいた方が何かと便利ですが、決済種類によっては手数料がネックになることもあります。

特にネットで購入する場合はクレジットカード決済を使う人の割合はかなり多いということは皆さんもご存知かと思います。

でも、カード決済の手数料って意外とバカにならないんですよね。
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決済用の説明ページを設けておくことを推奨します。(私はこんな感じで作りました)



長々と分かりづらい説明になりましたが、ご参考にしていただければ幸いです。

また、この修正方法で完全に対応しきれなかった点や不備などがありましたらお知らせいただけるととても助かります。






posted by eccube at 17:36 | Comment(14) | TrackBack(0) | 決済
この記事へのコメント
現在EC-CUBEでPaypalが使えるかためしています。単純なところでミスをしているのかもしれませんが、EC-CUBEのバージョンは2.20Betaです。

設定後、商品購入を試しているのですが、
Paypalに移動すると、

売り手が提供したPayPalメールアドレスに問題があるため、この取引は処理できません。売り手に連絡して問題を解決してください。eBay商品の支払いである場合は、商品ページの[Ask Seller a Question]リンクから売り手に連絡をすることができます。正しいメールアドレスが分かる場合は、www.paypal.comで支払いを行えます。

とのエラーになってしまいます。
設定でbusinessメールアドレス の部分がありますが、このアドレスはPaypalのアドレスと一致しているだけでよろしいのでしょうか?EC-CUBE側のアドレスとも一致させたりしていますが、でてしまいます。

businessにつづけて記載するのですよね?

もしメール等でご連絡していいのであればた試しているURLもお教えします。
お時間ありましたらお願い致します。
Posted by at 2008年06月25日 23:46
確かにこの書き方では先に進めないですよね。
修正お待ちしております。
Posted by mint at 2008年07月11日 07:37
$paypalURL .="business=メールアドレス&" ;

でうまくいった感じです。

差し出がましくて申し訳ありません
参考にさせていただきました。

もし 知って見える方おみえでしたら
この方法をとった場合
購入者はpaypalアカウントは必須なのでしょうか?
・PayPalアカウントオプションサービス:オフ
はオンにしちゃまずいですか?
Posted by at 2008年10月03日 10:39
はじめまして。
paypal決済をぜひ導入したいと思っているのですが、私が持っているアカウントはビジネスではなくプレミアです。
プレミアアカウントでも可能でしょうか?
”businesspaypalアカウントのメールアドレス”
のbusiness部分をPremiereに変えるくらいしか思いつきませんが・・・
Posted by at 2008年11月30日 05:49
初めて投稿します。
Paypalの上記の作業をしました。

登録すると、白紙になります。

なにかおかしいですか?
// 決済方法により画面切替
if($payment_type != "") {
$_SESSION["payment_id"] = $arrData['payment_id'];
header("Location: " . URL_SHOP_MODULE);
}else{
if($arrData['payment_id'] == IDトークン) {
$paypalURL = "https://www.paypal.com/j1/cgi-bin/webscr?cmd=_xclick &" ;
$paypalURL .="business=****@******.com&" ;
$paypalURL .= "lc=JP&item_name=" .MLM. "&" ;
$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);
}
}
if($payment_type != "") {
// TODO 決済方法のモジュールは Plugin として実装したい
$_SESSION["payment_id"] = $arrData['payment_id'];
$this->sendRedirect($this->getLocation(URL_SHOP_MODULE));
}else{
$this->sendRedirect($this->getLocation(URL_SHOP_COMPLETE));
}
exit;
break;
default:
break;
}

$this->arrData = $arrData;
$this->arrInfo = $arrInfo;
$objView->assignobj($this);
// フレームを選択(キャンペーンページから遷移なら変更)
$objCampaignSess->pageView($objView);
}
Posted by system101 at 2009年07月04日 18:14
初めまして。

現在EC-CUBEにてPayPal決済を検討しておりまして、このページへ辿り着きました。

以下の「PayPal決済用の説明ページ」へのリンクがリンク切れしております。
参考にしたいため、復旧していただけないでしょうか?
http://www.musicarco.net/user_data/paypal.php

よろしくお願い致しします。
Posted by at 2009年07月27日 15:29

うははははっ!!wwwすんげーパイオツな女の子とちゅっちゅしてきたよ〜!!www
突くたびにブルルンブルルン揺れるのはオパーイ好きにはたまらんwwwww(*´∀`*)
しかもたゆんたゆんのオパーイでズリズリもしてもらったし、キンモヂィィー!!www(ノ*゚∀゚)ノ

http://jam.tsukimisou.net/2ukf3kj/
Posted by ボッヨヨヨヨ〜〜ン!!www at 2009年08月09日 03:17
参考にさせて頂きました。
最近はPayPalも使える公式の決済モジュールも出てますね。
Posted by XROSS CUBE at 2010年06月25日 17:22

おっさん童☆貞が15万ゲットォォォ!!!!
若いコに筆おろししてもらえるとかマジ勝ち組すぐるwwwww

ていうか女とやるって意外とカンタンなんだなwwww
最近じゃ俺のメタボディを武器に、おにゃのこハメまくりっすよ!(*゚∀゚)=3
http://hko-hss.vega.topemope.net/
Posted by 余裕すぎわろたwww at 2010年09月30日 13:13

こんな時だからこそ、生きてる内に思いっきり楽しんでおきたい…
不謹慎なんて言うなよな!いっちまったら何もできないんだから…(´・ω・`)
http://3nmhz1n.glinds.info/
Posted by 備えあれば憂いナシ!! at 2011年03月22日 10:28

尺八してもらったけどありゃたまんねーな!!
ジュパジュパ凄い音させながら吸いつかれて、30秒で発射しちまった(笑)
しかもオレ、女にお任せして寝てただけなのに5マソも貰った件wwww
http://k437tvg.jp.takaoka.mobi/
Posted by 吸引力の変わらないただひとつの… at 2011年07月30日 18:27
ブラウス 高級時計 http://www.forshoppingadvancedjp.biz/
Posted by 高級時計 at 2013年08月03日 10:10
ワンピ ロレックス オーバーホール http://www.forshoppingaffectjp.biz/
Posted by ロレックス オーバーホール at 2013年08月03日 10:28
最も合理的な価格で商品を 消費者に提供致します、弊店のメールアドレスhoshi2013@163.comです。
レプリカロレックス http://www.jagreat.com/c-1.html
Posted by レプリカロレックス at 2017年02月20日 15:18
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。