ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、
管理画面の受注登録すると、受注データが二重で登録されてしまいます。
【再現方法】
・EC-CUBE 2.13系 をインストールする
・ペイパル ウェブペイメント プラス 決済モジュールをEC-CUBEにインストールして、サウンドボックスの設定をする。
この時、定期購入は有効にしている。
・受注管理の受注登録から新規登録する。
・受注管理から検索すると、先ほど作った受注データが二つ作られてしまう
なぜ2回作成処理が行われているのか、
LC_Page_Admin_Order_Edit の211行目〜218行目あたりにログ出力を入れて動作を確認してみました。
$message = '受注を登録しました。';
$order_id = $this->doRegister(null, $objPurchase, $objFormParam, $message, $arrValuesBefore);
if ($order_id >= 0) {
$this->tpl_mode = 'edit';
$objFormParam->setValue('order_id', $order_id);
$this->setOrderToFormParam($objFormParam, $order_id);
}
$this->tpl_onload = "window.alert('" . $message . "');";
下記のように 作成されたorder_idのログを吐き出すように変更
$message = '受注を登録しました。';
$order_id = $this->doRegister(null, $objPurchase, $objFormParam, $message, $arrValuesBefore);
if ($order_id >= 0) {
$this->tpl_mode = 'edit';
$objFormParam->setValue('order_id', $order_id);
$this->setOrderToFormParam($objFormParam, $order_id);
}
GC_Utils_Ex::gfPrintLog($order_id, '' , true );
$this->tpl_onload = "window.alert('" . $message . "');";
吐き出されたログ内容は下記になりました。
2015/06/22 16:49:51 [/setting/order/edit.php] 59 from 127.0.0.1
login_id = admin(0)[2omeh4q275djvn8hgjr1plg337]
【eccubeディレクトリ】\httpdocs\setting\order\edit.php(29): LC_Page_Admin_Order_Edit_Ex->process
【eccubeディレクトリ】\httpdocs\data\class_extends\page_extends\admin\order\LC_Page_Admin_Order_Edit_Ex.php(54): LC_Page_Admin_Order_Edit->process
【eccubeディレクトリ】\httpdocs\data\class\pages\admin\order\LC_Page_Admin_Order_Edit.php(133): LC_Page_Admin_Order_Edit->action
【eccubeディレクトリ】\httpdocs\data\class\pages\admin\order\LC_Page_Admin_Order_Edit.php(219): GC_Utils->gfPrintLog
2015/06/22 16:49:51 [/setting/order/edit.php] 60 from 127.0.0.1
login_id = admin(0)[2omeh4q275djvn8hgjr1plg337]
【eccubeディレクトリ】\httpdocs\setting\order\edit.php(29): LC_Page_Admin_Order_Edit_Ex->process
【eccubeディレクトリ】\httpdocs\data\class_extends\page_extends\admin\order\LC_Page_Admin_Order_Edit_Ex.php(54): LC_Page_Admin_Order_Edit->process
【eccubeディレクトリ】\httpdocs\data\class\pages\admin\order\LC_Page_Admin_Order_Edit.php(134): LC_Page_Admin->sendResponse
【eccubeディレクトリ】\httpdocs\data\class\pages\admin\LC_Page_Admin.php(110): SC_Helper_Plugin->doAction
【eccubeディレクトリ】\httpdocs\data\class\helper\SC_Helper_Plugin.php(145): call_user_func_array
(): SC_Helper_Plugin_PaypalWebpayment->process
【eccubeディレクトリ】\httpdocs\data\downloads\plugin\mdl_paypal\SC_Helper_Plugin_PaypalWebpayment.php(170): LC_Page_Admin_Order_Edit->action
【eccubeディレクトリ】\httpdocs\data\class\pages\admin\order\LC_Page_Admin_Order_Edit.php(219): GC_Utils->gfPrintLog
LC_Page_Admin_Order_Edit_Ex の actionを実行後に
hookされているSC_Helper_Plugin_PaypalWebpaymentが
170行目で、またLC_Page_Admin_Order_Editのactionを読んでしまい
2回実行されているような気がします
確認に使用した環境
【対象モジュール】 ペイパル ウェブペイメント プラス 決済モジュール(2.11系・2.12系・2.13系)Version.3.1.3
【EC-CUBE 】2.13.1から2.13.3すべてに再現
【サーバーOS 】Windows NT MG-LENOVO02 6.3 build 9200 (Windows 8.1 Home Premium Edition) i586
【DBサーバー 】MySQL 5.6.24-log
【WEBサーバー 】Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP5.5.19