gpt4 book ai didi

php - 根据支付网关和转换状态更改 Woocommerce 订单状态

转载 作者:行者123 更新时间:2023-12-02 00:55:08 28 4
gpt4 key购买 nike

所以我知道如何根据支付网关更改状态。但是有没有办法同时考虑之前的订单状态?

我的问题如下:我们在客户签署电子契约(Contract)后开始处理我们的订单。然后,他们稍后可以通过几个网关(Stripe、COD、银行转帐或发票 - 我们发送付款链接)自由付款。

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

我们还有这些状态的“付费”版本:处理已付款、送货已付款等。

例如:支付网关 Stripe 触发状态“Processing-paid”。如果之前的状态是“Processing-unpaid”,那很好。但是,如果我们在流程中走得更远,比如在我们已经交付之后,理想情况下它应该从“未交付交付”更改为“已完成”。

我这辈子都想不出如何完成这项工作。有什么想法吗?

最佳答案

这是一个使用 woocommerce_order_status_changed 的例子 Hook 您可以在其中定位订单状态转换“从”“到”,以将订单状态更改为任何其他状态。

在这个例子中,我定位了状态"from" delivery-unpaid"to" delivery-paid 将订单状态更改为 completed

正如您在 Woocommerce 中看到的那样,订单状态是 slug (全部为小写)……

您可以同时定位一个特定的支付网关 ID,例如 Stripe,使用如下内容:

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 文件。它应该有效。

如您所见,您可以添加尽可能多的 IF 语句,以将其更改为任何其他状态和支付网关所需的订单状态转换为目标。

代码进入事件子主题(或事件主题)的 function.php 文件。它应该有效。

关于php - 根据支付网关和转换状态更改 Woocommerce 订单状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841746/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com