Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
ia
 Аватар для ia
0 / 0 / 0
Регистрация: 08.09.2020
Сообщений: 58

Отправка уведомлений заказа в Telegram

19.06.2022, 14:24. Показов 615. Ответов 3
Метки php (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. У меня есть программа для отправки уведомлений в тг с сайта. Не могли бы вы объяснить что в ней происходит, какие есть функции и за что они отвечают. Заранее спасибо

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/**
 * Plugin name:
 */
 
add_action( 'woocommerce_new_order', 'telegram_notification',  1, 1  );
function telegram_notification( $order_id ) {
 
            $order = wc_get_order( $order_id );
    $order_data = $order->get_data(); // The Order data 
 
 
$items = $order->get_items();
 
        foreach ($items as $item) {
            $product = $item->get_product();
            $qty     = $item->get_quantity() ? $item->get_quantity() : 1;
            $price   = wc_format_localized_price($item->get_total() / $qty);
            $text2    .= 'Товар :' . $product->get_name() . ' Кол-во :' . $qty . ' Цена :' . $price;
        }
    
    
$order_id = $order_data['id'];
 
## Creation and modified WC_DateTime Object date string ##
 
// Using a formated date ( with php date() function as method)
$order_date_created = $order_data['date_created']->date('Y-m-d H:i:s');
$order_date_modified = $order_data['date_modified']->date('Y-m-d H:i:s');
 
$order_shipping_method = $order_data['shipping_method'];
 
$order_total = $order_data['total'];
 
## BILLING INFORMATION:
 
$order_billing_first_name = $order_data['billing']['first_name'];
$order_billing_last_name = $order_data['billing']['last_name'];
$order_billing_address_1 = $order_data['billing']['address_1'];
$order_billing_address_2 = $order_data['billing']['address_2'];
$order_billing_city = $order_data['billing']['city'];
$order_billing_state = $order_data['billing']['state'];
$order_billing_postcode = $order_data['billing']['postcode'];
$order_billing_country = $order_data['billing']['country'];
$order_billing_email = $order_data['billing']['email'];
$order_billing_phone = $order_data['billing']['phone'];
 
//Далее создаем переменную, в которую помещаем PHP массив
$arr = array(
  'Номер заказа: ' => $order_id,
  'Дата: ' => $order_date_modified,
  'Название товара: ' => $text2,
  'Цена товара: ' => $order_total,
);
 
//При помощи цикла перебираем массив и помещаем переменную $txt текст из массива $arr
foreach($arr as $key => $value) {
  $txt .= "<b>".$key."</b> ".$value."%0A";
};
 
    file_get_contents("https://api.telegram.org/" . $txt);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2022, 14:24
Ответы с готовыми решениями:

Поиск обновлений и отправка уведомлений
Здравствуйте. Прошу помощи у знатоков как правильнее решить следующую задачу. Нужно уведомлять пользователей о появлении новых статей,...

Отправка сообщений и уведомлений на одном сервере
Доброго всем времени суток! Есть: один сервер (Apache), одна база (Mysql), порядка 10-20 пользователей. Задача: сделать так, чтоб при...

Звук и вибрация уведомлений от Viber/Telegram Iphone SE
Всем доброго дня. Наткнулся на одну вещь, которая задевает нервную систему:D Игрался с настройками уведомлений, что теперь, когда я...

3
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3959 / 2075 / 832
Регистрация: 13.03.2010
Сообщений: 6,841
19.06.2022, 15:00
Вкратце и простым языком:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
//добавляем экшон вукомерса, который срабатывает при создании заказа
add_action( 'woocommerce_new_order', 'telegram_notification',  1, 1  );
//добавляем функцию, которую вызывает экшон
function telegram_notification( $order_id ) {
 //получаем заказ
            $order = wc_get_order( $order_id );
//получаем данные заказа
    $order_data = $order->get_data(); // The Order data 
 
 //полуаем позиции заказа
$items = $order->get_items();
 //для каждой позиции заказа получаем информацию, затем формируем текст для отправки
        foreach ($items as $item) {
//собсна, получаем информацию о позиции
            $product = $item->get_product();
//получаем количество этой позиции в заказе (или указываем 1, если явно не указано количество)
            $qty     = $item->get_quantity() ? $item->get_quantity() : 1;
//получаем отформатированную и локализованную цену за ону единицу товара (тотал по заказу деленный на количество позиции в заказе)
            $price   = wc_format_localized_price($item->get_total() / $qty);
//формируем текст для отправки
            $text2    .= 'Товар :' . $product->get_name() . ' Кол-во :' . $qty . ' Цена :' . $price;
        }
    
    //записываем номер заказа в переменную
$order_id = $order_data['id'];
 
//форматируем даты создания и изменения заказа
$order_date_created = $order_data['date_created']->date('Y-m-d H:i:s');
$order_date_modified = $order_data['date_modified']->date('Y-m-d H:i:s');
 //записываем в переменную способ доставки
$order_shipping_method = $order_data['shipping_method'];
 //записываем в переменную сумму заказа
$order_total = $order_data['total'];
 //записываем в переменные информацию о доставке
$order_billing_first_name = $order_data['billing']['first_name'];
$order_billing_last_name = $order_data['billing']['last_name'];
$order_billing_address_1 = $order_data['billing']['address_1'];
$order_billing_address_2 = $order_data['billing']['address_2'];
$order_billing_city = $order_data['billing']['city'];
$order_billing_state = $order_data['billing']['state'];
$order_billing_postcode = $order_data['billing']['postcode'];
$order_billing_country = $order_data['billing']['country'];
$order_billing_email = $order_data['billing']['email'];
$order_billing_phone = $order_data['billing']['phone'];
 //дальше уже всё написано до меня, кроме 1 строки
//Далее создаем переменную, в которую помещаем PHP массив
$arr = array(
  'Номер заказа: ' => $order_id,
  'Дата: ' => $order_date_modified,
  'Название товара: ' => $text2,
  'Цена товара: ' => $order_total,
);
 
//При помощи цикла перебираем массив и помещаем переменную $txt текст из массива $arr
foreach($arr as $key => $value) {
  $txt .= "<b>".$key."</b> ".$value."%0A";
};
 //делаем запрос к api telegram для отправки сообщения
    file_get_contents("https://api.telegram.org/" . $txt);
}
Но мне кажется, что код какой-то неправильный. Если товаров больше 1, то будет приходить только последний товар из заказа.
0
ia
 Аватар для ia
0 / 0 / 0
Регистрация: 08.09.2020
Сообщений: 58
19.06.2022, 15:03  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
будет приходить только последний товар из заказа.
Мне приходит только номер заказа, дата и цена. Название почему-то не приходит(
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3959 / 2075 / 832
Регистрация: 13.03.2010
Сообщений: 6,841
19.06.2022, 15:20
ia, проверяйте содержимое $items и $item. Вероятно, где-то NULL и надо копать уже в ту сторону. Я, если честно, в вукомерс не силен, возможно метод get_product возвращает совсем не то, на что код рассчитан.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2022, 15:20
Помогаю со студенческими работами здесь

Telegram API: Пересылка уведомлений между двумя номерами
Добрый вечер всем, подскажите пожалуйста может кто уже имел опыт работы с API телеграма ? речь идет о https://core.telegram.org/methods ...

Отправка уведомлений
У меня есть класс (точнее фрагмент) с настройками, который содержит в себе геттер и сеттер типа boolean, который отвечает за разрешение...

Отправка уведомлений о доставке и прочтении
Здравствуйте Автоматически сохраняю вложения из определённого ящика Код простой, запускаю его через правило обработки Public...

Компонент DJ-Classfields отправка уведомлений
В конфигурации компонента есть настройка триггера уведомлений. Каким способом происходит отправка email? В моем понимании где-то должен...

Отправка уведомлений с сайта в Facebook Messenger
Доброго времени суток! Нужен человек, который поможет настроить отправку уведомлений с сайта на ФБ messanger. Сейчас функционал настроен на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru