我正在使用电子商务框架django-oscar(奥斯卡)。 在奥斯卡,结帐流程如下:
我正在整合基于表单的支付网关(需要发布带有付款详细信息的表单),现在结帐流程变得混乱:
一个。收集送货信息。
湾选择付款方式。
℃。预览订单并确认。
d。冻结篮子并下订单。
即重定向到支付网关。
F。退货时将订单标记为已付款。
我遇到了这些问题:
1)(c)和(d)必须一步完成,因为在(e)之前站点和用户之间没有交互 - 我无法将客户POST重定向到支付网关,因此单击'确认'直接将他/她移动到那里。由于订单已经在预览页面显示时放置,因此客户无法从那里返回 - 篮子将是空的。我可以在预览和支付网关之间放置另一个页面,但这看起来不像一个优雅的解决方案。还有另外一个吗?
2)下订单意味着分配物品并将其从库存中移除(其他客户将无法购买),否则当客户从支付网关返回时,某些物品可能变得不可用。不可避免地会有一些订单未付款,因此项目将被保留。他们何时以及如何“无保留”并重新回到股票中?
在我看来,这些问题不是奥斯卡特定的,那么处理它们的最佳做法是什么?
谢谢!
P.S。我发现了一些关于在奥斯卡(https://groups.google.com/forum/#!topic/django-oscar/ccClzX6M9To,Integrating a redirection-included method of payment in django-oscar中整合基于表单的支付网关的讨论,但没有讨论概述的问题。
答案 0 :(得分:0)
在交易完成后从库存中删除产品。 并显示客户的新订单号。
让客户知道他们将收到一封电子邮件,其中包含所有相关详细信息,包括他们刚刚订购的产品。
获取购物车商品并将其插入订单商品数据库表。换句话说,公共购物车表应与用于存放订单商品的表完全分开。那么你不必担心“冻结”购物车桌等等。
如果产品在客户上市时不可用,该怎么办? 支付网关(其他人更快购买)?
对于大多数商家来说,这种情况不会经常发生。但在正常业务过程中,产品没有库存的条件会有所不同。然后,商家联系客户以查看是否有其他适合的商品或者他们退还交易。
如果您有特定座位的音乐会门票或在几分钟内售罄的限量版印刷品,那么您需要一个不同的系统。
基本上你会事先告诉客户你要拿着这个项目说5分钟 - 他们有足够的时间来完成交易。并且您在每一步都提醒他们,如果他们没有完成购买,他们可能会丢失该项目。