PHP. Пример доступа к API через GET-запрос
/*
* Пример получения баланса пользователя.
* Доступ к остальным функциям API производится аналогичным способом.
*/
$url = 'https://cabinet.smsp.by/api/'; // задается URL сервиса
$timeout = 15; // задаем таймаут ответа с секундах
//задаем параметр запроса
$params = http_build_query(array(
'r' => 'api/user_balance', // функиця API. Задается в формате "api/имя_функции"
'user' => 'user@gmail.com', // логин пользователя в системе. Совпадает с логином в веб-интерфейс
'apikey' => 'qwerty123' // ключ API. Задается в Личном кабинете пользователя
));
$ch = curl_init(); //инициализируем CURL
//задаем параметры CURL
curl_setopt_array($ch, array(
CURLOPT_URL => $url.'?'.$params, // указываем URL к сервису и параметры
CURLOPT_FAILONERROR => 1, // прерывать запрос в случае ошибки
CURLOPT_RETURNTRANSFER => 1, // возвращаем результат запроса в переменную
CURLOPT_FOLLOWLOCATION => 1, // разрешаем редирект
CURLOPT_TIMEOUT => $timeout, // устаналиваем таймаут
));
//получаем ответ в переменную
$result = curl_exec($ch);
if($result) {
// ответ приходит в виде строки формата JSON. Декодируем его в объектное представление PHP
$result = json_decode($result);
// выводим статус
echo $result->status.'<br>';
// выводим сумму на балансе
echo $result->balance;
}
else {
// доступ к сервису не удался
echo 'Ошибка доступа к сервису !';
}
curl_close($ch);
PHP. Пример доступа к API через POST-запрос
/*
* Пример доступа к API сервиса. Приведен пример пакетной отправки сообщений.
*/
$url = 'https://cabinet.smsp.by/api/'; // задается URL сервиса
$timeout = 15; // задаем таймаут ответа с секундах
$func = 'msg_send_bulk'; // задаем имя вызываемой функции. В данном случае - msg_send_bulk
//формируем пакет сообщений
$package = array(
array(
'recipient' => '39624456789',
'message' => 'Первое тестовое сообщение. Срочное, с подписью',
'sender' => 'MyCompany'
),
array(
'recipient' => '39624746363',
'message' => 'Второе тестовое сообщение. Обычное, с custom_id',
'custom_id' => '111'
),
array(
'recipient' => '39536788463',
'message' => 'Третье тестовое сообщение, заключительное',
'custom_id' => '222'
)
);
$rawData = json_encode($package); // кодируем пакет в JSON
$ch = curl_init(); // инициализируем cURL
//задаем параметры CURL
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_FAILONERROR => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => $timeout,
CURLOPT_CONNECTTIMEOUT => 0,
CURLOPT_POST => 1, // большой пакет отправляем только методом POST
CURLOPT_POSTFIELDS => array( // массив сообщений
'r'=>'api/'.$func, // задаем вызываемую функцию
'user'=>'some@mail.com', // логин пользователя
'apikey'=>'ABC123', // API-key
'messages'=>$rawData
)
));
//получаем ответ в переменную
$result = curl_exec($ch);
if($result) {
// строка формата UTF-8 - удаляем из нее BOM-последовательность
$__BOM = pack('CCC', 239, 187, 191);
while(0 === strpos($result, $__BOM)) {
$result = substr($result, 3);
}
// ответ приходит в виде строки формата JSON. Декодируем его в объектное представление PHP
$result = json_decode($result);
// выводим статус
echo $result->status.'<br>';
// выводим дамп ответа
echo '<plaintext>'.iconv('utf-8','windows-1251',print_r($result, true));
}
else {
// доступ к сервису не удался
echo 'Ошибка доступа к сервису !';
}
curl_close($ch);