「吉田拓郎&かぐや姫 in つま恋 2006」のオフィシャルグッズ販売のオンラインショッピングサイトで、表示上の在庫がゼロになってしまうというトラブルがありました。
tsumagoi_online.png
この画面には表示されていませんが、9月26日夜から27日朝にかけて、「在庫をすべてカートに入れ”品切れ”の状態にしている悪質な方がいます。ログ解析による特定を依頼中!」という表示がありました。
実際の在庫があるのに表示だけ「在庫切れ」になっているおすると、これは推測なのですが、オンラインショッピングをするときにカートに商品を入れると、その時点で在庫が減らされてしまうのではないかと思いました。
ショッピングカートの設計をするとき、特に販売数量が決まっている商品の場合、在庫を減らすタイミングをどの時点にするのかというのは、結構悩ましい問題だったりします。カートに入れたときに在庫を減らさない(決済(支払)完了時に在庫を減らす)ようにすると、最後の1個を複数の人が取り合うような状況になったとき、「カートに入れたのに買えなかった」という事態になってしまいます。
きっとこのショッピングカートを設計した人は、このような状態を回避したかったのかもしれません。ですが、ブラウザが閉じられたことをサーバ側で知る方法がないという問題が立ちはだかります。
在庫を減らしたままにしておいても、ブラウザを閉じたことが検出できればその時点で商品を元に戻せば問題ありません。ブラウザが閉じられたことがわからないので、在庫が減らされた商品は決済が行なわれることなく、ずっと減ったままになってしまいます。
これを回避するためには、15分とか30分とか、一定の時間が経過したら強制的に在庫を元に戻す(カートから戻す)処理を行なうことが考えられます。でもこの場合はユーザーが意識しないうちに商品が元に戻ってしまう可能性があります。
そこで私が考える最善策は、決済(支払)完了時に在庫を減らすというものです。この場合、最後の1個を複数の人がカートに入れることができてしまうため、決済を行なうタイミングではすでに商品が売り切れているという可能性がありますが、これは決済を行なう前に数量を再チェックするようにし、ユーザーには「決済処理中に他のユーザーが購入しました」というようなメッセージを出して勘弁してもらう、ということになるんじゃないかと思います。

カテゴリー: サーバ関連

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください