バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > バグ報告・利用に関する質問 > GMOイプシロン決済時の商品在庫数減タイミング

バグ報告・利用に関する質問

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yt1969
投稿日時: 2018/3/3 22:26
対応状況: −−−
半人前
登録日: 2018/3/3
居住地:
投稿: 11
GMOイプシロン決済時の商品在庫数減タイミング
[EC-CUBE] 3.0.15 アップデート
[レンタルサーバ] さくらのレンタルサーバ スタンダード
[OS] FreeBSD 9.1-RELEASE-p24
[PHP] 7.1.14
[データベース] MySQL 5.5.59
[WEBサーバ] Apache/2.4.29
[導入プラグインの有無]
キャンセル時 在庫を自動で戻します
最近チェックした商品
Facebook連携プラグイン
GmoEpsilon
メール設定プラグイン
OrderPdf
配送伝票番号プラグイン
サイトマップ
独自プラグイン数種類

[現象]
本番環境において、在庫数1の商品を2人の顧客が購入してしまいました。
当該商品の商品マスター在庫数が-1になっています。
注文番号107
 受注日:2018/03/03 20:04:41
 入金日:2018/03/03 20:05:32
注文番号108
 受注日:2018/03/03 20:05:39
 入金日:2018/03/03 20:07:03
いずれもGMOイプシロンのクレジットカード決済で、ほぼ同時刻に同じ商品を買ってしまった様です。

〜〜
以下、EC-CUBE3.0.15インストール直後の状態での確認です。
状況設定は、「在庫数が1しかない商品を顧客のAとBがほぼ同時に購入しようとしている」です。

1. 顧客Aが商品をカートに入れる→レジに進む→…→ご注文内容のご確認
2. 顧客Bが同一商品をカートに入れる→レジに進む→…→ご注文内容のご確認

ここまではいずれの顧客にも在庫引き当てることなく処理が進み、

3. 顧客Aが「注文する」→ご注文完了
4. 顧客Bが「注文する」→購入エラー  選択された商品の在庫が不足しております。該当商品をカートから削除しました。

顧客Aが「注文する」押下時に在庫引き当てられて在庫数が-1され、顧客Bに商品が販売されるようなことはない。

→ つまりEC-CUBE本体の問題ではないと考えます。
〜〜

ところが、GMOイプシロンで決済する場合、ご注文内容のご確認画面で支払い方法にクレジットカードを選択し、「次へ」を押下すると、顧客AもBも同一商品を持ったままクレジットカード決済に進んでしまい、支払いできてしまい、両者ともにご注文完了となってしまいます。ここで在庫は合わせて2引かれ、-1となる。

これが今回起きた事象だと考えており、GMOイプシロン決済プラグインの在庫減タイミングが適切でないような気がするのですが、いかがでしょうか。
他の決済プラグインではこのような事象は起きないようになっているのでしょうか。


当方ほとんどが一点物の取り扱いのため、今回の処置としては後続の方にお詫びして諦めていただく他ないのですが、
このような事象が起こるようではECサイトとしてはNGと捉えており、原因究明と再発防止策を取りたいと考えています。
皆様のお知恵をお貸しください。
umebius
投稿日時: 2018/3/4 16:02
対応状況: −−−
登録日: 2016/7/22
居住地: Tokyo
投稿: 1007
Re: GMOイプシロン決済時の商品在庫数減タイミング
GmoEpsilonプラグイン(version: 1.1.1)の注文処理に制御を加えている部分を見ると、確かにEC-CUBE本体の在庫チェックの部分をスキップしてしまっているように見えます。

具体的にはPlugin\GmoEpsilon\GmoEpsilon::onControllerShoppingConfirmBefore です。

ちゃんと検証はしておりませんが、プラグインが原因であればこの箇所に修正が必要になるかと思います。

一方IPSのプラグインは在庫チェックを通っているように見えますので、プラグインによって挙動が違う可能性があります。


----------------
////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ /バグ修正/SEO はおまかせ
一緒にEC-CUBEでサイト制作を行うプログラマ・コーダー・デザイナー募集

yt1969
投稿日時: 2018/3/4 22:23
対応状況: −−−
半人前
登録日: 2018/3/3
居住地:
投稿: 11
Re: GMOイプシロン決済時の商品在庫数減タイミング
umebius 様

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

EC-CUBE本体の購入処理
Eccube\Controller\ShoppingController::confirmの直前にフックされて動作するところですね。

まだパッと見ただけですが
Plugin\GmoEpsilon\GmoEpsilon::onControllerShoppingConfirmBeforeを辿っていくと
Plugin\GmoEpsilon\Controller\PaymentController::index
Plugin\GmoEpsilon\Service\Client\GmoEpsilon_Credit::payProcess
ここでイプシロンサイトに遷移してカード情報入力、決済となるようです。

