EC-CUBE3の値引き(某大手ペイメント対応)もする
前の記事
rider-dice.hatenablog.com
でも触れた値引き、でもこれってEC-CUBE単体の値引きにしかなってなくって某大手のペイメント会社さんを通すと
購入金額のまま送られてしまっている。つまり自分の書いたコードだとコード足らずだったので調査。
今回調査したのは、EC-CUBE純正のクーポンプラグイン。
これを使った場合、ペイメントに登録されるデータも値引きされた金額になっている。
と言う訳でソースコードを確認。
#346行目
$this->setCouponOrder($Order, $Coupon, $formCouponCd, $Customer, $discount, $app);
ここでオーダーの再受注をしている。
んで、setCouponOrderのロジックを見ると
$total = $Order->getTotal() - $discount; $Order->setDiscount($Order->getDiscount() + $discount); $Order->setTotal($total); $Order->setPaymentTotal($total); $app['orm.em']->persist($Order); $app['orm.em']->flush($Order);
受注を更新する為にflushしているのと、setPaymentTotalに合計金額を入れている。
ここが抜けていた為に、DB上と表示上は金額が変更出来ているがペイメント会社さんには割引額が伝わっていなかった。
このままコピっとけば汎用性があるのでメモ。