Если требуется надежность доставки смс, то лучше использовать платные сервисы.
Совершенно согласен.
Вот один из примеров реализации отправки смс сообщений покупателям при оформлении заказа, а также при смене статуса. Реализовано с помощью
http://www.smsfeedback.ru.
Из моих наблюдений :
1.Смс доходят за несколько секунд
2.Стоимость относительно не высокая.
3.Как бы не был указан номер телефона, например: +7921xxxxxxx или 8(921)xxxxxxx или 8-921-xxx-xx-xx итп, смс доходят все равно.
Проходим регистрацию на этом сайте. Получаем логин и пароль. Там же добавляем свою подпись для смс сообщений.
Все, что будет написано ниже работает при условии, что номер телефона является первым! дополнительным полем, созданным в админке в разделе "Форма регистрации". Если номер телефона не первое дополнительное поле, значение некоторых переменных нужно изменить.
В файл functions.php вставляем их функцию :
function send($host, $port, $login, $password, $phone, $text, $sender = false, $wapurl = false )
{
$fp = fsockopen($host, $port, $errno, $errstr);
if (!$fp) {
return "errno: $errno \nerrstr: $errstr\n";
}
fwrite($fp, "GET /messages/v2/send/" .
"?phone=" . rawurlencode($phone) .
"&text=" . rawurlencode($text) .
($sender ? "&sender=" . rawurlencode($sender) : "") .
($wapurl ? "&wapurl=" . rawurlencode($wapurl) : "") .
" HTTP/1.0\n");
fwrite($fp, "Host: " . $host . "\r\n");
if ($login != "") {
fwrite($fp, "Authorization: Basic " .
base64_encode($login. ":" . $password) . "\n");
}
fwrite($fp, "\n");
$response = "";
while(!feof($fp)) {
$response .= fread($fp, 1);
}
fclose($fp);
list($other, $responseBody) = explode("\r\n\r\n", $response, 2);
return $responseBody;
}
1.Отправка смс покупателю при оформлении заказа.
В файл order_functions.php после строки
if (CONF_EMAIL_ORDER_SEND) xMailTxtHTMLDATA($email, STRING_ORDER." #".$orderID." - ".CONF_SHOP_NAME, $html);
вставляем :
$smessage2 = "Номер Вашего заказа".$orderID.".Спасибо за заказ!";
$smessr2 = iconv('windows-1251', 'UTF-8', $smessage2);
send("api.smsfeedback.ru", 80, "логин", "пароль",
$_POST['additional_field_1'], $smessr2, "подпись");
Логин,пароль, подпись - данные, указанные на сайте
www.smsfeedback.ru. Текст сообщения, разумеется, можно изменить на свой. Нужно только иметь ввиду ограничение на количество символов кириллицей (70).
Телефон покупателя берется из
$_POST['additional_field_1']
К сожалению, нет возможности проверить на дефолтовом шаблоне передается ли он (первое дополнительное поле) там также, как у меня. Но, даже, если в дефолтовом шаблоне по другому, исправить, думаю, не проблема.
2. Отправка смс покупателю при смене статуса заказа.
В файле custord_new_orders.tpl например перед строкой :
{section name=i loop=$order.reg_fields_values}
вставляем :
<input name="stel" type="hidden" value="{$order.reg_fields_values[0].reg_field_value}">
В файле statistic_functions.php перед строкой :
xMailTxt($Email, STRING_CHANGE_ORDER_STATUS, 'customer.order.change_status.tpl.html'
вставляем :
$smessage = "Статус Вашего заказа №".$orderID." был изменен на : ";
if ($statusID == 1) {
$smessage .= "Отменен.";
}
else {
$smessage .= $status_name.".";
}
$smessr = iconv('windows-1251', 'UTF-8', $smessage);
send("api.smsfeedback.ru", 80, "логин", "пароль",
$_POST['stel'], $smessr , "подпись");
Логин,пароль, подпись - данные, указанные на сайте
www.smsfeedback.ru. Текст сообщения, разумеется, можно изменить на свой. Нужно только иметь ввиду ограничение на количество символов кириллицей (70).
Ну и, разумеется, подобным образом можно уведомлять покупателей и о других значимых событиях вашего сайта