Описание сервиса использующего SOAP-протокол
SOAP (Simple Object Access Protocol) представляет собой основанный на XML протокол, предназначенный для обмена структурированной информацией между распределенными приложениями поверх существующих веб протоколов, например HTTP. Спецификация SOAP определяет формат, используемый XML-сообщениями, то, как они должны обрабатываться, набор правил кодирования для стандарта, типы данных, а также соглашения для вызова удаленных процедур и ответы на вызовы.
Посредством SOAP протокола партнер системы Smsbil.ru получает функции платформы для внутреннего использования, например, для размещения информации на своем сайте, для ведения собственной статистики и т.д. Таким образом, осуществляется автоматизация сервиса партнера и платформы.
Клиент-скрипт партнера обращается к серверу Smsbil.ru с запросом определенного метода, сервер возвращает запрошенные данные для дальнейшего использования клиентом.
Методы системы smsbil.ru
- Получение списка запрещенных префиксов
- Получение списка разрешенных префиксов
- Получение списка стран
- Получение списка операторов
- Получение тарифов для различных стран, операторов и коротких номеров
- Получение статистики за определенное время
Для получения этих данных партнеру необходима поддержка SOAP-технологии на сервере.
Проверить поддержку можно, создав на сервере файл .php с таким содержимым:
<?php
phpinfo();
?>
Запустите его и найдите на странице слово SOAP, если не нашли описания значит у вас такой поддержки нет. Если поддержка есть, нужно создать SOAP-клиент.
Создание SOAP клиента
Создание SOAP клиента осуществляется по WSDL документу. Адрес WSDL документа:
$wsdl = http://83.133.123.19/apix/api.wsdl
Пример скрипта партнера на PHP:
<?php
// Подключение к Web сервису с помощью SOAP клиента
$wsdl = "http://83.133.123.19/apix/api.wsdl";
$client = new SoapClient($wsdl);
// Получение списка запрещенных префиксов
print_r($client->getBadpref());
// Получение списка разрешенных префиксов
print_r($client->getPrefixesForService());
// Получение списка стран
print_r($client->getCountries());
// Получение списка операторов
print_r($client->getOperators());
// Получение списка тарифов по странам, операторам и коротким номерам
print_r($client->getTariffs('ВАШ_ЛОГИН','ВАШ_ПАРОЛЬ'));
// Получение статистики за определенный период
print_r($client->getStat('ВАШ_ЛОГИН','ВАШ_ПАРОЛЬ',0,'2010-08-01 12:00:00','2010-08-03 23:00:00'));
?>
getBadpref
Получение информации по заблокированным префиксам
@return array – массив
array getBadpref()
Результат
Array
(
[0] => 429922
[1] => 429029
[2] => 4298352849
[3] => 428100
[4] => 428323
[5] => 428565
…
)
[id] - идентификатор
[prefix] - префикс
getPrefixesForService
Получение информации по доступным префиксам
@return array – массив
array getPrefixesForService()
Результат
Array
(
[0] => Array
(
[prefix] => 424
[prefix_type] => 1
)
[1] => Array
(
[prefix] => 585
[prefix_type] => 1
)
[2] => Array
(
[prefix] => 626
[prefix_type] => 1
)
...
[12] => Array
(
[prefix] => 913
[prefix_type] => 2
)
)
[id] - идентификатор
[prefix] - префикс
[prefix_type] – тип префикса (для тарифов)
getStat
Получение статистики за определенный период.
Замечание: Если для вашей статистике нежелательно использование кириллици то параметр "in" должен быть равным "1", и в этом случае даты используемые в статистике будут в формате "ДД-ММ-ГГГГ ЧЧ:ММ:СС" (причем для входных параметров также). Если же вы используете кириллицу то параметр "in" должен быть равным "0" и в этом случае формат даты будет "ГГГГ-ММ-ДД ЧЧ:ММ:СС"
@param string $login – логин партнера в системе smsbil
@param string $password – пароль партнера в системе smsbil
@param string $in – параметр, отвечающий за вывод в транслите (0 - кириллица / 1 - транслит)
@param string $date_from – дата с которой вывести статистику (если in=0 то формат даты такой "ГГГГ-ММ-ДД ЧЧ:ММ:СС" если in=1 то формат даты такой "ДД-ММ-ГГГГ ЧЧ:ММ:СС")
@param string $date_to – дата по которую вывести статистику (если in=0 то формат даты такой "ГГГГ-ММ-ДД ЧЧ:ММ:СС" если in=1 то формат даты такой "ДД-ММ-ГГГГ ЧЧ:ММ:СС")
@return array - массив тарифов для партнера array getTariffs()
Результат
Array
(
[0] => Array
(
[from] => 796165781XX
[sms_id] => 188313
[date] => 2010-08-01 01:12:01
[country_id] => 1
[operator_id] => 4
[number] => 9105
[message] =>
[status] => ok
[cost] => 17.41156
)
[1] => Array
(
[from] => 790538222XX
[sms_id] => 188506
[date] => 2010-08-01 02:43:44
[country_id] => 1
[operator_id] => 4
[number] => 9105
[message] =>
[status] => ok
[cost] => 34.28832
)
)
[id] - идентификатор
[from] - Номер абонента
[sms_id] – Идентификатор SMS
[date] – Дата отправки SMS
[country_id] – Идентификатор страны
[operator_id] – Идентификатор оператора
[number] – Короткий номер
[message] – Сообщение от абонента
[status] – Статус SMS
[cost] – Доход партнера
если вы зададите параметр (вывод в латинице), то вывод будет такой (обратите внимание на даты):
Array
(
[0] => Array
(
[from] => 796165781XX
[sms_id] => 188313
[date] => 01-08-2010 01:12:01
[country_id] => 1
[operator_id] => 4
[number] => 9105
[message] =>
[status] => ok
[cost] => 17.41156
)
[1] => Array
(
[from] => 790538222XX
[sms_id] => 188506
[date] => 01-08-2010 02:43:44
[country_id] => 1
[operator_id] => 4
[number] => 9105
[message] =>
[status] => ok
[cost] => 34.28832
)
)
getTariffs
Получение информации по тарифам
@param string $login – логин партнера в системе smsbil
@param string $password – пароль партнера в системе smsbil
@param string $in – параметр, отвечающий за вывод в транслите (0 - кириллица / 1 - транслит)
@return array - массив тарифов для партнера array getTariffs()
Результат
Array
(
[1167] => Array
(
[name_country] => Сербия
[name_operator] => VIP Mobile
[short_number] => 1553
[partner_money_rur] => 8.74
[price_abonent_rur] => 32.53
[price_abonent] => 75
[currency] => RSD
[add_subpref] => RRR
[prefix_type] => 2
)
[1168] => Array
(
[name_country] => Сауд.Аравия
[name_operator] => Zain
[short_number] => 81720
[partner_money_rur] => 9.86
[price_abonent_rur] => 36.29
[price_abonent] => 5
[currency] => SAR
[add_subpref] => RRR
[prefix_type] => 2
)
)
[id] - идентификатор
[name_country] - Страна
[name_operator] – Оператор
[short_number] – Короткий номер
[partner_money_rur] – Прибыль партнера (RUR)
[price_abonent_rur] – Стоимость для абонента без НДС (RUR)
[price_abonent] – Стоимость для абонента в местной валюте
[currency] – Код местной валюты
[add_subpref] – Доп. Префикс страны
[prefix_type] – Тип префикса (type из списка префиксов)
если вы зададите параметр (вывод в латинице), то вывод будет такой:
Array
(
[1] => Array
(
[name_country] => Rossiya
[name_operator] => Mts
[short_number] => 1350
[partner_money_rur] => 154.93
[price_abonent_rur] => 258.3
[price_abonent] => 258.3
[currency] => rur
[add_subpref] =>
[prefix_type] => 1
)
[2] => Array
(
[name_country] => Rossiya
[name_operator] => Bilajn
[short_number] => 1350
[partner_money_rur] => 159.44
[price_abonent_rur] => 254.24
[price_abonent] => 254.24
[currency] => rur
[add_subpref] =>
[prefix_type] => 1
)
}
Как видите названия стран и операторов будут переведены в транслит.
getOperators
Получение информации по операторам
@param string $in – параметр, отвечающий за вывод в транслите (0 - кириллица / 1 - транслит)
@return array – массив операторов
array getOperators()
Результат
Array
(
[83] => Array
(
[name_country] => Эстония
[name_operator] => EMT
[code_country] => ee
[code_operator] => ee_emt
)
[282] => Array
(
[name_country] => ЮАР
[name_operator] => Cell-C
[code_country] => za
[code_operator] => za_cellc
)
)
[id] - идентификатор
[name_country] - Страна
[name_operator] – Оператор
[code_country] – Короткий идентификатор страны
[code_operator] – Короткий идентификатор оператора
если вы зададите параметр (вывод в латинице), то вывод будет такой:
Array
(
[39] => Array
(
[name_country] => Abxaziya
[name_operator] => Akvafon-GSM
[code_country] => ab
[code_operator] => aquafon
)
[89] => Array
(
[name_country] => Avstraliya
[name_operator] => VIRGIN
[code_country] => au
[code_operator] => au_virgin
)
}
Как видите названия стран и операторов будут переведены в транслит.
getCountries
Получение информации по странам
@param string $in – параметр, отвечающий за вывод в транслите (0 - кириллица / 1 - транслит)
@return array – массив стран
array getCountries()
Результат
Array
(
[66] => Array
(
[name] => Абхазия
[country_code] => ab
)
[38] => Array
(
[name] => Австралия
[country_code] => au
)
)
[id] - идентификатор
[0] - Страна
[1] – Короткий идентификатор страны
если вы зададите параметр (вывод в латинице), то вывод будет такой:
Array
(
[66] => Array
(
[name] => Abxaziya
[country_code] => ab
)
[38] => Array
(
[name] => Avstraliya
[country_code] => au
)
}
Названия стран будут переведены в транслит.