在WooCommerce中对订阅进行续订成功付款时自动完成订单



我正在使用WooCommerce订阅插件进行订阅,并且在订阅续订时重复订单,我需要的是,当成功订阅续订付款后创建订单重复订单时,订单状态应更改为已完成。

我尝试使用以下钩子未成功:

  • woocommerce_renewal_order_payment_complete
  • woocommerce_order_status_changed
  • woocommerce_payment_complete

对于WooCommerce订阅,您需要使用woocommerce_subscription_payment_complete操作钩子,该钩子在对订阅进行续订付款时触发。

您可以尝试以下操作,将当前订单状态更新为已完成:

add_action('woocommerce_subscription_payment_complete', 'subscription_payment_complete_hook_callback', 10, 1);
function subscription_payment_complete_hook_callback( $subscription ) {
    // Get the current order
    $current_order = $subscription->get_last_order( 'all', 'any' );
    // For Paypal recurring orders
    if( $current_order->get_payment_method() === 'paypal' ) {
        // Update status to completed
        $current_order->update_status('completed');
    }
}

相关文档: WooCommerce 订阅动作钩子

我相信对于续订,应该使用的钩子是:woocommerce_subscription_renewal_payment_complete

这也接受$subscription参数

在 2021 年,随着 WooCommerce 订阅 API 的变化,这似乎有效:

/*Auto Complete all WooCommerce orders.*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }
    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}
/*Auto Complete all WooCommerce Renewal Subscription orders.*/
add_action('woocommerce_subscription_renewal_payment_complete', 'subscription_renewal_payment_complete_callback', 10, 2);
function subscription_renewal_payment_complete_callback( $subscription, $order ) {
    $order->update_status('completed');
}

相关内容

  • 没有找到相关文章

最新更新