处理两个人同时在网上商店购买一件独特商品
Posted
技术标签:
【中文标题】处理两个人同时在网上商店购买一件独特商品【英文标题】:Dealing with two people buying a unique item in an online shop at the same time 【发布时间】:2011-01-18 07:44:05 【问题描述】:我正在创建一个简单的在线商店,它使用与 PayPal 集成的 php 来销售独特的商品。我想知道的是,其他商店如何处理多个尝试使用同一商品完成付款流程的人。
这是我目前的策略草案:
商品具有三种状态类型:可用、暂停和已售出。 当用户移动到 PayPal 支付页面时,它会检查购物车中所有商品的状态以确保它们可用。它还将项目的状态设置为“暂停”,直到他们在确认付款后返回或超时(10 分钟?不确定这应该是什么)。这是标准做法还是我应该采取更实际的方法?
提前致谢!
【问题讨论】:
这是业务需求问题,不是编程问题。 @Richard 我不同意,它是关于并发性的。 @Richard:满足业务需求是编程的一个相当重要的部分,IMO。绝对是编程相关的。 @Treb:但定义业务需求不在 SO 范围内。这似乎更多地是关于定义业务规则而不是实施它们。恕我直言,当然。 @Richard:我认为这属于我认为与编程相关的需求工程。也许我们的分歧源于对与编程相关的的不同解释,对我来说,软件生命周期中的所有内容都与编程相关(我承认这是一种相当广泛的方法)。 【参考方案1】:看看Dell's UK outlet。当有人将系统添加到他们的购物篮时,它会被保留,其他客户无法使用。如果没有购买,该商品会在 15 分钟不活动后从购物篮中移除,然后可供其他客户使用。
【讨论】:
我不太喜欢这种解决方案,因为这会使愿意付费的潜在客户不必要地无法使用产品【参考方案2】:我会说您策略的第一部分是正确的 - 当您转到付款页面时,将所有产品标记为“暂停”
当用户完成付款后,您会收到来自 Paypal 的回传,让您知道授权是否成功(并且可能还允许您检查 CSC/CVV2 结果),此时您已经接受付款或拒绝付款的选项。
在收到回发后,您还应该检查项目是否仍处于搁置状态。如果他们已超时,您可以拒绝付款并显示“抱歉 - 已超时”或类似的消息。
如果您跟踪客户遇到超时的频率,此方法还允许您计算出理想的超时时间,因此如果超时太多,您可以将超时从(例如)5 分钟延长到 10 分钟,或者如果没有超时,请缩短它。
【讨论】:
【参考方案3】:这是固定库存系统的一个相当普遍的问题,例如场地、运输/航空公司 tix 等。
我喜欢航空公司模式,一旦您获得所需的行程并单击“选择”,您会看到一个包含乘客信息的页面,并显示一条消息:座位暂停,您现在有 xx(10/15) 分钟时间完成购买.那时一切都变得明确了。对于其他独特/独一无二的商品,我认为用户点击任何页面上的消息,说您还有 xx(mins) 剩余时间来完成购买,这将是“边缘”买家的一大动力!
【讨论】:
【参考方案4】:woot.com 因这个问题而臭名昭著,但他们的解决方案效果很好。验证付款信息后,用户将被带到一个页面,其中包含少量文字,例如“您的订单已收到,我们正在验证库存”。
看起来 paypal API 有一个“RefundTransaction”消息,所以这样的事情可能是不可能的。但是,如果您访问 paypal 网站然后再返回您的网站,用户体验可能会很尴尬。
【讨论】:
【参考方案5】:这很像在线预订剧院门票或类似的东西,是的,您描述的方式通常就是它的工作方式。在某些时候,该项目在系统中“保留”,客户完成交易或该项目在一段时间后被释放以供其他人购买。
当然,您在什么时候预订商品(当它被添加到购物车时,在您将它们发送到付款时等)取决于您。我希望将其放入购物车将是最佳选择,因为这样可以减少有人堆积一篮子东西却发现其中一半在结帐时不再可用。
【讨论】:
以上是关于处理两个人同时在网上商店购买一件独特商品的主要内容,如果未能解决你的问题,请参考以下文章
商店销售某一件商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此