Уведомления от Wildberries о новых заказах на почту и в telegram

Сообщения
110
Реакции
12
Я продаю:
  1. Wildberries
  2. Яндекс Маркет
  3. Ozon
Опыт продаж:
2 года
Всем привет. Как мы все знаем WB не оповещает селлеров на почту о новых заказах, хотя это очень странно на самом деле, так как WB по сути сам заинтересован в том что бы продавец как можно раньше взял заказ в работу. Ну да ладно, сегодня я покажу пример того, как можно получать уведомления о новых заказах на WB по почте и в telegram. Для этого нам понадобиться любой хостинг. Достаточно будет самого дешевого тарифа, на Timeweb самый дешевый тариф стоит 196 рублей в месяц, при условии что Вы оплачиваете тариф на год, при ежемесячной оплате стоимость будет 250 рублей в месяц. Так же нам понадобится зарегистрировать бота в telegram. Итак по порядку.

Регистрация бота в telegram

Открываем приложение telegram и в поиске пишем @BotFather заходим в бота и пишем первую команду /newbot после этого BotFather попросит придумать имя нашему боту, придумываем имя и пишем его в чат. Далее BotFather попросит придумать username для нашего бота. Обязательное условие: заканчиваться username должен обязательно на: _bot . После этого наш бот будет создан и нам понадобится его токен для взаимодействия по API, токен выделен на скриншоте ниже, его нужно скопировать и сохранить. Так же необходимо в поиске найти созданного Вами бота и начать с ним переписку (что бы чат был создан и мы могли отправлять себе сообщения от имени нашего бота).
Без имени-1.jpg
Так же нам необходимо получить свой ID, для этого ищем в поиске бота Get My ID вводим команду /start и бот в ответ напишет нам наш ID. ID нам понадобится что бы бот знал кому именно необходимо отправлять сообщения, его нужно скопировать и сохранить.
sdf.jpg

Все, на этом работа с telegram закончена.

Регистрация хостинга, создание сайта на служебном поддомене и настройка скрипта для отправки

Если у Вас еще нет хостинга, идем и регистрируем себе аккаунт по ссылке

У Вас будет 10 дней тестового периода, так что оплачивать тариф сразу не обязательно, можно сначала все настроить и протестировать, а дальше уже определиться, нужно Вам это или нет.
Итак нам необходимо создать сайт, идем в панели управления в раздел Сайты -> Мои сайты и жмем ссылку Создать новый сайт. Указываем название директории и жмем Создать.
sdfw.jpg

Далее нам необходимо привязать домен к созданному сайту. Timeweb предоставляет нам служебный домен третьего уровня которым мы можем пользоваться бесплатно, поэтому регистрировать отдельный домен нет необходимости. Итак жмем Привязать домен и выбираем предложенный нам домен.
чсм.jpg

Все, сайт у нас создан, теперь мы можем перейти к настройке скрипта для отправки уведомлений о новых заказах на почту и в telegram. Переходим в раздел Файловый менеджер и выбираем папку с созданным нами сайтом, переходим в папку public_html. Тут нам необходимо нажать кнопку Загрузить и загрузить на сервер 2 файла, wb.php и time.txt . Скачать эти файлы можно под спойлером ниже.
23423.jpg

Разбор файла WB.PHP

Ниже приведен код из файла wb.php, каждая строка прокомментирована и указано где и что нужно заменить.

PHP:
$token = 'ВАШ ТОКЕН ДЛЯ РАБОТЫ С API Wildberries';
 
$data = array(
    'sort' => array(
        'cursor' => array(
            'limit' => 1000
        ),
        'filter' => array(
            'next' => 0
        )  
    )
);

$ch = curl_init('https://suppliers-api.wildberries.ru/api/v3/orders/new');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization:' . $token,
    'Content-Type:application/json'
));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);
foreach( $res['orders'] as $order ){
    $time = $order['createdAt'];
    $price = $order['convertedPrice'] / 100;
}
$filename = __DIR__ . '/time.txt';
$text = file_get_contents($filename);

if( $time ){
    if( $text !== $time ){
        $to      = 'ВАШ ПОЧТОВЫЙ ЯЩИК НА КОТОРЫЙ ДОЛЖНЫ ПРИХОДИТЬ УВЕДОМЛЕНИЯ, МОЖНО УКАЗАТЬ НЕСКОЛЬКО ШТУК ЧЕРЕЗ ЗАПЯТУЮ';
        $subject = 'Новый заказ на WB для ВАШ МАГАЗИН';
        $message = 'На WB есть новый заказ для ВАШ МАГАЗИН. Сумма - '.$price ;
        $headers = 'From: ВАША ПОЧТА С КОТОРОЙ БУДУТ ОТПРАВЛЯТЬСЯ ПИСЬМА' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
      
        mail($to, $subject, $message, $headers);
        send_telegram_bot( $message );
        file_put_contents($filename, $time);
    }
}

