Заказ поступает в базу до оплаты клиента в WordPress, как сделать чтоб уведомление приходил после оплаты клиента?

Ссылка скопирована
1 ответ

Заказы интегрированы с телеграммо, после подтверждения заказа приход уведомление в телеграмм о новом заказе,
нужно сделать так чтоб заказы приходили после оплаты клиента.

Дополнительно:

Слишком размытый вопрос. Как именно приходит ? Используйте хукaction которой срабатывает после оплаты и будет вам счастье

  • Роман Страх,

    Заказ поступает в базу до оплаты клиента в WordPress, как сделать чтоб уведомление приходил после оплаты клиента?

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

  • baxriddin_sa, нужно сделать чтобы ВП получал уведомление от платёжной системы. Это довольно муторно и много условий. Но ты же можешь получать уведомления сразу от банка...
  • Refguser, человек хочет дать минимум информации и получить максимум ответов.
  • Ответы:

    Можете использовать этот хук

    add_action( 'woocommerce_payment_complete', 'so_payment_complete' ); function so_payment_complete( $order_id ){     // тут отправляете инфо о заказе в телегу     } }

    add_action( 'woocommerce_payment_complete', 'so_payment_complete' ); function so_payment_complete( $order_id ){ // тут отправляете инфо о заказе в телегу } }

    Но, скорее всего, придется в настройках телеграммо покопаться
    Пример взят отсюда

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Редакция по БД Ответ

    Уведомление в Telegram сейчас, судя по описанию, отправляется при создании заказа, а заказ в WooCommerce создаётся до оплаты. Это нормальная логика: пользователь оформил заказ, WooCommerce создал запись, затем платёжная система должна подтвердить оплату. Если уведомление нужно только после оплаты, его нужно вешать не на создание заказа, а на смену статуса на оплаченный.

    Для WooCommerce используйте hook:

    add_action('woocommerce_payment_complete', function ($order_id) {
        $order = wc_get_order($order_id);
        if (!$order) {
            return;
        }
     
        // Здесь отправляйте уведомление в Telegram.
    });

    add_action('woocommerce_payment_complete', function ($order_id) { $order = wc_get_order($order_id); if (!$order) { return; } // Здесь отправляйте уведомление в Telegram. });

    Либо на конкретную смену статуса:

    add_action('woocommerce_order_status_processing', function ($order_id) {
        $order = wc_get_order($order_id);
        if (!$order) {
            return;
        }
     
        // Оплаченный заказ для физического товара.
    });

    add_action('woocommerce_order_status_processing', function ($order_id) { $order = wc_get_order($order_id); if (!$order) { return; } // Оплаченный заказ для физического товара. });

    Для виртуальных/цифровых товаров WooCommerce может переводить заказ сразу в completed, тогда добавьте и этот статус:

    add_action('woocommerce_order_status_completed', 'send_paid_order_to_telegram');
    add_action('woocommerce_order_status_processing', 'send_paid_order_to_telegram');
     
    function send_paid_order_to_telegram($order_id) {
        $order = wc_get_order($order_id);
        if (!$order) {
            return;
        }
     
        if ($order->get_meta('_telegram_sent')) {
            return;
        }
     
        // send message
        $order->update_meta_data('_telegram_sent', 1);
        $order->save();
    }

    add_action('woocommerce_order_status_completed', 'send_paid_order_to_telegram'); add_action('woocommerce_order_status_processing', 'send_paid_order_to_telegram'); function send_paid_order_to_telegram($order_id) { $order = wc_get_order($order_id); if (!$order) { return; } if ($order->get_meta('_telegram_sent')) { return; } // send message $order->update_meta_data('_telegram_sent', 1); $order->save(); }

    Метка _telegram_sent нужна, чтобы не отправить уведомление дважды при повторной смене статуса. Если платёжная система не меняет статус после оплаты, нужно сначала настроить callback/webhook платёжки. Без уведомления от банка/платёжной системы WordPress не узнает, что деньги пришли.

    Итог: переносите отправку Telegram с hook создания заказа на hook успешной оплаты или статус processing/completed. Тогда неоплаченные заказы не будут улетать в Telegram как реальные оплаченные заявки.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно