4

私のクライアントは、電子機器を販売する e コマース Web サイトを運営しており、製品が在庫よりも多く販売される状況がありました。これは、在庫が 1 つしかないときに 2 人のユーザーが同時に商品を購入した場合、一方のセッションが他方のセッションが開始する前にその商品を売り切れとして登録し終えないためです (したがって、1 つあると見なして通常どおり継続します)。左)プロセスの最初にチェックインがありますが。これには明らかにお金がかかり(チャージバック手数料、払い戻しなど)、消費者にとって不便です.

それで、これを修正する方法があるかどうか疑問に思っていましたか?プロセスの最初に「マーカー」を作成することを考えました。つまり、在庫をチェックし、売り切れの場合はそのようにラベル付けして、他のセッションが購入できないようにします。しかし、これはさらに問題を引き起こします。顧客側でプロセスの途中でキャンセルする原因となる何かが発生した場合 (停電など)、製品が販売済みとしてマークされていても、チェックアウト以降、実際には販売されていません。プロセスが終了しませんでした。これが続くと、製品の過剰在庫が発生します。第二に、別のセッションが販売済みとしてマークしている間に、セッションが在庫をチェックすることも可能です。したがって、2 番目のセッションが既に購入した場合でも、最初のセッションは続行されます。これにより、元の問題に戻ります。

データベース側でのテーブルのロックを検討していますが、それが最善のアイデアかどうかはわかりません。どんな提案でも大歓迎です!

ありがとう、ディップ

4

2 に答える 2

1

ユーザーがチェックアウトしたときに注文が行われるようにフェールセーフを設定できますが、注文が発送されるまでユーザーのクレジット カードに実際に請求されることはありません。次に、在庫がなくなった場合は、それらの顧客にメールを送信して、「申し訳ありませんが、X は売り切れました。請求は行われません」などと伝えることができます。

補償として次の注文で何らかの割引を提供することもできますが、このプロセスでは、在庫がなかった注文に対して実際に請求されることはないため、チャージバック手数料や返金などを回避できます。

もちろん、これによりサイトでの注文の処理方法が変わり、注文の準備が完了するたびに誰かがシステムに情報を入力する必要があるように思えます. また、詐欺を防ぐために、注文する前にカードが有効であることを確認するために、カードの検証が必要になりますが、おそらくサイトはすでにこれを行っていますか?

于 2010-08-02T15:09:51.880 に答える