根据付款网关和过渡状态更改Woocommerce订单状态

时间:2019-02-23 12:44:35

标签: php wordpress woocommerce stripe-payments payment-gateway

所以我知道如何根据付款网关更改状态。但是,有没有办法考虑到先前的订单状态呢?

我的问题如下:我们在客户签署电子合同后开始处理订单。然后,他们可以通过几个网关(条带,COD,银行转帐或发票-我们发送付款链接)以后免费付款。

这意味着客户可以在我们的任何订单状态(从待处理,等待签名到处理无付款,交货无付款,已完成等)付款。

我们还具有以下状态的“付费”版本:处理中的付款,交货中的付款等。

例如,支付网关Stripe触发状态为“处理中”。如果以前的状态为“处理中未付款”,那就很好。但是,如果我们在整个过程中走得更远,比如说已经完成交付,那么理想情况下应该将其从“未交付交付”更改为“已完成”。

我无法为自己的一生弄清楚如何做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里是一个使用woocommerce_order_status_changed挂钩的示例,您可以在其中定位订单状态从“从” “到” 的过渡,以将订单状态更改为其他。

在此示例中,我将状态设置为“来自” delivery-unpaid “至” {{1} } 将订单状态更改为delivery-paid

正如您在Woocommerce中看到的,订单状态为“ (均为小写)”

您可以同时使用 Stripe 这样的特定目标特定付款网关ID

completed

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。

如您所见,您可以添加多达add_action( 'woocommerce_order_status_changed', 'change_order_status_conditionally', 10, 4 ); function change_order_status_conditionally( $order_id, $status_from, $status_to, $order ) { if( $order->get_payment_method() === 'stripe' && $status_from === 'delivery-unpaid' && $status_to === 'delivery-paid' ) { $order->update_status( 'completed' ); } } 条针对订单状态转换的语句,您需要将其更改为任何其他状态和付款网关。

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。