Подписка Woocommerce: примените купон для заказов на продление

Я хочу применить купон при создании заказа на продление подписки. Я использую полосу в качестве платежного шлюза для подписки на woocommerce.

Я нашел фильтр wcs_renewal_order_created из документов: https://docs.woocommerce.com/document/subscriptions/develop/filter-reference/

У меня получается применить, он хорошо срабатывает, и я могу применить купон к этому заказу. Сумма заказа уменьшается на сумму купона.

Проблема: Stripe списывает полную сумму заказа без скидки. Это как если бы порядок, который я изменил, не использовался Stripe.

Вот пример кода, который уменьшает на 5 любой порядок продления:

function gens_renewal_order_created($order, $subscription){         
    $order = new WC_Order( $order->id );                
    $order->set_total($order->get_total() - 5);     
    return $order;
}

person Romain Arpin    schedule 26.04.2017    source источник


Ответы (1)


Это немного поздно, но ответа нет.

Если вы посмотрите на 'wcs_create_order_from_subscription ()'

Это функция, в которой создается новый заказ. здесь также есть другой фильтр, который не упоминается в документации wcs_new_order_created.

Итак, вот каким должен быть ваш код.

function gens_renewal_order_created($order, $subscription){         
    $order = new WC_Order( $order->id );                
    $order->set_total($order->get_total() - 5);     
    return $order;
}
add_filter('wcs_new_order_created','gens_renewal_order_created', 10, 2 );
person Connor Mulhall    schedule 03.08.2017