API SMS-шлюза GSM-INFORM
GSM-INFORM - это web-сервис отправки SMS по протоколу HTTP. 
Вы с легкостью сможете интегрировать смс уведомления в ваш сайт, интернет-магазин или в приложение для 
Windows, Linux, MacOS, Android и др. 
Шлюз позволяет отправлять длинные (из нескольких частей) сообщения с подменой имени отправителя, а также получать статусы отправки сообщений. 

API-ключ
Для интеграции вам понадобится API-ключ и ID кабинета - они необходимы для авторизации в нашем сервисе: 


Интеграция
Параметры запроса (GET или POST)

http://gsm-inform.ru/api/	url - адрес, на который отправляются запросы
   api_key			API-ключ
   id				ID кабинета
   cmd				команда, которую следует выполнить: send - отправка сообщений, status - проверка статусов доставки, balance - проверка баланса
   codepage		кодировка, в которой выполняются запросы, по умолчанию - utf-8
   out		формат данных, выводимых при ответе: json - по умолчанию, другие форматы: xml

Дополнительные параметры для каждой команды разные, подробнее см. ниже.


Отправка сообщения (cmd=send)
Дополнительные параметры
  sender	имя отправителя, латинские буквы, цифры, макс. 11 символов
  to		номера телефонов получателей, через запятую
  message	текст сообщения
  traffic	тип трафика, simple - обычный, по умолчанию, priority - приоритетный
  send_now	1 - отправить сообщение немедленно, 
		0 - отправить сообщение утром, если сейчас ночь (по умолчанию, опция "Активировать ночные смс" должна быть отключена в настройках личного кабинета)
  megafonnew	условия отправки на Мегафон и МТС, asis - с цифровым отправителем, по умолчанию, del - игнорировать, не отправлять смс абонентам Мегафона и МТС, quality - в качестве отправителя ваш бренд, стоимость сообщения увеличивается согласно вашего тарифного плана


Пример delivery_url: http://mysite.ru/delivery/?id=:id&status=:status Вместо :id и :status будут подставлены реальные значения идентификатора сообщения в нашем сервисе и текущий статус доставки (подробнее см. ниже). Также вы можете добавить свои GET параметры к delivery_url, они будут переданы вашему скрипту. 

При использовании параметра delivery_url нет необходимости на вашей стороне постоянного вызова функции get_status, как только мы получим статус от оператора, сразу же известим вас. 

В ответ отправляются идентификаторы сообщений для последующей проверки статусов или коды и описания ошибок для каждого номера. 

Получение статусов сообщений (cmd=status)
  Дополнительные параметры
  sms_id	идентификаторы сообщений, через запятую, полученные после отправки сообщений


 В ответ отправляются коды и описания статусов. 

Получение информации о балансе (cmd=balance)
Дополнительные параметры не требуются


 В ответ отправляется сумма на балансе и наименование валюты. 

Реализация на PHP
<?php

/**
* Функция отправки сообщения.
* Если $traffic = 'simple', то параметр $sender не актуален,
* в качестве имени отправителя будет подставлен свободный альфа-номер.
*/

function send_sms($to, $message, $traffic = 'priority', $sender = 'TEST') {
    $params = array(
        'api_key' => 'AG434234yhaNnTK6f',
        'id' => '64444',
        'to' => $to,
        'message' => $message,
        'traffic' => $traffic,
        'sender' => $sender,
        'cmd' => 'send',
//      'delivery_url' => 'http://mysite.ru/delivery/?id=:id&status=:status&foo=bar',
        'megafon' => 'quality',
    );

    $result = file_get_contents('http://gsm-inform.ru/api/?' . http_build_query($params));

    /**
    * пример ответа (номера в примере скрыты):
    *
    * {"error_no":0,"error_msg":"OK","items":[{"phone":"+7962****103","sms_id":196371174,"error_no":0,"error_msg":"OK"},
    * {"phone":"+7961****945","sms_id":196371175,"error_no":0,"error_msg":"OK"}],"sent":2}
    */

    return json_decode($result);
}

/**
* Функция получения статусов сообщений.
*/

function get_status($sms_id) {
    $params = array(
        'api_key' => 'erewsfgsdfgk48EFH5849brB',
        'id' => '234238',
        'sms_id' => $sms_id,
        'cmd' => 'status',
    );

    $result = file_get_contents('http://gsm-inform.ru/api/?' . http_build_query($params));

    /**
    * пример ответа
    *
    * {"error_no":0,"error_msg":"OK","items":[{"id":"196371175","status_no":"2","status_msg":"Delivered"},
    * {"id":"196371174","status_no":"2","status_msg":"Delivered"},
    * {"id":"196371176","error_no":10,"error_msg":"SMS Not Found"}]}
    */

    return json_decode($result);
}

/**
* Функция получения информации о балансе.
*/

function get_balance() {
    $params = array(
        'api_key' => 'hasdfgsdfgsdfgsdgsbrB',
        'id' => '1232t235328',
        'cmd' => 'balance',
    );

    $result = file_get_contents('http://gsm-inform.ru/api/?' . http_build_query($params));

    /**
    * пример ответа:
    *
    * {"error_no":0,"error_msg":"OK","balance":136.82,"currency":"RUR"}
    */

    return json_decode($result);
} 
Коды ошибок
0: OK	команда выполнена успешно
1: API Key Not Found	неверный api-ключ
2: Command Not Found	неизвестная команда
3: User Not Found	пользователь с указанным id не найден
4: Phone List Is Empty	пустой список телефонов для отправки сообщений
5: Unknown Text Message	не указан текст сообщения
6: Send Error	не удалось отправить сообщение на указанный номер
7: Unknown Sender	не указан отправитель по приоритетному трафику
8: Incorrect Sender	некорректный отправитель, допускается только латиница и цифры
9: Empty Id List	пустой список идентификаторов сообщений для получения статусов
10: SMS Not Found	не найдено сообщение с таким идентификаторов
11: Not Paid	не удалось оплатить рассылку, проверьте баланс
14: Ignored	сообщение игнорировано, см. параметр megafon


Коды статусов доставки сообщения
1: Sending With Out Report	отправлено без получения отчета
2: Delivered	доставлено
3: Not Delivered	не доставлено
4: Buffered	буфферизировано (служебный статус)
6: Error	ошибка доставки сообщения
7: Temporary	временное сообщение, сформировано, но команды на отправку не было
8: Sending	отправляется (поставлено в очередь для отправки)
9: Canceled	отменено (после постановки в очередь была команда на отмену)
10: Sheduled	запланировано (отправка по расписанию)
11: Sent	отправлено

Здесь перечислены все статусы, используемые нами в сервисе. Большинство из них служебные, по факту будет достаточно статусов: 11 (отправлено), 2 (доставлено), 3 и 6 (не доставлено).