同时支付Con

2024-05-19 01:08:47 发布

您现在位置:Python中文网/ 问答频道 /正文

当我点击“下单”时,我已经开始交易,并在将用户带到商家网站之前,将is\u payment\u processing列设置为True,然后可能有三种可能性:

  1. 用户登陆成功回调页面
  2. 用户登录到失败回调页
  3. 用户既没有成功也没有失败,因为他关闭了窗口。你知道吗

在第三种情况下:产品将保持为支付\处理的状态。而且,其他尝试签出同一产品的用户将无法签出。但在这种情况下,我可能会失去一些客户,造成一些不便。你知道吗

考虑每分钟运行一个cron作业,它将跟踪该列的最后修改时间,如果更改时间超过3分钟,则将该标志设置为False。

这里最好的方法是什么?一般情况下,这是如何实现的?(并发控制)

另一个想法:Visit this question


Tags: 用户true产品is网站状态时间情况
2条回答

理想情况下,您应该在Product模型中有一个stock字段,以保持该产品的可用数量。你知道吗

当有人下订单时,应该创建一个单独的order实例,并指定Prodduct的数量。只有在收到对该order的回调或收到确认付款的webhook之后,股票才应该减少。你知道吗

这不会阻止其他客户在商品实际售出之前订购同一产品。你知道吗

另一种方法是当客户转到回调页面时减少库存,如果在一定时间内没有收到付款,则释放库存。这需要后台任务。你知道吗

注意:使用来自django.modelsF对象减少库存,以便从DB值而不是instance属性减少库存。你知道吗

如果您能够,Cron似乎是最好的方法(如果您在共享主机上,许多提供商不允许您使用任何Cron)

我可以通过检查事务是否仍在进行来使cron智能化。(这里我假设我有这样做的机制)

编辑: 请注意,一旦支付交易进行,锁定库存是相当标准的

相关问题 更多 >

    热门问题