处理重定向到基于表单的支付网关的订单 before/after
Handling an order before/after redirecting to a form-based payment gateway
我正在使用电子商务框架 django-oscar (Oscar)。
在 Oscar 中,结帐流程如下所示:
- 收集送货信息。
- Select 付款方式并收集付款详情。
- 预览订单并确认。
- 冻结购物篮(以防止操纵),处理付款并下订单。
我正在集成基于表单的支付网关(需要发布包含付款详细信息的表单),现在结帐流程变得混乱:
一个。收集运输信息。
b。 Select 付款方式。
c。预览订单并确认。
d。冻结购物篮并下达未付款订单。
e。重定向到支付网关。
f。在 return 上将订单标记为已付款。
我遇到了这些问题:
1) (c) 和 (d) 必须一步完成,因为在 (e) 之前网站和用户之间没有互动 - 我无法 POST- 重定向客户到支付网关,因此单击 'confirm' 会直接将 him/her 移动到那里。由于在显示预览页面时已经下了订单,因此客户不可能从那里返回 - 购物篮将是空的。我可以在预览和支付网关之间放置另一个页面,但这看起来不像是一个优雅的解决方案。还有一个吗?
2) 下订单意味着分配商品并将其从库存中移除(其他客户将无法购买),否则当客户 returns 来自支付网关时,一些商品可能变得不可用。不可避免地会有一些订单未付款,因此商品将被保留。他们应该在什么时候以及如何 'unreserved' 回到库存中?
在我看来,这些问题并不是奥斯卡特有的,那么处理这些问题的最佳做法是什么?
谢谢!
P.S。我在 Oscar (https://groups.google.com/forum/#!topic/django-oscar/ccClzX6M9To , ) 中发现了一些关于集成基于表单的支付网关的讨论,但没有关于概述问题的讨论。
交易完成后从库存中移除产品。
并为客户显示新的订单号。
让客户知道他们将收到一封电子邮件,其中包含所有相关详细信息,包括他们刚刚订购的产品。
获取购物车商品并将它们插入订单商品数据库 table。换句话说,public 购物车 table 应该与您用来存放订单商品的 table 完全分开。那么您就不必担心 'freezing' 购物车 table 等
What if the products become unavailable while the customer is on a
payment gateway (some one else buys them faster)?
对于大多数商家来说,这种情况不会经常发生。但在正常业务过程中,产品缺货的情况会有所不同。商家然后联系客户,看看是否有另一件商品是 suitable,否则他们会退还交易。
也就是说,如果您有特定座位的音乐会门票或几分钟内售罄的限量版印刷品,那么您需要一个不同的系统。
基本上,您会预先告诉客户您将保留该商品 5 分钟 - 足够他们完成交易的时间。并且您在每一步都提醒他们,如果他们没有完成购买,他们可能会丢失物品。
我正在使用电子商务框架 django-oscar (Oscar)。 在 Oscar 中,结帐流程如下所示:
- 收集送货信息。
- Select 付款方式并收集付款详情。
- 预览订单并确认。
- 冻结购物篮(以防止操纵),处理付款并下订单。
我正在集成基于表单的支付网关(需要发布包含付款详细信息的表单),现在结帐流程变得混乱:
一个。收集运输信息。
b。 Select 付款方式。
c。预览订单并确认。
d。冻结购物篮并下达未付款订单。
e。重定向到支付网关。
f。在 return 上将订单标记为已付款。
我遇到了这些问题:
1) (c) 和 (d) 必须一步完成,因为在 (e) 之前网站和用户之间没有互动 - 我无法 POST- 重定向客户到支付网关,因此单击 'confirm' 会直接将 him/her 移动到那里。由于在显示预览页面时已经下了订单,因此客户不可能从那里返回 - 购物篮将是空的。我可以在预览和支付网关之间放置另一个页面,但这看起来不像是一个优雅的解决方案。还有一个吗?
2) 下订单意味着分配商品并将其从库存中移除(其他客户将无法购买),否则当客户 returns 来自支付网关时,一些商品可能变得不可用。不可避免地会有一些订单未付款,因此商品将被保留。他们应该在什么时候以及如何 'unreserved' 回到库存中?
在我看来,这些问题并不是奥斯卡特有的,那么处理这些问题的最佳做法是什么?
谢谢!
P.S。我在 Oscar (https://groups.google.com/forum/#!topic/django-oscar/ccClzX6M9To ,
交易完成后从库存中移除产品。 并为客户显示新的订单号。
让客户知道他们将收到一封电子邮件,其中包含所有相关详细信息,包括他们刚刚订购的产品。
获取购物车商品并将它们插入订单商品数据库 table。换句话说,public 购物车 table 应该与您用来存放订单商品的 table 完全分开。那么您就不必担心 'freezing' 购物车 table 等
What if the products become unavailable while the customer is on a payment gateway (some one else buys them faster)?
对于大多数商家来说,这种情况不会经常发生。但在正常业务过程中,产品缺货的情况会有所不同。商家然后联系客户,看看是否有另一件商品是 suitable,否则他们会退还交易。
也就是说,如果您有特定座位的音乐会门票或几分钟内售罄的限量版印刷品,那么您需要一个不同的系统。
基本上,您会预先告诉客户您将保留该商品 5 分钟 - 足够他们完成交易的时间。并且您在每一步都提醒他们,如果他们没有完成购买,他们可能会丢失物品。