EC-CUBE



2011年 10月 13

規格を利用していて、ある規格(長いものや重いものなど)の場合は別途送料となる場合の処理を書いてみる。
ただし無理やり実装。

動作

該当する規格分類の場合は送料を通常より1000円プラスする。

環境

EC-CUBE 2.4
PostgreSQL

段取り

各規格の分類は dtb_classcategory に格納されていて、classcategory_id というユニークな通し番号が振られている。
カートのセッションにもこの通し番号が格納されているようなので、こいつを使って判別することとする。
なので、適用する規格の分類を登録した後に、classcategory_id を調べなくてはならない。

工程

[eccube]/data/class/SC_CartSession.php

function chkClassCategory という関数を追加する.
一番最終行の

}
?>

の前に追加.

    /** カート中の商品をチェックして別送料対象かチェックする
     * 1つでも対象商品があればTrueを返す.
     * True:対象商品あり False:対象商品なし
     * $_SESSION[$this->key][$i]['id'][0]...プロダクトid;
     * $_SESSION[$this->key][$i]['id'][1]...規格1;
     * $_SESSION[$this->key][$i]['id'][2]...規格2;
     */
    function chkClassCategory() {
        $max = $this->getMax();
        for($i = 0; $i <= $max; $i++) {
            $classcategory1 = $_SESSION[$this->key][$i]['id'][1];
            $classcategory2 = $_SESSION[$this->key][$i]['id'][2];
            
            // マッチする条件を設定(以下は例)
            if(
                ($classcategory1 >= 208 AND $classcategory1 <= 211)
                OR ($classcategory2 >= 208 AND $classcategory2 <= 211)
                OR ($classcategory1 >= 11 AND $classcategory1 <= 16)
                OR ($classcategory2 >= 11 AND $classcategory2 <= 16)
            ) return true;
        }
        // マッチしなかったらfalseを返す
        return false;
    }

[eccube]/data/class/helper/SC_Helper_DB.php
function sfTotalConfirm

修正前

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

修正後

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

        // 規格分類チェック(送料オプション)
        $classcategory_flag = $objCartSess->chkClassCategory();
        if($classcategory_flag){
            $arrData['deliv_fee'] += 1000;
        }

例では該当規格分類の場合は1000円プラスするようになっている。
決め打ちの場合ここまでで出来てしまう。

テンプレートに注釈をつけるなら下記のように tpl_classcategory_flag をつけて、テンプレートを修正する。

修正前

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

修正後

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

        // 長尺商品チェック
        $classcategory_flag = $objCartSess->chkClassCategory();
        if($classcategory_flag){
            $arrData['deliv_fee'] += 1000;
            $objPage->tpl_classcategory_flag = 1;
        }

[eccube]/data/Smarty/templates/defaultKai/shopping/confirm.tpl
修正前

        <tr>
          <th colspan="4" class="resulttd">送料</th>
          <td class="pricetd"><!--{$arrData.deliv_fee|number_format}-->円</td>
        </tr>

修正後

        <tr>
          <th colspan="4" class="resulttd">送料
          <!--{if $tpl_classcategory_flag}-->
		  <br />
		  <span class="price">(内 大判送料:1,000円)</span>
          <!--{/if}-->
		  </th>
          <td class="pricetd"><!--{$arrData.deliv_fee|number_format}-->円</td>
        </tr>

[eccube]/data/class/pages/shopping/LC_Page_Shopping_Confirm.php
変更なしでおk


Filed under: EC-CUBE

Trackback Uri






2011年 9月 15

参考:EC-CUBEカスタマイズ – 商品詳細ページにテキスト入力欄を追加|ネットショップ構築&運営サポート – ビー・フレンド

例えば、ハンコの名前部分を入力してもらうとか、規格で管理できないほどの多量のサイズとかを入力してもらうようにできる。

参考ページの手順で導入してみたけれど、テキスト入力欄設定されていない商品をカートに入れることができない不具合があるみたい。あと、PostgreSQLの場合は、Viewを再生成する必要がある。

