EC-CUBE 0円商品のPayPal決済を回避する。

2014年05月23日 正午の月齢:24.2  月名:二十五日月  潮汐:長潮 月齢:24.2[二十五日月] 潮汐:長潮 | 3年前 | 旧暦:2014年04月25日 | 仏滅
In EC-CUBE | EC-CUBE 0円商品のPayPal決済を回避する。 はコメントを受け付けていません。

この記事を読むのに必要な時間の目安: 1分ぐらい

引き続きのEC-CUBE&PayPalネタ。

ま、記事にするほどでもないのですが、内部をゴニョゴニョといじって0円商品を登録したり、1円以上の価格の商品だけどポイントを利用して支払額が0円になったりしたときにPayPal決済を選択していたらちょっとマズいなー、と思ったのですが、自己解決しました。

billsetting

「管理画面」→「基本情報管理」→「支払方法設定」→「支払方法登録・編集」と進んで、「利用条件(円)」を「1円~」にすれば、PayPal決済を選べなくなるんですね。

payform

とまぁ、こんな感じで0円だとPayPalが使えなくなりますー。よくできてるなぁ。

関係あるかも知れない記事

前の記事・次の記事

前の記事
<<
次の記事
>>

EC-CUBE ダウンロード商品で通常モードのPayPal決済に対応させる。

2014年05月22日 正午の月齢:23.2  月名:真夜中の月  潮汐:小潮 月齢:23.2[真夜中の月] 潮汐:小潮 | 3年前 | 旧暦:2014年04月24日 | 先負
In EC-CUBE | EC-CUBE ダウンロード商品で通常モードのPayPal決済に対応させる。 はコメントを受け付けていません。

この記事を読むのに必要な時間の目安: 7分ぐらい

月々の使用料無料でクレジットカード決済を導入できるのがPayPal決済のメリット。PayPal決済を導入するには「PayPalビジネスアカウント」の取得が必要ですが、これも無料で手続きできます。で、決済方法にもいろいろな種類があってまた迷うわけですが、ペイパルアカウントを持っていない一見のお客さんにもクレジットカードを使ってもらおうと思うと、「ウェブペイメントスタンダード」しかないようです。(「エクスプレスチェックアウト」は画面遷移が少なくて魅力的なのですが、お客さんがペイパルアカウントを持っているか、決済時にアカウントを作るかしなければならないんです。)

このウェブペイメントスタンダードは、「自サイトで購入手続き→PayPal決済画面に遷移→自サイトに戻る」という流れになります。この流れを実現するために必要なモジュールが「ペイパルエクスプレス チェックアウト決済モジュール」。エクスプレスとついていますが、スタンダードもこのモジュールで対応できます。

早速テストしてみて最初にハマッたのが、パーミッションの設定。public_html/user_data内のpaypal_cancel.phppaypal_recv.php666になっているとうまく動かないようなので644にしてやります。ただこの症状、必ず発生するってわけでもなくて、3サイトで試したところ1箇所だけで発生しました。いずれにしても導入時には確認しておいたほうがいいかも知れません。

特に問題がなければ、以上で設定は終了。クレジットカードに対応したショッピングサイトの完成です。(ホントは決済完了のステイタスをEC-CUBEに連携するとか、いろいろと課題はあるんですケド。)

・・・さて。

ここからが本題なのですが、通常発送の商品のみを扱うのだったら問題ないのですが、ダウンロード商品を扱う場合に大変なことがおこります。

paypal-link

通常なら、この画面がしばらく表示された後に「PayPal決済サイトへ遷移しています。しばらくお待ち下さい。」の文字とともにPayPalの画面に遷移するのですが、ダウンロード商品の場合はここで止まってしまい、先に進めません。仕方がないので「戻る」ボタンで戻るのですが、これじゃあPayPalでダウンロード商品を購入できません。

調べてみてもなかなか情報が見つからなかったのですが、ようやくそれっぽい情報を見つけることができました。

この中にあった回答

