Отправка SMS при смене статуса заказа, в т.ч. при создании заказа

Модуль расширенного управления меню для битрикс

Апрель 14, 2021

Теги: Магазин

Отправка смс при смене статуса заказа модуля интернет-магазина.

Используются стандартные службы отправки смс (модуль "Служба сообщений"), соответственно служба отправки должна быть настроена, отправитель  по умолчанию установлен в настройках главного модуля и должны быть созданы типы SMS-событий и шаблоны для них.

В данном примере тип события аналогичен соответствующим типам для отправки почтой с добавлением "_SMS" в конце:


<?php

    
namespace Partner;

$eventManager \Bitrix\Main\EventManager::getInstance();
 
$eventManager->addEventHandler(
    
'sale',
    
'OnSaleStatusOrderChange',
    
'\Partner\SmsEvent::statusChange'
);

class 
SmsEvent 
{
    function 
statusChange(\Bitrix\Main\Event $event)
    {
        
$order $event->getParameter("ENTITY");

        if(!
in_array($order->getField('STATUS_ID'),array(
            
'N',
            
'P',
            
'SZ',
            
'F',
        )))
            return;

        
$phone '';
        
$email '';
        foreach(
$order->getPropertyCollection() as $property)
        {
            if(
$property->getField('CODE')=='PHONE')
                
$phone $property->getField('VALUE');
            elseif(
$property->getField('CODE')=='EMAIL')
                
$email $property->getField('EMAIL');
        }

        
$fields = array(
            
'PHONE' => $phone,
            
'ORDER_ID' => $order->getField('ACCOUNT_NUMBER'),
            
'ORDER_REAL_ID' => $order->getField('ID'),
            
'ORDER_DATE' => $order->getField('DATE_STATUS')->format('Y.m.d'),
            
'ORDER_STATUS' => $order->getField('STATUS_ID'),
            
'ORDER_PRICE' => \SaleFormatCurrency($order->getPrice(),$order->getCurrency()),
            
'EMAIL' => $email,
            
'ORDER_DESCRIPTION' => $order->getField('USER_DESCRIPTION'),
        );

        
$sms = new \Bitrix\Main\Sms\Event('SALE_STATUS_CHANGED_'.$order->getField('STATUS_ID').'_SMS'$fields);
        
$sms->setSite($order->getSiteId());
        
$sms->setLanguage('ru');
        
$sms->send(); 
    }
}

Описание полей на русском:


#PHONE# - телефон получателя

#ORDER_ID# - номер заказа
#ORDER_REAL_ID# - ID заказа
#ORDER_DATE# - дата заказа
#ORDER_PRICE# - сумма заказа
#ORDER_STATUS# - буквенный код статуса заказа
#EMAIL# - E-mail
#ORDER_DESCRIPTION# - комментарий к заказу

Описания полей на английском:


#PHONE# - user phone

#ORDER_ID# - order account number
#ORDER_REAL_ID# - order ID
#ORDER_DATE# - order date
#ORDER_PRICE# - order sum
#ORDER_STATUS# - mnemonic order status code
#EMAIL# - user E-mail
#ORDER_DESCRIPTION# - order user comment

См. также:

← Переход к списку