Инструкция Отправка заказов из OpenCart в группу Telegram

  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
opencartbot.jpg

Мы уже рассматривали, как создать бота, который отправляет сообщения с сайта в мессенджер Telegram. Сегодня мы научим его отправлять заказы из интернет-магазина на OpenCart.

Создаем бота​

Боты в Telegram создаются через другого специального бота @BotFather. Нужно найти его и отправить ему команду /start.

Для создания нового бота отправляем следующую команду /newbot. После чего бот запросит имя вашего нового бота, оно обязательно должно заканчиваться на Bot. В случае успеха в ответ получаем уникальный токен бота, который понадобится для дальнейшей работы. И не забудьте добавить вновь созданного бота в ваши контакты отправив ему команду /start

jbxa_5wecdy-595x1024.jpg


Получаем токен и chat id бота​

Чтобы отправить сообщение пользователю через бота достаточно вызвать определенный URL из PHP скрипта содержащий токен бота и внутренний ID чата chat id.

Токен бота у нас уже есть, а chat id можно получить 2 способами:

  1. Написать боту @ShowJsonBot любой текст. В ответ он вернет вам некие данные в JSON формате. Находим объект chat и в нем id — это и есть ваш chat id.
  2. В адресной строке ввести <YourBOTToken>/getUpdates где <YourBOTToken> — это ранее полученный токен вашего бота. Находим объект chat и в нем id — это и есть ваш chat id.
umfr_h8devq-594x1024.jpg

Отправка сообщений в группу Telegram​

Чтобы бот мог отправлять сообщения в группу, необходимо дать ему определенные разрешения.

Опять заходим в @BotFather и вводим следующую команду: /setjoingroups, выбираем нашего бота и команду Enabled. Теперь бота можно добавлять в группы. Далее необходимо разрешить боту читать и писать все сообщения, делается это командой /setprivacy установленной наоборот в Disabled.

Теперь добавляем бота в группу Telegram, как обычного участника.

Отправка заказов из OpenCart в группу​

Копируем файл из каталога OpenCart /catalog/controller/common/order.php в /system/storage/modification/catalog/controller/common/order.php если его там нет.

Внимание! Если у вас OpenCart 2.x, то можете пропустить этот раздел и сразу перейти к следующему.

Добавляем после строк:

Скрытое содержимое доступно для зарегистрированных пользователей!

Это практически самый конец файла, примерно 216 строка.

Следующий код:

Скрытое содержимое доступно для зарегистрированных пользователей!

TELEGRAM_TOKEN необходимо заменить на токен вашего бота, который получили ранее. TELEGRAM_CHATID можете указать свой, который так же получили ранее, тогда заказы будут приходить только вам. Если же необходима отправка в группу Telegram, то там нужно будет указать ID группы. Как его получить рассмотрим в статье далее.

Теперь после строк:

Код:
array_multisort($sort_order, SORT_ASC, $totals);
$pr = array();

Перед началом цикла foreach. Это примерно 82 строка.

Добавляем туда следующий код:

Код:
$totalPrice = 0;

И чуть ниже, в конце цикла foreach перед закрывающей скобкой добавляем:

Код:
$totalPrice = $totalPrice + (($product['price'] + $this->tax->getTax($product['price'], $product['tax_class_id'])) * $product['quantity']);

Это примерно 110 строка. Это нужно для расчёта общей стоимости покупки, которая будет отправлена ботом.

Код для OpenCart 2.x​

Для OpenCart 2.x код будет немного другой, его необходимо будет добавить в функцию addOrder() в файле /catalog/model/checkout/order.php, предварительно переместив его в каталог /system/storage/modification/catalog/model/checkout/

Находим функцию addOrder() и в самом её конце перед закрывающей скобкой и return $order_id; добавляем следующий код:


Скрытое содержимое доступно для зарегистрированных пользователей!

TELEGRAM_TOKEN необходимо заменить на токен вашего бота, который получили ранее. TELEGRAM_CHATID можете указать свой, который так же получили ранее, тогда заказы будут приходить только вам. Если же необходима отправка в группу Telegram, то там нужно будет указать ID группы. Как его получить рассмотрим в статье далее.

Теперь перед циклом:

Код:
foreach ($data['products'] as $product) {

Добавляем:

Код:
$totalPrice = 0;

И затем в конце этого цикла перед закрывающей скобкой добавляем следующий код:

Код:
$totalPrice = $totalPrice + (float)$product['total'];

Этот код рассчитывает общую сумму товаров, которая заносится в переменную $totalPrice.


Отправка сообщений в группу​

Чтобы бот мог отправлять сообщения в группу, необходимо его туда добавить. Сделать это можно в настройках группы в разделе Добавить участника. В поиске необходимо ввести имя вашего бота и нажать OK.

Теперь в настройках скрипта нужно изменить chat id пользователя, на chat id нужной группы. Для этого предварительно нужно написать любое сообщение в чат, а затем в адресной строке ввести <YourBOTToken>/getUpdates где <YourBOTToken> — это ранее полученный токен вашего бота. После находим объект chat и в нем id — это и будет chat id группы.


Функция для отправки заказов в Telegram​

Давайте оформим наш пример в функцию OpenCart. Так будет правильнее.

Открываем на редактирование файл /catalog/controller/common/order.php и самом начале добавляем константы с токеном бота и ID чата Telegram, куда будут приходить сообщения. В TELEGRAM_CHATID можно указать пользователя, группу или сразу несколько чатов, указав их ID через запятую.

Скрытое содержимое доступно для зарегистрированных пользователей!

И внутри класса class ModelCheckoutOrder extends Model пишем нашу функцию:

Скрытое содержимое доступно для зарегистрированных пользователей!

Далее ниже внутри функции public function addOrder($data) вызываем функцию нашего бота для каждого чата:

Скрытое содержимое доступно для зарегистрированных пользователей!

После внесения изменений не забудьте обновить модификаторы в админке.
 

tester99

Пользователь
За год с нами За классный аватар
Регистрация
11.07.22
Сообщения
2
Симпатии
0
Супер!
 

Arcvi

Пользователь
За классный аватар
Регистрация
24.09.23
Сообщения
1
Симпатии
0
инструкция в начале для какой версии opencart?
 
Регистрация
02.06.21
Донат
50.00 ₽
Сообщения
9,153
Решения
1
Симпатии
7,479
Веб-сайт
itnull.info
  • Друг форума
  • Программист
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #4

Создайте аккаунт или войдите, чтобы комментировать

Вы должны быть участником, чтобы оставлять комментарии

Зарегистрироваться

Создайте учетную запись. Это просто!

Авторизация

Уже есть аккаунт? Авторизуйтесь.

Похожие темы

Мы уже рассматривали как отправлять сообщения в телеграмм из обычного PHP скрипта и заказы из...
Ответы
0
Просмотры
2K
Что если сообщения с сайта будут приходить не только на ваш e-mail, но и моментально в...
Ответы
0
Просмотры
3K
Сверху Снизу