Skip to content
03.06.2023
  • Технология
  • Новости
  • В мире

Технологии

Primary Menu
  • Технология
  • Новости
  • В мире
  • Home
  • 2021
  • Январь
  • 23
  • Технология

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

admin 23.01.2021 2 min read

opencartbot-9082602

15 февраля 2020 OpenCart Telegram

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

Создаем бота

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

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

jbxa_5wecdy-595x1024-7046387

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

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

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

  1. Написать боту @ShowJsonBot любой текст. В ответ он вернет вам некие данные в JSON формате. Находим объект chat и в нем id — это и есть ваш chat id.
  2. В адресной строке ввести https://api.telegram.org/bot/getUpdates где  — это ранее полученный токен вашего бота. Находим объект chat и в нем id — это и есть ваш chat id.

umfr_h8devq-594x1024-6719993

Отправка сообщений в группу 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, то можете пропустить этот раздел и сразу перейти к следующему.

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

$order_id = $this->model_checkout_order->addOrder($order_data);
$this->model_checkout_order->addOrderHistory($order_id, 1);
$this->session->data['order_id'] = $order_id;

$json['success'] = 1;

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

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

$message = 'Пришел заказ. ';
$message .= 'Имя: ' . $name . ' ';
$message .= 'Телефон: ' . $ph . ' ';
$message .= 'E-mail: ' . $email . ' ';
$message .= 'Цена: ' . $totalPrice . ' ';

// Токен бота
define('TELEGRAM_TOKEN', '123456789:XXXXXXXXXXXXXXXXXXXXXXX');
// ваш внутренний ID
define('TELEGRAM_CHATID', '123456789');

$ch = curl_init('https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage?chat_id='.TELEGRAM_CHATID.'&text='.$message);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_exec($ch);
curl_close($ch);

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; добавляем следующий код:

$message = 'Пришел заказ. ';
$message .= 'Имя: ' . $data['firstname'] . ' ';
$message .= 'Телефон: ' . $data['telephone'] . ' ';
$message .= 'E-mail: ' . $data['email'] . ' ';
$message .= 'Цена: ' . $totalPrice . ' ';

// Токен бота
define('TELEGRAM_TOKEN', '123456789:XXXXXXXXXXXXXXXXXXXXXXX');
// ваш внутренний ID
define('TELEGRAM_CHATID', '123456789');

$ch = curl_init('https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage?chat_id='.TELEGRAM_CHATID.'&text='.$message);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_exec($ch);
curl_close($ch);

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

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

foreach ($data['products'] as $product) {

Добавляем:

$totalPrice = 0;

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

$totalPrice = $totalPrice + (float)$product['total'];

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

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

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

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

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

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

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

// Токен бота
define('TELEGRAM_TOKEN', '123456789:XXXXXXXXXXXXXXXXXXXXXXX');
// ваш внутренний ID
define('TELEGRAM_CHATID', '123456789');

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

public function message_to_telegram($text, $chat)
{
        $ch = curl_init();
        curl_setopt_array(
                $ch,
                array(
                        CURLOPT_URL => 'https://api.telegram.org/bot' . TELEGRAM_TOKEN . '/sendMessage',
                        CURLOPT_POST => TRUE,
                        CURLOPT_RETURNTRANSFER => TRUE,
                        CURLOPT_TIMEOUT => 10,
                        CURLOPT_POSTFIELDS => array(
                                'chat_id' => $chat,
                                'text' => $text,
                        ),
                )
        );
        curl_exec($ch);
}

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

$chats=explode(",", TELEGRAM_CHATID);
foreach($chats as $ch)
{
        $this->message_to_telegram('Пришел заказ на сумму '.$data['total'].' руб.', $ch);
}

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

Continue Reading

Previous: Оптимизация WordPress
Next: IT-Blog — Страница 7 из 21 — интернет, технологии, программирование

Related Stories

Захват изображения с камеры с помощью HTML5 mediacapture-2460556
1 min read
  • Технология

Захват изображения с камеры с помощью HTML5

29.04.2023
Освоение аналитики: получение максимальной отдачи от аналитических данных в GA4 analytics-intelligence-step-1-sign-in
1 min read
  • Технология

Освоение аналитики: получение максимальной отдачи от аналитических данных в GA4

26.04.2023
Что такое ошибка DNS_PROBE_FINISHED_NXDOMAIN? Полное руководство mastering-analytics-intelligence-in-ga4-hero-image-730x548-2691257
1 min read
  • Технология

Что такое ошибка DNS_PROBE_FINISHED_NXDOMAIN? Полное руководство

26.04.2023

You may have missed

Захват изображения с камеры с помощью HTML5 mediacapture-2460556
1 min read
  • Технология

Захват изображения с камеры с помощью HTML5

29.04.2023
Освоение аналитики: получение максимальной отдачи от аналитических данных в GA4 analytics-intelligence-step-1-sign-in
1 min read
  • Технология

Освоение аналитики: получение максимальной отдачи от аналитических данных в GA4

26.04.2023
Что такое ошибка DNS_PROBE_FINISHED_NXDOMAIN? Полное руководство mastering-analytics-intelligence-in-ga4-hero-image-730x548-2691257
1 min read
  • Технология

Что такое ошибка DNS_PROBE_FINISHED_NXDOMAIN? Полное руководство

26.04.2023
Как создавать отчеты по аналитике веб-сайта в Looker Studio (шаг за шагом) customize-the-report
1 min read
  • Технология

Как создавать отчеты по аналитике веб-сайта в Looker Studio (шаг за шагом)

26.04.2023
  • Технология
  • Новости
  • В мире
  • Технология
  • Новости
  • В мире
Copyright © All rights reserved. | MoreNews by AF themes.