バージョン選択

フォーラム

メニュー

オンライン状況

96 人のユーザが現在オンラインです。 (85 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 95
tattsu もっと...

サイト内検索

バグ報告 > 管理機能 > ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、 管理画面の受注登録すると二重で登録される。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
se3417
投稿日時: 2015/6/22 17:26
対応状況: −−−
新米
登録日: 2015/6/11
居住地:
投稿: 4
ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、 管理画面の受注登録すると二重で登録される。
ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、
管理画面の受注登録すると、受注データが二重で登録されてしまいます。


【再現方法】

・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
nanasess
投稿日時: 2015/6/23 9:27
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、 管理画面の受注登録すると二重で登録される。
SC_Helper_Plugin_PaypalWebpayment の170行目付近、 $objPage->action(); の前で、 mode を edit に書き変えてみるといかがでしょうか?


if ($objPage->getMode() == 'add') {
    $_POST['mode'] = 'edit';
}
$objPage->action();

se3417
投稿日時: 2015/6/23 10:40
対応状況: 解決済
新米
登録日: 2015/6/11
居住地:
投稿: 4
Re: ペイパル ウェブペイメント プラス 決済モジュールを有効の状態で、 管理画面の受注登録すると二重で登録される。
nanasess 様

お返事ありがとうございます。



試しに、$_POST['mode'] の値を edit に書き換えてみましたが、
受注登録が二重に登録されてしまいました。


$objPage->getMode()が参照しているグローバル変数が$_REQUESTの方だったみたいなので、
$_REQUEST['mode']の値を edit に書き換えて実行したところ

受注登録を開いた時に、何もポストしてないのに状態から
バリデートエラーが表示された状態になり
登録すると、二重で登録されてしまいました。


最終的に actionが2回実行される必要性がないので
SC_Helper_Plugin_PaypalWebpayment の170行目の $objPage->action(); を
コメントアウトして対応する事で対応いたしました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,865名です
総投稿数は109,999件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.