Авто уведомление на почту или смс на мобильный при приходе заказа Битрикс и проверка если заказ проверочный от Яндекс

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

В нашем случае мы можем проверять что именно за заказ и слать уведомления только в случае если заказ проверочный от яндекса

обычно яндекс присылает чтото такое в комментариях:

Это контрольный заказ Яндекс.Маркета: мы проверяем, вовремя ли вы отвечаете на заказы. Чтобы пройти проверку, в течение часа пришлите на inga.pertrova@yandex.ru код fhEy9i weC228sV, но удалите из него пробел, добавьте комментарий, например «Код проверки», и укажите тему письма. Если заказ поступил в нерабочее время, отправьте письмо, когда магазин откроется — в течение первого рабочего часа. Подробности: https://yandex.ru/support/partnermarket/quality/critical-mistakes.html#order__check-code

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

открываем init.php

добавляем функцию yandex_check для обработки которая будет слать смс и писать вам на почту в случае если в комментарии заказа указано что заказ проверочный.

function Yandex_check($zakaz) 
{

$mail="vashapochta@mail.ru"; // ваша почта
$subject ="Проблема с заказом №".$zakaz ; // тема письма
$texto='Внимание заказ №'.$zakaz.' проверочный, срочно проверить и обработать в течении часа!';



$order = \Bitrix\Sale\Order::load($zakaz); // объект заказа
$order->getFields(); // получение полей заказа
$desc=$order->getField("USER_DESCRIPTION"); // получение комментария

if (stristr ( $desc , "пройти проверку")) {
// если находим слова "пройти проверку" то считаем что заказ сделал яндекс и выполняем два действия

//отправляем почту на ваш_емейл"майл.ру

if( mail($mail, $subject, $texto ) )
{
echo 'Успешно отправлено!'; }
else{
echo 'Отправка не удалась!';
}

// если вы зарегистрированы на sms.ru то можете сразу и смс отправлять.


require_once '/home/bitrix/www/include/sms.ru.php'; // проверьте путь и скачайте последнюю версию с sms.ru

$smsru = new SMSRU(' сюда вставьте ключ из SMS.ru'); // Ваш уникальный программный ключ, который можно получить на главной странице

$data = new stdClass();
$data->to = '7911388838,730030300'; // через запятую перечень телефонов для отправки.

$data->text = $texto; // Текст сообщения в СМС

// $data->from = ''; // Если у вас уже одобрен буквенный отправитель, его можно указать здесь, в противном случае будет использоваться ваш отправитель по умолчанию
// $data->time = time() + 7*60*60; // Отложить отправку на 7 часов
// $data->translit = 1; // Перевести все русские символы в латиницу (позволяет сэкономить на длине СМС)

//для начала можно попробовать тест, но для реальной отправки надо будет закомментировать строку ниже

$data->test = 1; // Позволяет выполнить запрос в тестовом режиме без реальной отправки сообщения

// $data->partner_id = '1'; // Можно указать ваш ID партнера, если вы интегрируете код в чужую систему

$sms = $smsru->send_one($data); // Отправка сообщения и возврат данных в переменную

//дальше можно удалить нужно только для debug 
if ($sms->status == "OK") { // Запрос выполнен успешно
    echo "Сообщение отправлено успешно. ";
    echo "ID сообщения: $sms->sms_id. ";
    echo "Ваш новый баланс: $sms->balance";
} else {
    echo "Сообщение не отправлено. ";
    echo "Код ошибки: $sms->status_code. ";
    echo "Текст ошибки: $sms->status_text.";
}



}
}

Осталась мелочь, добавить обработчик получающий ID заказа в момент его создания и запускающий нашу функцию:

Следует убедится что у вас уже нет события ModifyOrderSaleMails

и соответственно модифицировать код

function ModifyOrderSaleMails($orderID, &$eventName, &$arFields)
{
   if(CModule::IncludeModule("sale") && CModule::IncludeModule("iblock"))
{

Yandex_check($orderID);
}
}


Загрузка комментариев...