【问题标题】:Moving order creation to when customer completes checkout将订单创建移至客户完成结帐时
【发布时间】:2019-11-04 14:25:22
【问题描述】:

我们使用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

【问题讨论】:

    标签: python django e-commerce django-oscar


    【解决方案1】:

    这是一个有点宽泛的问题,很难给出简明的答案,但有一些关于如何实施的建议:

    • Oscar 不会对您的订单工作流程做出太多假设。您可以定义 pipeline 来描述您想要的订单状态,以及订单可以在状态之间进行哪些转换。定义后,员工可以轻松地从仪表板设置订单状态,或者使用Order.set_status() 以编程方式进行设置。

    • 如果您实现pending 状态,那么您可能需要在创建订单时覆盖OrderPlacementMixin 中发生的一些默认行为 - 例如,您可能不想发送订单此阶段的确认电子邮件,在这种情况下,您需要覆盖send_confirmation_message(),而是稍后发送电子邮件(例如,响应order_status_changed 信号。

    • 完全取决于用例,但您可能需要考虑如果付款未通过会发生什么。要求客户重新开始可能并不理想,在这种情况下,您可能需要一种方法来将失败订单中的商品预先填充到新的购物篮中。

    以上没有公开的源代码,但 Oscar 一切皆有可能。

    【讨论】:

    • 感谢您提供非常有帮助的答案,我很感激。修改现有订单状态管道以包含pending 状态时,您能想到哪些常见的陷阱或陷阱?
    • 我想不到 - 修改管道相对简单。
    • 还有一个问题:我知道你说过 Oscar 尽量不对订单工作流程做出假设,但你认为我(或其他人)可以在文档中有一个好地方吗?更新以建议将此作为可能的订单流程?只是为了避免其他人意外落入我的团队所做的同样的陷阱
    • 请参阅 django-oscar.readthedocs.io/en/latest/howto/… - 很高兴您通过 PR 提出改进该文档的建议。它确实试图解释 Oscar 对订购工作流程完全不可知。
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2020-12-06
    • 2014-05-08
    • 2018-05-07
    • 2016-03-12
    • 2017-12-03
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多