この間ずっと在庫はいじっていなさそうなので、前例にした顧客AとBが単一の商品に対して支払いができてしまうということですよね。

これを避けるためには、GmoEpsilonプラグインに制御が移る前にEC-CUBE本体の購入処理の途中くらい(Eccube\Service\ShoppingService::processPurchaseあたり?)まで進めて在庫減らしておくとかで、後続の顧客Bがイプシロンサイトに遷移前に在庫無くなったことを知れるようにすれば、、、

んー、エラー時に戻すことも含めてかなり弄らないといけないような気になってきました。。
umebius
投稿日時: 2018/3/5 9:15
対応状況: −−−
登録日: 2016/7/22
居住地: Tokyo
投稿: 1007
Re: GMOイプシロン決済時の商品在庫数減タイミング
少なくともGmoEpsilon_Credit::payProcessでは在庫チェック必要ですよね。

こちらってリンク型の決済なのですね。トークン型等だと悩まなくていい問題だと思うのですが。
ご指摘の通り、イプシロンの決済ページに移る前に在庫を確保しないといけないというのはかなり難易度高いですね。


----------------
////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ /バグ修正/SEO はおまかせ
一緒にEC-CUBEでサイト制作を行うプログラマ・コーダー・デザイナー募集

yt1969
投稿日時: 2018/3/13 20:12
対応状況: −−−
半人前
登録日: 2018/3/3
居住地:
投稿: 11
Re: GMOイプシロン決済時の商品在庫数減タイミング
プラグイン開発元となるイプシロンカスタマーサポートに問い合わせてみました。

回答そのまま貼り付けるのも何ですので要約しますと、現状対応しかねるが前向きに検討しますとのこと。


ちなみに、「リンク型決済を考慮した機能」がEC-CUBE3系では実装されていない為に、他社の決済プラグインでもリンク型の場合同じ状況だそうです。
その機能はEC-CUBE2系では実装されていたそうなんですが、具体的なことは私にはわかりません。


んー、なかなか運用でカバーしきれないところですので、、これは困りました。
nanasess
投稿日時: 2018/3/14 9:30
対応状況: −−−
登録日: 2006/9/9
居住地: 宝塚
投稿: 1774
Re: GMOイプシロン決済時の商品在庫数減タイミング
厳密にいうと、トークン式でもカード番号を入力する前に在庫を確保し、決済完了しなかった場合は戻すようにしないと同じようなことになると思います。

3系でも、一部のリンク式決済は、きちんと先に在庫確保しているものもあるんですけどね。


----------------
大河内健太郎(Kentaro Ohkouchi)
EC-CUBE公式エバンジェリスト
有限会社 Loop AZ

EC-CUBE1系2系長期サポートホスティングサービス CUBE Lab
https://cubelab.info/

yt1969
投稿日時: 2018/3/14 16:05
対応状況: −−−
半人前
登録日: 2018/3/3
居住地:
投稿: 11
Re: GMOイプシロン決済時の商品在庫数減タイミング
nanasess 様

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

GMOイプシロンではクレジットカード決済でトークン方式も使えるようです(プラグインではリンク式のみ)が、コンビニ決済なども利用したい(こちらはリンク式のみ)ため、単にトークン式にすれば解決するとも思っておりません。ご指摘のように、何らかの決済プロセスに入った時に在庫を確保させたいと考えます。

先に在庫確保するリンク式決済もあるのですね、コードを参考にしたいですね。。。

nanasess
投稿日時: 2018/3/15 9:03
対応状況: −−−
登録日: 2006/9/9
居住地: 宝塚
投稿: 1774
Re: GMOイプシロン決済時の商品在庫数減タイミング
確か、ソニーペイメントや、ルミーズはそうしていたかと思います。


----------------
大河内健太郎(Kentaro Ohkouchi)
EC-CUBE公式エバンジェリスト
有限会社 Loop AZ

EC-CUBE1系2系長期サポートホスティングサービス CUBE Lab
https://cubelab.info/

yt1969
投稿日時: 2018/3/15 21:43
対応状況: −−−
半人前
登録日: 2018/3/3
居住地:
投稿: 11
Re: GMOイプシロン決済時の商品在庫数減タイミング
nanasess 様

情報ご提供ありがとうございます。

ちょっと時間割いて他の決済プラグイン覗き見してみます。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は32,115名です
総投稿数は87,532件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1774
4
yuh
1512
5
468
1224
6
red
1178
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12 karin 656
13
tao_s
651
14 sumida 641
15
homan
633
16 DELIGHT 571
17
h_tanaka
566
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.