当前位置: 首页 > 知识库问答 >
问题:

Automark在WooCommerce 3+中仅将订单支付到“已完成”状态

闽经纬
2023-03-14

我想自动完成刚刚成功支付订单“完成”状态。我在Stack和Google上搜索了很多,找到了这个答案代码:
Woocommerce:Auto complete Payed Orders(取决于支付方式)

但问题是,代码将所有下订单标记为“完成”状态,而不取决于订单是否成功下订单。

我需要在代码中更改什么,以便将只支付的订单自动转换为“已完成”状态?

共有1个答案

晋功
2023-03-14

新增强简化代码版本更换(2019年3月):

参见:Woocommerce:自动完成支付订单

原答案:

对于Paypal和其他第三方网关,target的“已支付”订单状态为“正在处理”(和“已完成”),因此您可以轻轻地将代码更改为:

add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 );
function wc_auto_complete_paid_order( $order_id ) {

    if ( ! $order_id )
        return;

    // Get an instance of the WC_Product object
    $order = wc_get_order( $order_id );

    // No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
    if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
        return;
    // Updated status to "completed" for paid Orders with all others payment methods
    } elseif ( in_array( $order->get_status(), array('on-hold', 'processing') ) ) {
        $order->update_status( 'completed' );
    }
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试并起作用。

这样你就可以避免“失败”、“取消”或“待定”的订单。

 类似资料:
  • 我有一个虚拟产品,我希望它改变状态后付款完成。下面的代码将所有购买更改为“已完成”,但我只想更改我的一个产品,而不是全部。我的产品是一个可变产品, 我找了很多,但没有找到答案。请帮帮我.谢谢

  • 问题内容: 通常,wooCommerce应该自动完成虚拟产品的订单。但是事实并非如此,这是一个实际的问题,即使是BUG之类的。 因此,在这一点上,您可以找到一些有用的东西(但不是很方便): 1)一段代码 (您可以在wooCommerce文档中找到): 但是此代码段不适用于 BACS , 货到付款 和 支票* 付款方式。Paypal和信用卡网关的付款方式都可以。 BACS 是直接银行转帐付款方式 还

  • 通过 BaaS SDK 提供的 wx.BaaS.order(OBJECT) 方法, 可查询到交易的详细信息。典型的使用场景为: 调用 wx.BaaS.pay(object) 发起支付, 在成功回调中获取到 transactionID, 在要路由到新的页面时带上此 ID, 在新页面的 onLoad 方法中获取到该 ID, 从而使用此 ID 获取交易的详细信息。 OBJECT 参数说明 参数 类型 必

  • 如果‘处理’状态将自动更新为‘完成’,我想从woocommerce更改每个订单. 我尝试在functions.php文件中编写函数,但没有成功。 当我已经收到用户的付款时,如何在Woocommerce中自动将订单状态从“正在处理”更改为“已完成”? 我使用了这个代码,但它没有效果 感谢的

  • 我用woocommerce做了一个简单的网店,有三种付款方式。理想情况下,可通过直接银行转账和开户。订单ID是根据付款方式创建的。例如,如果使用iDEAL付款,订单id将变为ID190100;如果以账户付款,订单id将变为RK190100。我从BeRocket的插件“WooCommerce的顺序订单号”中得到了这一点,但这些都是在付款完成之前创建的。订单ID必须在付款后才能最终确定。现在,尚未付款

  • 我们在PayPal沙箱上测试我们的应用程序。我能够通过一个账户(ewa)付款。tkacz@zoho.com)另一个(ewa.tkacz)-facilitator@mmigroup.pl),并且此付款的状态在付款人帐户(付款ID 3F335538TV000622E)上已完成,但在收款人业务帐户上,我无法看到此付款,也无法通过API获取它。 这个问题是贝宝的,正如你在Stackoverflow论坛上建