Woocommerce在订阅续订时获得新的订单ID

时间:2015-09-02 01:19:42

标签: php wordpress woocommerce stripe-payments subscription

我有使用Stripe Gateway设置和工作的Woocommerce订阅。 每次我手动测试计划续订时,它都会为续订保存新的订单ID,但是我找不到访问它的方法。我设置了scheduled_subscription_payment()来打印$order对象,但由于订阅引用了初始订单,order_id始终相同。有没有办法在订阅续订后立即获取新订单ID?

我引用的函数位于Stripe WC Gateway插件中:

public function scheduled_subscription_payment( $amount_to_charge, $order, $product_id )

1 个答案:

答案 0 :(得分:4)

似乎在WooCommerce订阅的最后一个版本(2.0.0)中,他们弃用旧的scheduled_subscription_payment挂钩,并替换为新的woocommerce_scheduled_subscription_payment挂钩。

旧的论点是:$ amount,$ original_order,$ product_id。

虽然新的是:$ amount,$ renewal_order。

因此,使用最新版本的WC订阅,您可以直接访问新的续订订单数据。要从续订中检索父订单,您可以使用:

        if ( wcs_order_contains_renewal( $renewal_order->id ) ) {
            $parent_order_id = WC_Subscriptions_Renewal_Order::get_parent_order_id( $renewal_order->id );
        }

如果你无法获得最后一个WC订阅插件,从父母那里获得续订订单是很棘手的:你可以从给定的父订单获得所有续订订单并拿走最后一个,但你不是100%确定这是正确的订单。

无论如何,如果你能获得最后一个WC订阅版本肯定是一个更好的主意。