バージョン選択

フォーラム

メニュー

オンライン状況

44 人のユーザが現在オンラインです。 (35 人のユーザが フォーラム を参照しています。)
登録ユーザ: 2
ゲスト: 42
swat roshan766 もっと...

サイト内検索

 > フロント機能 > 管理画面から受注登録し、ステータスを8(購入処理中)にすると決済画面で不具合が発生する

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nakunaru
投稿日時: 2016/2/4 23:57
対応状況: −−−
半人前
登録日: 2015/3/16
居住地:
投稿: 14
管理画面から受注登録し、ステータスを8(購入処理中)にすると決済画面で不具合が発生する
お世話になります。
ver 3.0.7にてサイト運用中です。
以下の問題にぶつかりましたので、アドバイスを頂ければと思います。

1. 管理画面の受注登録で適当な商品を受注登録する。
  この際にステータスを「購入処理中」にする。
  ここで登録された受注は dtb_order.pre_order_id がNULLとなり、
  status が8となる


2. フロント側で適当な商品をカートに入れ、「レジに進む」をクリックする
  ここで、以下の受注データの取得SQLが発行されており、これで取得された商品の
  決済画面が表示される。

  SELECT ..... FROM dtb_order t0
WHERE t0.pre_order_id IS NULL
AND t0.status = 8
AND ((t0.del_flg = 0)) LIMIT 1

  1の手順で登録した受注が条件に該当するため、カートに入れた商品とは異なる商品の
  決済画面となる。
  また、1で受注登録された商品が削除処理済みの場合、商品情報が取得できないため、
  決済画面はエラーで表示できずに終了する。

以上のような現象が発生し、一切の購入処理ができない状況となりました。
pre_order_idがnullで、かつstatusが8で削除されていない受注が居なければよいので
現在は該当受注のdel_flgを1にして回避しています。


お聞きしたいのは、決済画面に進む際にの受注データ取得で、 pre_order_id isnull and status=9 and del_flg=0 という絞込が行われている箇所、これはECCubeの不具合と考えてよいでしょうか。
セッションなどの特定をせずに、order byもなく、limit 1で取得しているという部分が、
確実にそのセッションの情報をとっているとは思いにくいのですが、適切な修正方法をご存知の方が居られましたらお願い致します。


※Githubのissueもざっと眺めてみましたが、これに該当するものはなさそうでした。
 これはあちらに投げた方がよいものでしょうか…
shhirose
投稿日時: 2016/2/5 9:17
対応状況: −−−
一人前
登録日: 2014/4/24
居住地:
投稿: 94
Re: 管理画面から受注登録し、ステータスを8(購入処理中)にすると決済画面で不具合が発生する
引用:

お聞きしたいのは、決済画面に進む際にの受注データ取得で、 pre_order_id isnull and status=9 and del_flg=0 という絞込が行われている箇所、これはECCubeの不具合と考えてよいでしょうか。


受注管理で作成したデータの pre_order_id が NULL のままという使用なので、動作としては不具合になりますね。


引用:

セッションなどの特定をせずに、order byもなく、limit 1で取得しているという部分が、
確実にそのセッションの情報をとっているとは思いにくいのですが、

pre_order_id にセットする値がセッションに保存されている値を使用しているのでセッションの特定はされております。
※ただし、値が NULL のため、SQL 生成時に pre_order_id is null となってしまっているようです。


引用:

適切な修正方法をご存知の方が居られましたらお願い致します。

ひとまず以下のような修正を行ってください。

{EC-CUBEインストールディレクトリ}/src/Eccube/Service/ShoppingService.php

72行目付近に public function getOrder($status = null) という関数があると思います。
その関数に以下の処理があります。
引用:

// 受注データを取得
$preOrderId = $this->cartService->getPreOrderId();


この処理の下に以下の処理を追加してください。
if (!$preOrderId) {
return null;
}



Issue をあげておきました。
https://github.com/EC-CUBE/ec-cube/issues/1452

nakunaru
投稿日時: 2016/2/16 13:20
対応状況: −−−
半人前
登録日: 2015/3/16
居住地:
投稿: 14
Re: 管理画面から受注登録し、ステータスを8(購入処理中)にすると決済画面で不具合が発生する
shhirose様

お世話になります。
ご返信が遅くなりましたが、ご回答頂きありがとうございます。
Githubの方も確認致しました。

取り急ぎ、管理画面から、受注ステータスを8にするシチュエーションが考えられなかったので、ステータス変更画面のリストボックスから、該当ステータスを非表示に変更して、事故防止をしました。

getOrderファンクションの修正については、影響範囲が大きそうなので、もう少し浅いところで回避コードを入れるか調査中です。

いったん当方の問題は解決というステータスにさせて頂きます。
どうもありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,944名です
総投稿数は110,018件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.