我们的支付网关和CRM默认不支持WooCommerce作为插件,因此我需要添加自定义代码,以便在客户下订单时将数据发送到我们的CRM和支付网关,然后拒绝或接受订单,具体取决于支付网关API响应。
我应该在Woo代码中何处以及如何拦截订单提交?
答案 0 :(得分:0)
您应该尝试woocommerce_checkout_process
操作挂钩,其中结算提供商的API响应应返回错误通知以拒绝并停止结帐流程...
此挂钩位于WC_Checkout
process_checkout()
method,它位于订单创建之前。可以通过$_POST
或$posted_data = WC()->checkout->get_posted_data();
WC_Checkout
方法访问数据。
或woocommerce_checkout_order_processed
动作挂钩,其中已创建订单(意味着订单数据可通过3个参数访问:$order_id
,$posted_data
和$order
)但付款前 ...要停止此流程,结算提供商的API响应应为:throw new Exception()
...
所以无论如何,解决方案是
WC_Checkout
可用钩子之一......