EC-CUBEで購入キーを導入する方法

EC-CUBEで購入キーを導入する方法

大人気商品など、購入を制限して特定の人にしか購入できないようにEC-CUBEを改造してみました。
わりと単純?(^_^;)


改造要約:
1,商品登録の種別に「公開」「非公開」の他に「限定商品」を追加する
2,そのままだと全く表示されなくなってしまうので、商品詳細画面URLに購入キーを追加されたら表示する。
3,カート処理はデフォルトのまま。購入完了したら購入キーを使用済にする。

// カスタマイズその1
// 商品登録の種別に「公開」「非公開」の他に「限定商品」を追加する(これにより通常では表示されなくなる)

管理画面のシステム設定->マスターデータ管理(バージョンによっては、基本情報管理->マスターデータ管理)のmtb_dispに「3:限定商品」として追加。
購入キーがないと購入できない商品は「限定商品」にする。

// カスタマイズその2
// 購入キーを管理するテーブルを追加する(内容はINSERT文で入力するか管理画面を作る)

// 購入方法
購入者は、以下のようなメールを受け取る事により購入が出来る。GETで商品IDと購入キーが指定されている。
http://localhost/eccube/html/products/detail.php?product_id=4&purchase_key=12345

////// EC-CUBE側の改造 ///////////////

// カスタマイズその3
商品詳細URLを叩かれたら呼ばれるファイル
data\class\pages\products\LC_Page_Products_Detail.php

function action()内の100行目あたりに以下の処理を追加。
GETから購入キーを取得後、プロダクトIDの正当性チェック関数に渡す。(カートに入れる時にPOSTで渡されるので、POSTでも取得できるようにしておく)

// カスタマイズその4
// 引数に購入キーを追加。送った購入キー・顧客ID・商品IDの組み合わせが正しかった時のみ商品を表示させる。

// カスタマイズその5
カートに入れた後は、通常と同様の処理(トークン管理&画面遷移管理されているので外部からのアクセスは気にしなくても良い)
最後に、購入完了した場合は購入キーの使用済フラグをtrueにして、再使用不可にする。

「ご注文完了ページへ」へのボタンが押された時に、購入キーの使用済フラグを1にする。
data\class\pages\shopping\LC_Page_Shopping_Confirm.phpの144行目あたり

以下のサイトを参照しました。
http://aerocompact.blog91.fc2.com/blog-entry-12.html