Woocommerce получит новый идентификатор заказа при продлении подписки

У меня есть подписки Woocommerce с настроенным и работающим Stripe Gateway. Каждый раз, когда я вручную тестирую запланированное обновление, он сохраняет новый идентификатор заказа для обновления, но я не могу найти способ получить к нему доступ. У меня установлен scheduled_subscription_payment() для печати нашего объекта $order, но order_id всегда один и тот же из-за подписки, ссылающейся на начальный заказ. Есть ли способ получить новый идентификатор заказа для продления подписки сразу после его активации?

Функция, на которую я ссылаюсь, находится в плагине Stripe WC Gateway:

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

person Naterade    schedule 02.09.2015    source источник


Ответы (1)


Похоже, что в последнем выпуске (2.0.0) подписок WooCommerce они устарели от старого хука schedule_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 Subscriptions, получить заказ на продление от родителя сложно: вы, вероятно, можете получить все заказы на продление из данного родительского заказа и взять последний, но вы не уверены на 100% это правильный порядок.

В любом случае, если вы можете получить последнюю версию подписок WC, это, безусловно, лучшая идея.

person Mauro Mascia    schedule 09.10.2015
comment
Будьте здоровы. Не знаю, почему автор темы никогда не отмечал ваш ответ как решение, но это так! - person Павел Вайсберг; 05.04.2017