function send_telegram_bot( $message ){
    $tg_user = 'ВАШ ID ПОЛЬЗОВАТЕЛЯ КОТОРЫЙ МЫ ПОЛУЧАЛИ В TELEGRAM'; // id пользователя, которому отправиться сообщения
    $bot_token = 'ТОКЕН ВАШЕГО БОТА КОТОРЫЙ МЫ ПОЛУЧАЛИ В ТЕЛЕГРАМ'; // токен бота
 
    $text = $message;
  
    // параметры, которые отправятся в api телеграмм
    $params = array(
        'chat_id' => $tg_user, // id получателя сообщения
        'text' => $text, // текст сообщения
        'parse_mode' => 'HTML', // режим отображения сообщения, не обязательный параметр
    );
 
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendMessage'); // адрес api телеграмм
    curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); // максимальное время выполнения запроса
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
    $result = curl_exec($curl); // запрос к api
    curl_close($curl);
 
    return json_decode($result);
}

Далее нам необходимо настроить на хостинге CRON для того что бы наш скрипт выполнялся каждые несколько минут, таким образом скрипт будет отправлять запрос на WB и просить прислать ему последние заказы, если новые заказы есть, будут оправляться уведомления. Для настройки CRON идем в раздел Инструменты -> Crontab и жмем кнопку Добавить новую задачу При создании указываем имя задачи, выбираем путь до файла wb.php и указываем периодичность каждую минуту и жмем кнопку Добавить задачу. Теперь каждую минуту хостинг будет запускать наш скрипт и при условии что на WB появился новый заказ, мы будем получать уведомление на почту и в telegram.
сисми.jpg



ПРИМЕЧАНИЕ! там где необходимо указать Вашу почту с которой будут приходить письма, крайне желательно указать формата info@вашдомен.рф что бы доменная зона была той же с которой уходят письма.
Получить токен WB можно в личном кабинете селлера
вапва.jpg


Постарался расписать как мог подробно, в любом случае если будут вопросы, пишите помогу чем смогу.;):)

Скачать файлы time.txt и wb.php:
 

Вложения

Начал оформление, посмотрим что у меня в итоге получится. Так как я профан, думаю быстро не смогу сделать.
 
Пока сам не начал делать вопросов нет) В целом вроде все понятно, если не получится настроить, то напишу. Спасибо.
 
Всем привет. Как мы все знаем WB не оповещает селлеров на почту о новых заказах, хотя это очень странно на самом деле, так как WB по сути сам заинтересован в том что бы продавец как можно раньше взял заказ в работу. Ну да ладно, сегодня я покажу пример того, как можно получать уведомления о новых заказах на WB по почте и в telegram. Для этого нам понадобиться любой хостинг. Достаточно будет самого дешевого тарифа, на Timeweb самый дешевый тариф стоит 196 рублей в месяц, при условии что Вы оплачиваете тариф на год, при ежемесячной оплате стоимость будет 250 рублей в месяц. Так же нам понадобится зарегистрировать бота в telegram. Итак по порядку.

Регистрация бота в telegram

Открываем приложение telegram и в поиске пишем @BotFather заходим в бота и пишем первую команду /newbot после этого BotFather попросит придумать имя нашему боту, придумываем имя и пишем его в чат. Далее BotFather попросит придумать username для нашего бота. Обязательное условие: заканчиваться username должен обязательно на: _bot . После этого наш бот будет создан и нам понадобится его токен для взаимодействия по API, токен выделен на скриншоте ниже, его нужно скопировать и сохранить. Так же необходимо в поиске найти созданного Вами бота и начать с ним переписку (что бы чат был создан и мы могли отправлять себе сообщения от имени нашего бота).
Посмотреть вложение 60
Так же нам необходимо получить свой ID, для этого ищем в поиске бота Get My ID вводим команду /start и бот в ответ напишет нам наш ID. ID нам понадобится что бы бот знал кому именно необходимо отправлять сообщения, его нужно скопировать и сохранить.
Посмотреть вложение 61

Все, на этом работа с telegram закончена.

Регистрация хостинга, создание сайта на служебном поддомене и настройка скрипта для отправки

Если у Вас еще нет хостинга, идем и регистрируем себе аккаунт по ссылке

