Подключаем смс-уведомления в интернет-магазине

сентябрь 3 , 2017
Предыдущая статья Демо Исходники

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

Загуглив в рамблере, я с некоторой грустью выяснил следующее. Похоже, те благостные времена работы волшебных сервисов отправки смс за 3 копейки ушли и больше не вернутся. Были в свое время народные умельцы, которые отправляли халявные смски через общедоступные формочки на сайтах операторов сотовой связи, но теперь лавочку прикрыли. Чтобы отправить смс через сайт оператора, нужно проделать массу манипуляций в зависимости от паранойи оного оператора: это и в личный кабинет войти, и ввести код подтверждения при отправке смс, полученный через смс же на свой номер. Да еще и ограничения по количеству и/или промежутков времени. В общем, там лось ногу сломит. Впрочем, если у Вас другая, более радостная информация, то поделитесь в комментах, обрадуйте автора :-)

Так вот. Потому как волшебных смс-сервисов не нашлось, то воспользуемся самыми обычными. Выберем более-менее адекватный вариант и прикрутим отправку смс к оформлению заказа в нашем тестовом интернет-магазине


Ищем подходящий сервис

Сервисов отправки смс до фига, но я посмотрел десяток из них и особой разницы не заметил. Главный критерий для меня был - это стоимость отправки одной смс. В среднем выходит 1,5 рубля за штуку. Цена варьируется в зависимости от тарифов, можно купить пачку тысяч эдак из пяти сразу - выйдет дешевле. Но мы люди простые, не юлмарт же у нас - слишком тратиться нам ни к чему.

Из всех вариантов мне больше приглянулся sms.ru. Во-первых, супер-незатейливое название, а во-вторых - 5 бесплатных смс в день на свой номер. Думаю, второй пункт подойдет многим из нас, ведь не у всех магазинов по сотне заказов в день. Если Вы биткойнами поштучно торгуете, то пять заказов в день будет вполне достаточно. Поэтому пусть будет - sms.ru.


Алгоритм интеграции

Очень простой. Впрочем, я другого и не ожидал. Это же не фильтры по характеристикам товаров делать.

Итак, алгоритм по шагам.
— Регистрируемся на sms.ru
— Вбиваем нужные данные, вроде Ваших ФИО, номера и прочего
— Третий шаг финансовый. Я перевел на счет сервиса символическую сумму в 200 рублей. Еще 40 мне добавили за какую-то акцию. Причем до сих пор еще ни рубля не потратил, так как хватает тех самых 5 бесплатных смс в день. И теперь за давностью лет не могу вспомнить, обязательным ли был первый взнос или можно было вообще все сделать бесплатно. В общем, будете пользоваться, проверьте :-)
— Дальше скачиваем php-библиотечку с сайта сервиса
— Пишем несколько строк кода в функции отправки заказа. Ну или где Вам нужно.


php-код в интернет-магазине

Теперь вытаскиваем исходникики интернет-магазина и заставим код отправлять смс в нужное время. Для начала скачайте библиотеку из личного кабинета sms.ru или возьмите в моих исходниках. Создайте в папке scripts папку lib и закиньте в нее эту библиотечку с названием sms.ru.php. Осталось открыть в проекте файл scripts/ordep.php и немного доработать его.

В самом начале файла пишем так

    // Подключаем библиотеку sms.ru
    require_once './lib/sms.ru.php';

Далее напишем функцию отправки смс (взято из примера на сайте сервиса)

    // Отправка смс с помощью сервиса sms.ru
    function sendSms($options) {
        $smsru = new SMSRU('********-****-****-****-************'); // Ваш api-ключ
    
        $data = new stdClass();
        $data->to = '7911*******'; // Номер телефона
        // Текст сообщения
        $data->text = 'Email: ' . $options['email'] . '. Summa: ' . $options['full_summa'] . ' rub.';
        $data->translit = 1; // Экономим на тексте, переводим русские символы в латинские
        return $smsru->send_one($data);
    }

api-ключ найдете в Вашем личном кабинете, номер забейте свой, текст по желанию. Я пожелал в смс указать email клиента и сумму заказа. В 140 символов уложился. Параметр translit позволит сэкономить на длине смс, если текст будете отправлять кириллицей. В документации sms.ru есть еще куча параметров, но для простой отправки смс этого кода вполне хватит.

Что еще может sms.ru?
В документации к нему описано еще довольно много всяких прикольных штук. Например, отправка сообщений в Viber. Но я не стал подробно разбираться в этих модных вещах.
Как говорится, мое дело — стратегия :-)

И напоследок собственно, отправка смс. Ищем функцию sendEmailOrder и в самом конце, после отправки письма добавляем это

    // Этот код уже был
    // Отправляем письмо
    sendEmailOrder($data);

    // А этого не было
    // Отправляем смс
    sendSms($data);

Вот и все. Один из самых простых уроков про интернет-магазины. Все ссылки на исходники и сопутствующие статьи ниже.

Все об интернет-магазинах

Предыдущая статья Демо Исходники
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!