По-прежнему отправлять уведомление о счете-фактуре клиента WooCommerce при неудачной оплате подписки.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 По-прежнему отправлять уведомление о счете-фактуре клиента WooCommerce при неудачной оплате подписки.

Сообщение Anonymous »

Я пытаюсь найти способ, позволяющий продолжать генерировать счета, даже если подписка клиента находится в состоянии ожидания с помощью подписок WooCommerce.
Проблема, с которой я столкнулся заключается в том, что WooCommerce перестает генерировать счета-фактуры, как только подписка приостанавливается после неудачного платежа (соответствующий заказ получает статус неудачного).
Иногда наша команда не замечает этих подписок, и месяцы могут проходить без выставления счетов, в то время как клиент продолжает получать наш продукт.
Поскольку наши продукты по подписке являются физическими, а не цифровыми, нам необходимо WooCommerce будет продолжать генерировать счета и отправлять электронные письма каждый месяц, даже если подписка приостановлена.
Я пытаюсь использовать этот код, чтобы включить создание счетов, даже если подписка " на удержании".

Код: Выделить всё

// Generate invoice even if the subscription is on-hold
add_action('woocommerce_scheduled_subscription_payment', 'generate_invoice_for_on_hold_subscription', 10, 2);
function generate_invoice_for_on_hold_subscription( $amount_to_charge, $subscription ) {
// Check if the subscription is on-hold
if ($subscription->has_status('on-hold')) {
// Get the order related to the subscription
$order = wc_create_order(array(
'customer_id' => $subscription->get_customer_id()
));

// Add subscription items to the order
foreach ($subscription->get_items() as $item_id => $item) {
$product_id = $item->get_product_id();
$quantity = $item->get_quantity();
$order->add_product(wc_get_product($product_id), $quantity);
}

// Set billing information
$order->set_address($subscription->get_address('billing'), 'billing');

// Create invoice by changing the order status to pending
$order->update_status('pending');

// Send the invoice email to the customer
WC()->mailer()->get_emails()['WC_Email_Customer_Invoice']->trigger($order->get_id());
}
}
Что я ожидаю от кода:
  • Проверяет, находится ли статус подписки «в режиме ожидания».< /li>
    Создание нового «ожидающего» заказа, клонированного из неудавшегося заказа.
  • Отправка уведомления о счете по электронной почте клиенту.
    Как разрешить продолжать генерировать счета, даже если учетная запись заблокирована?

    Подробнее здесь: https://stackoverflow.com/questions/790 ... ailed-paym
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»