У Вас будет 10 дней тестового периода, так что оплачивать тариф сразу не обязательно, можно сначала все настроить и протестировать, а дальше уже определиться, нужно Вам это или нет.
Итак нам необходимо создать сайт, идем в панели управления в раздел Сайты -> Мои сайты и жмем ссылку Создать новый сайт. Указываем название директории и жмем Создать.
Посмотреть вложение 62

Далее нам необходимо привязать домен к созданному сайту. Timeweb предоставляет нам служебный домен третьего уровня которым мы можем пользоваться бесплатно, поэтому регистрировать отдельный домен нет необходимости. Итак жмем Привязать домен и выбираем предложенный нам домен.
Посмотреть вложение 63

Все, сайт у нас создан, теперь мы можем перейти к настройке скрипта для отправки уведомлений о новых заказах на почту и в telegram. Переходим в раздел Файловый менеджер и выбираем папку с созданным нами сайтом, переходим в папку public_html. Тут нам необходимо нажать кнопку Загрузить и загрузить на сервер 2 файла, wb.php и time.txt . Скачать эти файлы можно под спойлером ниже.
Посмотреть вложение 65

Разбор файла WB.PHP

Ниже приведен код из файла wb.php, каждая строка прокомментирована и указано где и что нужно заменить.

PHP:
$token = 'ВАШ ТОКЕН ДЛЯ РАБОТЫ С API Wildberries';
 
$data = array(
    'sort' => array(
        'cursor' => array(
            'limit' => 1000
        ),
        'filter' => array(
            'next' => 0
        ) 
    )
);

$ch = curl_init('https://suppliers-api.wildberries.ru/api/v3/orders/new');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization:' . $token,
    'Content-Type:application/json'
));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);
foreach( $res['orders'] as $order ){
    $time = $order['createdAt'];
    $price = $order['convertedPrice'] / 100;
}
$filename = __DIR__ . '/time.txt';
$text = file_get_contents($filename);

if( $time ){
    if( $text !== $time ){
        $to      = 'ВАШ ПОЧТОВЫЙ ЯЩИК НА КОТОРЫЙ ДОЛЖНЫ ПРИХОДИТЬ УВЕДОМЛЕНИЯ, МОЖНО УКАЗАТЬ НЕСКОЛЬКО ШТУК ЧЕРЕЗ ЗАПЯТУЮ';
        $subject = 'Новый заказ на WB для ВАШ МАГАЗИН';
        $message = 'На WB есть новый заказ для ВАШ МАГАЗИН. Сумма - '.$price ;
        $headers = 'From: ВАША ПОЧТА С КОТОРОЙ БУДУТ ОТПРАВЛЯТЬСЯ ПИСЬМА' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
     
        mail($to, $subject, $message, $headers);
        send_telegram_bot( $message );
        file_put_contents($filename, $time);
    }
}

function send_telegram_bot( $message ){
    $tg_user = 'ВАШ ID ПОЛЬЗОВАТЕЛЯ КОТОРЫЙ МЫ ПОЛУЧАЛИ В TELEGRAM'; // id пользователя, которому отправиться сообщения
    $bot_token = 'ТОКЕН ВАШЕГО БОТА КОТОРЫЙ МЫ ПОЛУЧАЛИ В ТЕЛЕГРАМ'; // токен бота
 
    $text = $message;
 
    // параметры, которые отправятся в api телеграмм
    $params = array(
        'chat_id' => $tg_user, // id получателя сообщения
        'text' => $text, // текст сообщения
        'parse_mode' => 'HTML', // режим отображения сообщения, не обязательный параметр
    );
 
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendMessage'); // адрес api телеграмм
    curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); // максимальное время выполнения запроса
    curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
    $result = curl_exec($curl); // запрос к api
    curl_close($curl);
 
    return json_decode($result);
}

Далее нам необходимо настроить на хостинге CRON для того что бы наш скрипт выполнялся каждые несколько минут, таким образом скрипт будет отправлять запрос на WB и просить прислать ему последние заказы, если новые заказы есть, будут оправляться уведомления. Для настройки CRON идем в раздел Инструменты -> Crontab и жмем кнопку Добавить новую задачу При создании указываем имя задачи, выбираем путь до файла wb.php и указываем периодичность каждую минуту и жмем кнопку Добавить задачу. Теперь каждую минуту хостинг будет запускать наш скрипт и при условии что на WB появился новый заказ, мы будем получать уведомление на почту и в telegram.
Посмотреть вложение 67



