Prestashop 1.7 零元免费订单提交时应使用哪个触发钩子?
免费零元订单提交触发钩子及实现方案
以下方案基于WooCommerce场景,其他框架逻辑可做参考:
可触发的钩子
- 零元订单提交后会跳过常规支付流程,正常触发
woocommerce_checkout_order_processed钩子,该钩子在所有订单创建完成后都会执行,不受订单金额影响。 - 零元订单会被系统自动标记为已支付状态,此时也会同步触发
woocommerce_order_is_paid钩子,适合需要识别「已完成支付的零元订单」场景使用。
注意:不要选择支付回调类钩子(例如
woocommerce_payment_complete)处理零元订单,这类钩子仅在实际完成第三方支付回调时触发,零元订单无支付流程,不会触发该类钩子。
其他替代实现方案
- 新增金额判断逻辑增强兼容性:在你使用的钩子逻辑中,先调用
$order->get_total()获取订单实付金额,判断金额等于0后再执行自定义业务代码,避免非零元订单误触发逻辑。 - 自定义事件处理:如果是自研电商系统,可以在订单提交的校验环节单独判断实付金额,金额为0时直接调用你定义的零元订单处理函数,无需走支付相关的链路,逻辑更清晰。
内容的提问来源于stack exchange,提问作者GOURAV GUPTA
相关产品推荐
相关产品推荐

