У меня есть подписки Woocommerce с настройкой и работой Stripe Gateway.
Каждый раз, когда я вручную проверяю запланированное продление, он сохраняет новый идентификатор заказа для продления, однако я не могу найти способ получить к нему доступ. у меня есть scheduled_subscription_payment()
установить для печати нашего $order
объект, но order_id всегда одинаков из-за подписки, ссылающейся на начальный заказ. Есть ли способ получить новый идентификатор заказа для продления подписки сразу после его запуска?
Функция, на которую я ссылаюсь, находится в плагине Stripe WC Gateway:
public function scheduled_subscription_payment( $amount_to_charge, $order, $product_id )
Похоже, что в последнем выпуске (2.0.0) подписок WooCommerce они устарели прежний хук запланированных запланированных подписок и заменили новым хуком woocommerce_scheduled_subscription_payment.
Старыми аргументами были: сумма $, $ оригинал-заказ, $ product_id.
В то время как новые: $ сумма, $ 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, это, безусловно, лучшая идея.
Других решений пока нет …