EC-CUBE2.11 EC-CUBEとは関係の無いページから商品購入ボタン | φ(..)メモとして残しておこう…

EC-CUBE2.11 EC-CUBEとは関係の無いページから商品購入ボタン

EC-CUBEで使われているSmartyでページをカスタマイズするのもいいけれど、BiNDなんかを使って作ったサイトにカートボタンを設置したい。。。

2.4系の場合には、スムーズにいけたんだけど2.11系からはトランザクショントークンの妥当性を検証するようになったので、トランザクショントークンを生成しなければならなくなった。

って訳で、トランザクショントークンの妥当性チェックをなくしちゃいます。


/data/class/helper/SC_Helper_Session.php

function isValidToken()
の202,205行目あたりを

$ret = false;

$ret = true;

に変更してしまいましょう(´∀`*)

あとは、カートボタンを設置したいページに以下を記述。

<?php
$token = sha1(uniqid(rand(), true));
$_SESSION[TRANSACTION_ID_NAME] = $token;

print <<< EOF
<form name="form1" id="form1" method="post" action="/shop2/products/detail.php?product_id=◎">
<input type="hidden" name="transactionid" value="{$token}" />
<input type="hidden" name="mode" value="cart" />
<input type="hidden" name="product_id" value="◎" />
<input type="hidden" name="product_class_id" value="●" id="product_class_id" />
<input type="hidden" name="quantity" value="1" />
<input type="image" src="/画像データパス/btn_cartin.jpg" alt="カゴに入れる" />
</form>
EOF;

?>

◎が商品ID
●が規格利用の場合の規格ID


<input type="hidden" name="classcategory_id1" value="■" id="classcategory_id1" />
<input type="hidden" name="classcategory_id2" value="■" id="classcategory_id2" />

上記を指定することで、細かい規格(?)指定も可能。
基本的には、Smartyで出力されたソースをコピペして「product_id」と「transactionid」を入れてあげれば
(;・∀・)ダ、ダイジョウブ…なはず。


本当は、ちゃんとクラスファイルを読み込んで処理しなきゃいけないのだけれど、簡易処理。


* 悪意のある不正な画面遷移を防止するため, 予測困難な文字列を生成して返す.
* 同時に, この文字列をセッションに保存する.

いや、まあ…どんな影響があるかはわからないので、カスタマイズは自己責任で。

ちゃんとお金を払って、「ちゃんとクラスファイルを読み込んで処理」をしてもらったほうがいい場合もあるかもしれません。

金額は…応相談で。