返信先: 売り切れ商品が購入できる

フォーラム バグ報告 売り切れ商品が購入できる 返信先: 売り切れ商品が購入できる

#90333
nanbu
キーマスター

こんにちは

問題点を少し整理させていただきたいと思います。

Welcartの商品の売り切れ状態とは次のようになります。

A. 在庫数に0が設定されている
B. 在庫状態が「売り切れ」になっている

上記A、Bのどちらかが該当する場合在庫無しと判断します。
テーマによっては在庫状態が無視されるものもあるかもしれないので
A、Bの両方が適用されていれば間違いないかと思います。

その上で、

1. カートに入ってしまうのはなぜか
  JavaScriptにエラーが出ている場合、カートに投入はできる可能性があります。
  ただし、在庫状態はサーバーサイドで複数回チェックを行っていますので、
  カートページから次のお客様情報入力ページへは遷移できません。
  また、内容確認ページや購入直前にも在庫チェックを行っています。
  【想定できる原因】
  ・JavaScriptにエラーが出ている
  ・キャッシュプラグインを使用している
  ・オペレーターの操作により在庫が変動している
   ※在庫数は受注のキャンセルなどの操作で変動します。
  
2. 購入できてしまうのはなぜか
  上記でもご説明いたしました通り、サーバーサイドで何度も在庫チェックを
  行っていますので、基本的に在庫切れの商品を購入することは不可能です。
  ただし、ご利用のクレジット決済によってはダブルブッキングが起こる可能性が
  あります。また、商品データの不整合によって在庫状態が正しく判断できなく
  なっている可能性もあります。
  【想定できる原因】
  ・外部リンク型のクレジット決済を利用している場合、在庫の最終チェックは
   内容確認ページが最後となります。在庫の引き落としはクレジット決済が
   成功してからとなりますので、外部決済のカード番号入力の画面で時間が
   経つと、他のお客様が同一商品を購入してしまう可能性があります。これを
   ダブルブッキングと呼んでいます。これを回避するにはトークン決済方式の
   クレジット決済に変更するしかありません。
  ・何らかの原因で、データにゴミが発生して在庫状態を正しく取得できなく
   なっている可能性があります。このようになった場合、この商品だけが
   常に異常な在庫状態となります。これを確認するには、phpMyAdminなどで
   データベースを直接確認して、postmetaテーブルに重複がないかを調査
   しなくてはいけません。

以上のようなことが考えられます。
いろんなことが想定されますが、サーバーの異常や操作ミスがないにも関わらず起こりえるものとしては、外部リンク方式のクレジット決済を使用することで発生するダブルブッキングです。
もし原因がわからない症状が発生している場合は、調査を行わせていただきますので下記にお問い合わせください。
https://www.welcart.com/wc_nav/

よろしくお願いいたします。