如何防止当用户打开第二个付款窗口并为订单付款时,前一个窗口在订单完成后触发取消

问题描述 投票:0回答:1

当用户支付时,如果他们打开第二个支付窗口,之前的流程将在超时后取消订单,即使在第二个窗口用户有效地支付了它。

我们正在销售活动门票 (tickera),这会导致已售出的门票在买家收到最初付款标记为已付款且他们收到电子邮件后已经收到。

我们已经玩过超时设置,但我们确实需要为用户支付留出合理的时间窗口。我们结束了在 woocommerce/wordpress 之外执行一个进程(守护进程),该进程查找之前被标记为已完成并手动恢复情况后被取消的订单,但这意味着有人必须足够快地执行此操作,以便售出的席位仍然可用.

我们很乐意找到一种方法来以编程方式找到这些订单,一旦它们被取消,并且如果它们之前已完成,则撤消操作。

woocommerce payment cancellation
1个回答
0
投票

您的问题的一个可能解决方案是实施一个系统,实时跟踪每个支付交易的状态,并防止用户在前一个交易仍在处理时打开第二个支付窗口。

这可以通过实施锁定机制来实现,该机制可以防止为同一订单同时提交多个支付请求。例如,您可以使用数据库锁来防止为同一订单处理多个事务。

或者,您可以考虑使用支持令牌化或类似功能的支付网关,这样您就可以授权付款,而无需实际向客户收费,直到您收到确认之前的交易已完成。这将防止在付款完全处理和确认之前无法使用门票。

要自动检测之前标记为已完成的已取消订单并恢复这种情况,您可以实施一个脚本,定期检查数据库中的订单状态并恢复任何已取消但之前标记为已完成的订单。您可以使用 cron 作业或类似工具安排此脚本定期运行。

=> 解决这个问题的关键是实施一个健壮可靠的支付处理系统,防止同时处理多个交易,并确保在支付完全处理和确认之前无法使用门票。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.