msVK (уведомление о новом заказе в ВК для minishop, готовое решение)
В связи с тем, что идет не хорошая тенденция с отключением мессенджеров, я решил переходить на отечественные решения, а именно в ВК.
На просторах интернета я натыкался на плагин, который делает уведомление в ТГ, имя этому дополнению msTelegram, спасибо большое человеку за его творение.
На его базе сделал свое, но для ВК, поэтому оставлю это здесь больше для себя, но да и вдруг кому будет полезно.
Значит сперва нам нужно провести подготовительные работы.
Нужно получить токен, и узнать номер чата, в который будет посылаться уведомление.
Тут наверное, стоит сказать, что моих знаний не хватило, что бы уведомление приходило от имени сообщества, поэтому я реализовал, что у меня приходит уведомление с личного аккаунта.
vkhost.github.io/ переходим по этой ссылке, выбираем VKadmin, авторизуемся под аккаунтом, с которого в дальнейшем будут приходить уведомления. После авторизации, из адресной строки забираем адрес.
должно получиться что-то в этом роде oauth.vk.com/blank.html#access_token=vk1.a.ldksahfkjdsahf;klsdaj;dsalj:DSLKJA:KSHFDJSKgakjgdsajfhglsdahfslkdajhLKJSHdfhgdsfkdsjgf&expires_in=0&user_id=1111111&email=myemail@yandex.ru
Я пометил жирным сам токен, он то нам и нужен.
Теперь, номер чата или если говорить правильно peer_id.
ВАЖНО, для каждого аккаунта идентификатор чата разный.
Заходим в чат, в который в дальнейшем планируем передавать уведомления с аккаунта, с которого планируется эти уведомления передавать и опять же смотрим в адресную строку.
Должно выглядеть как-то так:
vk.com/im/convo/2000000104?entrypoint=list_all
Жирным я пометил peer_id
И остается дело за малым, нужно назначить администратором чата, аккаунт с которого планируются уведомления.
После чего создаем плагин с любым именем, я назвал у себя msVK, так же нужно выставить событие msOnCreateOrder и пилим туда код, который ниже:
0
На просторах интернета я натыкался на плагин, который делает уведомление в ТГ, имя этому дополнению msTelegram, спасибо большое человеку за его творение.
На его базе сделал свое, но для ВК, поэтому оставлю это здесь больше для себя, но да и вдруг кому будет полезно.
Нужно получить токен, и узнать номер чата, в который будет посылаться уведомление.
Тут наверное, стоит сказать, что моих знаний не хватило, что бы уведомление приходило от имени сообщества, поэтому я реализовал, что у меня приходит уведомление с личного аккаунта.
vkhost.github.io/ переходим по этой ссылке, выбираем VKadmin, авторизуемся под аккаунтом, с которого в дальнейшем будут приходить уведомления. После авторизации, из адресной строки забираем адрес.
должно получиться что-то в этом роде oauth.vk.com/blank.html#access_token=vk1.a.ldksahfkjdsahf;klsdaj;dsalj:DSLKJA:KSHFDJSKgakjgdsajfhglsdahfslkdajhLKJSHdfhgdsfkdsjgf&expires_in=0&user_id=1111111&email=myemail@yandex.ru
Я пометил жирным сам токен, он то нам и нужен.
Теперь, номер чата или если говорить правильно peer_id.
ВАЖНО, для каждого аккаунта идентификатор чата разный.
Заходим в чат, в который в дальнейшем планируем передавать уведомления с аккаунта, с которого планируется эти уведомления передавать и опять же смотрим в адресную строку.
Должно выглядеть как-то так:
vk.com/im/convo/2000000104?entrypoint=list_all
Жирным я пометил peer_id
И остается дело за малым, нужно назначить администратором чата, аккаунт с которого планируются уведомления.
После чего создаем плагин с любым именем, я назвал у себя msVK, так же нужно выставить событие msOnCreateOrder и пилим туда код, который ниже:
<?php
if($modx->event->name != 'msOnCreateOrder') return;
$token = $modx->getOption('mstelegram_token', null, false);
$recipients = explode(',', $modx->getOption('mstelegram_recipients', null, ''));
$contacts = $modx->getObject('msOrderAddress', array('id'=> $msOrder->address));
$_products = $msOrder->getMany('Products');
// Список товаров в заказе
$i = 0;
$products = '';
foreach ($_products as $product) {
$i++;
$products .= "{$i}. {$product->name} ({$product->count} шт.)";
}
$address_tmp=$msOrder->text_address;
if ($msOrder->delivery=="1") {
$address_tmp="Самовывоз";
}
//================
$token = " "; //Сюда нужно вставить свой токкен
$recipients = array(" "); // Сюда ID вашего чата
//================
$api_version = "5.131";
$message_text = "
Новый заказ #{$msOrder->id}
на сумму {$msOrder->cost} р.
-----
дата и время:
{$msOrder->region},
{$msOrder->country}
-----
{$products}
-----
Адрес: {$address_tmp}";
foreach ($recipients as $id) {
$id = trim($id);
if (!$id) continue;
$random_id = rand(1, 999999999);
$post_fields = http_build_query([
'peer_id' => $id,
'message' => $message_text,
'random_id' => $random_id,
'access_token' => $token,
'v' => $api_version
]);
$url = "https://api.vk.com/method/messages.send";
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post_fields
]);
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
}И чисто теоретически, все должно работать =)