環境

  • EC-CUEB 2.4.4
  • PostgreSQL
  • データベース編集

    • テキスト入力欄を表示するか否かを判別するフラグ
      • 対象テーブル:dtb_products
      • 追加カラム:add_flg (データ型: integer)
    • テキスト入力欄(テキストボックス)
      • 対象テーブル:dtb_order_detail
      • 追加カラム:add_field (データ型: text)
    ALTER TABLE dtb_products ADD COLUMN add_flg integer;
    ALTER TABLE dtb_order_detail ADD COLUMN add_field text;

    ポイント

    pgsqlの場合はdtb_productsにカラムを追加したらviewの再生成が必要になる。

  • [EC-CUBE カスタマイズ日誌] 第 5 回 商品のサブ画像の数を増やしたい! | バシャログ。
  • EC-CUBE インストールディレクトリにある install/sql/create_view.sql を適宜変更して実行する。 .. continue reading ..


    Filed under: EC-CUBE

    Trackback Uri






    2011年 6月 1

    EC-CUBE 2.4の時はかなり手を加えないと使えない感があったのだけれど、久しぶりに触ってみた感じではなかなかの好感触。

    簡単に気づいた点は

    ポイント周りの不具合

    ポイントを付加するタイミングが「対応状況」を「発送済み」にした時になった。

    クレジットカードでの決済未完了時(失敗など)

    「決済処理中」という対応状況が増えて、入金待ちと区別が付きやすくなった。

    ウェブペイメントプラスでの確認だったけど、悪くないかも。決済フローも簡潔で、これなら3000円出しても価値があると思う。

    決済フローのスクリーンキャプチャ

    決済フロー
    注文確認画面。「次へ」で決済ページへ移行。

    決済フロー2
    PayPal ウェブペイメントプラスの決済ページ。iframeで表示されるので違和感もない。入力画面も簡潔でいい感じ。

    決済フロー3
    クレジットカード情報を送信した時もAjaxで処理されて、ページ移行がない。

    決済フロー4
    決済処理完了。ここまでスムーズに出来る。

    PayPalユーザーなら「PayPalで支払い」を選べばPayPalサイトへ移行して決済手続きをしてくれる。このフローが利用出来るだけでも価値がありそう。

    EC-CUBEでPayPalのsandbox(テスト環境)してみる

    PayPalウェブペイメントプラスの概要

    テストだけなら https://developer.paypal.com/ でアカウントを作成すれば出来るはず。

    「ウェブ ペイメント プラス インテグレーションガイド」 に詳しく書かれているけど、テストアカウントは売り手と買い手、それぞれ作成する事。

    また、受取人の「Payment Review」という項目は「Disabled」にしておく事。Enabled(レビューが必要)になっている場合は注意。

    PayPalテストアカウント

    EC-CUBE側はPayPal決済モジュールの設定画面で「決済サイトURL」を
    https://securepayments.sandbox.paypal.com/acquiringweb
    にする必要がある。
    メールアドレスは、テストアカウントの売り手のものを使う。

     

    Sign up for PayPal and start accepting credit card payments instantly.
    PayPal アカウントを作成して、あなたのサイトにカード決済を導入!


    Filed under: EC-CUBE,PayPal

    Trackback Uri






    2010年 9月 29

    EC-CUBE PayPal決済モジュールの注意点の続き

    PayPal決済モジュールのチェック機構を強化

    とりあえずのコードを書いてみた。
    なれないPHPだし、PostgreSQLだしで、いいのか悪いのか判断できません。
    基本的にEC-CUBE本体から拾ったコードを再利用しただけです。

    コードはEC-CUBE 開発コミュニティサイト – フォーラムに投稿してみました。

    ソースはこちらから
    PayPal決済モジュールのチェック機構を強化する

    動作するのか

    一応PayPalのテスト環境でテスト済みですが、ご利用は自己責任で。
    ツッコミ大歓迎。

     

    Sign up for PayPal and start accepting credit card payments instantly.
    PayPal アカウントを作成して、あなたのサイトにカード決済を導入!


    Filed under: EC-CUBE,PayPal

    Trackback Uri






    2010年 9月 28

    PayPal決済モジュールはチェックが甘い?

    PayPal決済モジュールは支払先のメールアドレス(receiver_email)の正当性しかチェックしていない。

    支払われた金額のチェックを行っていないため、(ポストされる内容を変更など)不正な金額を支払ったとしても入金済みにしてしまう。
    PayPalから届く入金確認メールの金額と違っていないか確認する必要がある。

    また、支払い済みのトランザクションIDの記録やチェックも行っていないため、不正利用される可能性もあると思われる。

    (たしか)PayPalからダウンロードしたPerlのサンプルスクリプトにもレスポンスが VERIFIED の場合以下のチェックを行えとある。

    # check the $payment_status=Completed
    # check that $txn_id has not been previously processed
    # check that $receiver_email is your Primary PayPal email
    # check that $payment_amount/$payment_currency are correct

    ちょっとチェック不足な気がするが・・・。

    つづきをどぞ
    EC-CUBE PayPal決済モジュールのチェック機構を強化する


    Filed under: EC-CUBE,PayPal

    Trackback Uri