ПРИМЕЧАНИЕ! там где необходимо указать Вашу почту с которой будут приходить письма, крайне желательно указать формата info@вашдомен.рф что бы доменная зона была той же с которой уходят письма.
Получить токен WB можно в личном кабинете селлера
Посмотреть вложение 66


Постарался расписать как мог подробно, в любом случае если будут вопросы, пишите помогу чем смогу.;):)

Скачать файлы time.txt и wb.php:
Слушайте, круто! А подскажите как добавить наименование товара и его остаток, после заказа. Так было бы ещё круче!!!
 
Здравствуйте, очень полезно!!! Но было бы здорово доработать наименование товара и остатком на складе.
 
Я правильно понял что если вместо id юзера ввести id канала то сообщения будет приходить в канал. И посмотрел API WB и не понял как подтягивать наименование товара.
 
Здравствуйте, очень полезно!!! Но было бы здорово доработать наименование товара и остатком на складе.
Я правильно понял что если вместо id юзера ввести id канала то сообщения будет приходить в канал. И посмотрел API WB и не понял как подтягивать наименование товара.

Именно наименование товара не получить. В ответе от API содержится массив баркодов. Для получения остатков товара необходимо сделать дополнительный запрос к API /api/v3/stocks/ и передать туда полученные баркоды. Для того что бы узнать наименование товара, можно например хранить в файле массив товаров вида

PHP:
$array = [
    'баркод 1' => 'Наименование 1',
    'баркод 2' => 'Наименование 2',
    'и т.д.'
]

Тогда не проблема узнать наименование товаров в заказе.

Я правильно понял что если вместо id юзера ввести id канала то сообщения будет приходить в канал.
Не уверен, надо пробовать. Для того что бы бот мог публиковать на канале записи, он должен быть админом там.
 
Именно наименование товара не получить. В ответе от API содержится массив баркодов. Для получения остатков товара необходимо сделать дополнительный запрос к API /api/v3/stocks/ и передать туда полученные баркоды. Для того что бы узнать наименование товара, можно например хранить в файле массив товаров вида

PHP:
$array = [
    'баркод 1' => 'Наименование 1',
    'баркод 2' => 'Наименование 2',
    'и т.д.'
]

Тогда не проблема узнать наименование товаров в заказе.


Не уверен, надо пробовать. Для того что бы бот мог публиковать на канале записи, он должен быть админом там.
Да вариант с сообщениями в канал работает. Как Вы и написали нужно бота было сделать админом.

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

Нашел сервис который выполняет +/- те же функции, но проверка происходит раз в 20 минут и меня это не устраивает тк хотелось бы о заказах узнавать почти сразу.

Осталось понять как на этом сервисе реализовано что через API тянется фото товара.

Если не сложно то может быть Вы знаете как это сделать?
 
Да вариант с сообщениями в канал работает. Как Вы и написали нужно бота было сделать админом.

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

Нашел сервис который выполняет +/- те же функции, но проверка происходит раз в 20 минут и меня это не устраивает тк хотелось бы о заказах узнавать почти сразу.

Осталось понять как на этом сервисе реализовано что через API тянется фото товара.

Если не сложно то может быть Вы знаете как это сделать?
Завтра у меня будет время. Я посмотрю. Возможно перепишу и дополню скрипт.
 
С массивом вариант слишком муторный тк придётся тогда писать базу товаров, но на это время не хотел тратить.
Других вариантов нет, так как даже стандартные выгрузки WB не отображают наименование товара а только баркоды, на озоне тоже самое. Не понимаю с чем это связано. Я особо в API не углублялся, требовалось просто уведомления сделать для того что бы реагировать на заказы и не сидеть, обновлять страницу.
 
Других вариантов нет, так как даже стандартные выгрузки WB не отображают наименование товара а только баркоды, на озоне тоже самое. Не понимаю с чем это связано. Я особо в API не углублялся, требовалось просто уведомления сделать для того что бы реагировать на заказы и не сидеть, обновлять страницу.
Oзон и ЯМ хоть человеческие приложения сделали которые присылают уведомления, а подключились к продажам на ВБ и меня это немного удивило, что нет оповещений. В целом данного скрипта хватает что бы мониторить заказы. Спасибо что написали скрипт.
 
Всем привет!

Внесу небольшое изменение.

С 30 января вб отключает старые урл и необходимо изменить api url

Вместо этой строчки

Код:
$ch = curl_init('https://suppliers-api.wildberries.ru/api/v3/orders/new');

Ставим эту строчку

Код:
$ch = curl_init('https://marketplace-api.wildberries.ru/api/v3/orders/new');
 

Похожие темы

Назад
Сверху