Апрель 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();
}
}
Описание полей на русском:
Описания полей на английском: