我有使用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 )
答案 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订阅版本肯定是一个更好的主意。