我遇到了在与Paypal合作的电子商务网站中实现礼品卡的问题。
我会尽量清楚。
一旦用户验证了他的购物车,他就可以输入代码作为礼品卡以获得折扣。礼品卡(和代码)只能使用一次,并且不会链接到用户。
因此,当用户输入代码时,我会检查代码是否存在,是否已经使用过,并获得折扣等等。
在Paypal的邮资上(一旦付款已被接受),我将礼品卡设置为已使用。
现在,如何防止两次或多次使用礼品卡蜂。因为当用户输入代码并转到Paypal时,另一个用户可以使用同一张礼品卡,而第一个用户未确认付款(并且未处理过邮购)。
我以为给礼品卡指定一个状态,例如在重定向到贝宝之前为“使用中”,但是如果用户在不确认购买的情况下离开贝宝,则礼品卡将始终为用中,然后我将无法再次对其进行检查。 ..
希望我已被理解,感谢您的帮助:)
最佳答案
好吧,您可以在输入代码时检查代码是否已被使用,然后在交易完成时再次检查。必须使用单个锁定数据库事务仔细检查第二个检查,该事务将检查代码是否已使用,然后将其标记为已使用。
如果在事务完成之前该代码已被其他人使用,则事务将因错误而失败。但是,大概这将是非常罕见的情况。
除此之外,我想知道您是否应该重新考虑您的设计。未链接到用户的一次性代码似乎很不寻常-通常将其链接到特定用户,这将使其更易于处理。您的用例是什么?