ウェブペイメント・スタンダードでは、セラープロテクション(売り手保護 https://www.paypal.com/jp/cgi-bin/webscr?cmd=xpt/Marketing/securitycenter/sell/SellerProtection-outside) の対応に伴って、配送先住所の入力が必須になっているため、ダウンロード商品の場合だとエラーになるようです。

data/downloads/module/mdl_paypal/LC_Page_Mdl_Paypal_Helper_Link.php の 147行目付近以降の EXIST_CHECK をはずしてみるといかがでしょうか。

とのことなので、早速該当する箇所を修正してみます。LC_Page_Mdl_Paypal_Helper_Link.phpの145行目からペイパルスタンダードのパラメータの記述が始まるのですが、「city」「address1」「state」「zip」「first_name」「last_name」の「array("EXIST_CHECK"), 」を消してやります。

$objFormParam->addParam("amount", "amount", STEXT_LEN, "n", array("NUM_CHECK", "EXIST_CHECK", "MAX_LENGTH_CHECK"), $arrOrder['payment_total']);

$objFormParam->addParam("undefined_quantity", "undefined_quantity", 1, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"), PAYPAL_UNDEFINED_QUANTITY);

$objFormParam->addParam("city", "city", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrShipping[$min]['shipping_addr01']);

$objFormParam->addParam("address1", "address1", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrShipping[$min]['shipping_addr02']);

$objFormParam->addParam("state", "state", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $this->arrPref[$arrShipping[$min]['shipping_pref']]);

$objFormParam->addParam("zip", "zip", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrShipping[$min]['shipping_zip01'] . $arrShipping[$min]['shipping_zip02']);

$objFormParam->addParam("first_name", "first_name", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrShipping[$min]['shipping_name02']);

$objFormParam->addParam("last_name", "last_name", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrShipping[$min]['shipping_name01']);

これで、ダウンロード商品をPayPal決済できるようになりました。

ただ、副作用というか、ちょっと新たな問題が発生しました。上記のデータチェックはずしを行うとダウンロード商品が購入できるようになる代わりに、遷移した後の画面でPayPalアカウントを使わずにクレジット決済をしようとするときに表示される入力フォームの項目すべてを手で埋めなければなりません。ちなみに改造前のファイルの場合はこんな感じで、会員登録したときの氏名・住所等が最初から入っています。

paypal-reg

これをお客様サービスの低下と捉えるかどうかは微妙ですが、今のところどちらかを犠牲にしなければならない状態です。もっと核の部分をいじれば解決するんでしょうけど。

今回のファイル修正は、「ダウンロード商品を扱いたい」かつ「ペイパルウェブペイメントスタンダードを導入したい」場合に限ってのことなので、ダウンロード商品を扱わないのであればまったく関係のないお話なのでした。

 

関係あるかも知れない記事

前の記事・次の記事

前の記事
<<
次の記事
>>

EC-CUBE デフォルトテンプレートのセンタリングのズレを直す。

2014年05月6日 正午の月齢:7.2  月名:弓張月(上弦)  潮汐:小潮 月齢:7.2[弓張月(上弦)] 潮汐:小潮 | 3年前 | 旧暦:2014年04月08日 | 大安
In EC-CUBE | EC-CUBE デフォルトテンプレートのセンタリングのズレを直す。 はコメントを受け付けていません。

この記事を読むのに必要な時間の目安: 1分ぐらい

ここ最近いろいろと試しているEC-CUBE。2.13系のテンプレート作りにハマっています。2.12系の構築には「デザインテンプレート・シンプルバージョン(2.11系・無料)」を元に作りこむことができたのですが、さすがに2.13系ではうまく動いてくれないので、2.13系のデフォルトテンプレートを使って構築することにしました。

さて、今まで気づかなかったデフォルトテンプレートの気になる部分。今回はそれを直してみようと思います。

デフォルトテンプレート修正前

お気づきでしょうか。トップ画面から現在のカゴの中に移動すると、全体のデザインがずれてしまうのです。最初はCSSのバグかなと思ったのですが、よく見るとスクロールバーの表示・非表示で画面中心が移動しているのが原因みたい。

スクロールバーが表示されない高さのときもバーの領域を確保しておくことで、この現象を回避できそうです。さっそく、common.cssに以下の記述を追加してみました。

html {
overflow-y: scroll;
}

さてさて、

デフォルトテンプレート・修正後

これで、気色悪い動きがなくなりましたー!!

関係あるかも知れない記事

前の記事・次の記事

前の記事
<<
次の記事
>>