将订单创建移至客户完成结帐时
Moving order creation to when customer completes checkout
我们使用 Django-oscar
的电子商务网站目前处理用户付款后的订单创建,这可能会导致 https://github.com/django-oscar/django-oscar/issues/2891 中描述的问题。我们希望在用户完成结帐后切换为创建状态为 pending
的订单,然后在付款完成后履行订单。
我们目前不确定这样做的后果是什么,所以我希望找到一些关于此订单创建流程的示例,以便在我们的过渡中参考。 Django-oscar
是否默认使用此流程开箱即用,或者是否存在我们可以检查示例的现有开源应用程序?
提前感谢您的帮助
技术细节:
Python version: 2.7
Django version: 1.11
Oscar version: 1.6
这是一个比较宽泛的问题,很难给出一个简洁的答案,但是关于如何实现这个问题的一些建议:
Oscar 不会对您的订单工作流程做出很多假设。您可以定义一个 pipeline 来描述您想要的订单状态,以及订单可以在状态之间进行的转换。定义后,员工可以轻松地从仪表板设置订单状态,或使用 Order.set_status()
.
以编程方式执行此操作
如果您实施 pending
状态,那么您可能需要覆盖在创建订单时 OrderPlacementMixin
中发生的一些默认行为 - 例如,您可能不想在此阶段发送订单确认电子邮件,在这种情况下,您需要覆盖 send_confirmation_message()
,而是稍后发送电子邮件(例如,响应 order_status_changed
信号。
完全取决于用例,但您可能需要考虑如果付款失败会发生什么情况。要求客户重新开始可能并不理想,在这种情况下,您可能需要一种方法来将失败订单中的商品预先填充到新购物篮中。
没有 public 以上的源代码,但 Oscar 都可以做到。
我们使用 Django-oscar
的电子商务网站目前处理用户付款后的订单创建,这可能会导致 https://github.com/django-oscar/django-oscar/issues/2891 中描述的问题。我们希望在用户完成结帐后切换为创建状态为 pending
的订单,然后在付款完成后履行订单。
我们目前不确定这样做的后果是什么,所以我希望找到一些关于此订单创建流程的示例,以便在我们的过渡中参考。 Django-oscar
是否默认使用此流程开箱即用,或者是否存在我们可以检查示例的现有开源应用程序?
提前感谢您的帮助
技术细节:
Python version: 2.7
Django version: 1.11
Oscar version: 1.6
这是一个比较宽泛的问题,很难给出一个简洁的答案,但是关于如何实现这个问题的一些建议:
Oscar 不会对您的订单工作流程做出很多假设。您可以定义一个 pipeline 来描述您想要的订单状态,以及订单可以在状态之间进行的转换。定义后,员工可以轻松地从仪表板设置订单状态,或使用
Order.set_status()
. 以编程方式执行此操作
如果您实施
pending
状态,那么您可能需要覆盖在创建订单时OrderPlacementMixin
中发生的一些默认行为 - 例如,您可能不想在此阶段发送订单确认电子邮件,在这种情况下,您需要覆盖send_confirmation_message()
,而是稍后发送电子邮件(例如,响应order_status_changed
信号。完全取决于用例,但您可能需要考虑如果付款失败会发生什么情况。要求客户重新开始可能并不理想,在这种情况下,您可能需要一种方法来将失败订单中的商品预先填充到新购物篮中。
没有 public 以上的源代码,但 Oscar 都可以做到。