在重定向到基于表单的支付网关之前/之后处理订单

Posted

技术标签:

【中文标题】在重定向到基于表单的支付网关之前/之后处理订单【英文标题】:Handling an order before/after redirecting to a form-based payment gateway 【发布时间】:2016-05-22 20:54:49 【问题描述】:

我正在使用电子商务框架 django-oscar (Oscar)。 在 Oscar 中,结帐流程如下所示:

    收集运输信息。 选择付款方式并收集付款详情。 预览订单并确认。 冻结购物篮(以防止操纵)、处理付款并下订单。

我正在集成一个基于表单的支付网关(需要发布带有支付详细信息的表单),现在结帐过程变得混乱:

一个。收集运输信息。

b.选择付款方式。

c。预览订单并确认。

d。冻结购物篮并下一个未付款的订单。

e。重定向到支付网关。

f。退货时将订单标记为已付款。

我遇到了这些问题:

1) (c) 和 (d) 必须一步完成,因为在 (e) 之前网站与用户之间没有交互 - 我无法将客户 POST 重定向到支付网关,因此点击“确认”将他/她直接移动到那里。并且由于在显示预览页面时已经下订单,因此客户不可能从那里返回 - 购物篮将是空的。我可以在预览和支付网关之间放置另一个页面,但这看起来不是一个优雅的解决方案。还有一个吗?

2) 下订单意味着分配商品并将其从库存中移除(其他客户将无法购买),否则当客户从支付网关返回时,某些商品可能会变得不可用。不可避免地,一些订单将未付款,因此将保留物品。应该何时以及如何将它们“无保留”并移回库存?

在我看来,这些问题并不是奥斯卡特有的,那么处理它们的最佳实践是什么?

谢谢!

附:我在 Oscar (https://groups.google.com/forum/#!topic/django-oscar/ccClzX6M9To, Integrating a redirection-included method of payment in django-oscar) 中发现了一些关于集成基于表单的支付网关的讨论,但没有提到概述的问题。

【问题讨论】:

【参考方案1】:

交易完成后从库存中移除产品。 并显示客户的新订单号。

让客户知道他们将收到一封电子邮件,其中包含所有相关详细信息,包括他们刚刚订购的产品。

取出购物车商品并将它们插入到订单商品数据库表中。换句话说,公共购物车表应该与您用来存放订单商品的表完全分开。那么您不必担心“冻结”购物车表等。

如果产品在客户在 支付网关(其他人更快地购买它们)?

对于大多数商家来说,这种情况不会经常发生。但在正常业务过程中,产品缺货的原因会有所不同。然后商家联系客户,看看是否有其他合适的商品,或者他们退还交易。

也就是说,如果您有特定座位的音乐会门票或在几分钟内售罄的限量版印刷品等产品,那么您需要一个不同的系统。

基本上,您会提前告诉客户您将持有该物品 5 分钟 - 足够他们完成交易的时间。并且您在每一步都提醒他们,如果他们不完成购买,他们可能会丢失物品。

【讨论】:

如果产品在客户使用支付网关时变得不可用怎么办(其他人更快地购买它们)?如果您自己付款,则可以在付款之前发现这一点,但付款网关不在乎。 “公共购物车”与随订单保存的购物车是分开的,因为在下订单时,公共购物车被清空。我澄清了这个问题(虽然无法缩短它),请再看一遍。

以上是关于在重定向到基于表单的支付网关之前/之后处理订单的主要内容,如果未能解决你的问题,请参考以下文章

Shopify 自定义支付网关实施

在提交表单后但在重定向和退出之前回显成功消息

支付网关实施

Magento 购物车支付方法步骤,将 CC 详细信息发布到支付网关端点?

需要帮助返回 Magento 并在第 3 方支付网关后更新订单状态

在Wordpress上发布保存后更改重定向URL