Подключаем смс оплату к CMS TestMaker

Author admin    Category CMS, PHP     Tags ,


Спонсор статьи – доска объявлений от qwef.ru Купи участок в подмосковье.

Здравствуйте в этой статье мы рассмотрим пример подключения шлюза smsdostup.ru к движку для создания онлайн тестирований CMS TestMaker .
Итак поэтапно распишем, что нужно сделать что бы подключить смс оплату:

1. Регистрируемся на сайте СМС Доступ.
2. После регистрации добавляем новый проект. Для тестирования движка, я зарегистрировал домен myiq.su . Процесс добавления проекта достаточно прост, не буду его описывать. После, система пришлет на ваш почтовый адрес хэш код созданного проекта. Этот код будет использоваться в обработчике.

3. Вставляем идентификатор в скрипт и сохраняем его, например sms.php

<?php

// Инклудим нужные функции

// Соединяемся с базой
include("bd.php");
// подключаем функции
include("functions.php");

# Вывод ошибок нежелателен
ini_set('display_errors', 0);
error_reporting(0);

# Задаем ключ (идентификатор) проекта, который указан в разделе 'Список проектов' в вашем аккуанте
$project_md5 = "Ваш идентификатор";

# Проверяем наличие данных
if (!isset($_POST['_md5_hash']) || !isset($_POST['_session_code']) || !isset($_POST['_sms_id']) || !isset($_POST['_sms_number']) || !isset($_POST['_sms_operator']) || !isset($_POST['_sms_phone']) || !isset($_POST['_sms_message']) || !isset($_POST['_sms_price']) || !isset($_POST['_sms_message'])) return_result("err void", true);
if (!$_POST['_md5_hash'] || !$_POST['_session_code'] || !$_POST['_sms_id'] || !$_POST['_sms_number'] || !$_POST['_sms_operator'] || !$_POST['_sms_phone'] || !$_POST['_sms_price']) return_result("err false", true);

# Проверяем целостность данных
$_md5hash = md5($project_md5.$_POST['_session_code'].$_POST['_sms_id'].$_POST['_sms_number'].$_POST['_sms_operator'].$_POST['_sms_phone'].stripslashes($_POST['_sms_message']).$_POST['_sms_price']);
if ($_md5hash != $_POST['_md5_hash']) return_result("err hash", true);

/* Напоминаем, что в случае наличия параметра _is_debug производится ТЕСТИРОВАНИЕ проекта,
если Вы ведете внутренние учеты, зачисляете средства и так далее - учтите, эти запросы нами не оплачиваются! */

# Возвращаем результат и завершаем работу
$key =GetKey();

$text = "Код активации: ".$key;

return_result($text);

# Делаем все необходимые учеты, проверки и определяем ответ абоненту
/*
	Входящие данные (даны исключительно для ознакомления и не являются действительными):
	_is_debug = 1 // Параметр тестирования проекта, по-умолчанию не передается
	_md5_hash = a123456789b123456789c123456789d1 // Ключ проверки целостности данных
	_session_code = a123456789b123456789c123456789d1 // Ключ текущей сессии
	_sms_id=1234567890 // Уникальный идентификатор смс сообщения
	_sms_number=1234 // Короткий номер на который прислано смс сообщение
	_sms_operator=Megafon // Название оператора, латиница, короткое
	_sms_operator_full=Megafon_moscow // Название оператора, латиница, полное
	_sms_phone=7912xxxx345 // Номер абонента приславшего смс сообщение
	_sms_country=ru // Страна абонента приславшего смс сообщение
	_sms_message=ttslovo // Полный текст сообщения
	_sms_plain=dHRzbG92bw%3D%3D // Текст сообщения rawurlencoded base64_encoded в кодировке utf-8
	_sms_price=12.34 // Ваша прибыль с данного смс сообщения в системе СМС Доступ в рублях
	_sms_exchrate=25.00 // Текущий курс отношения рубля к доллару в системе СМС Доступ
	_sms_trusted=3 // Опциональный параметр, с указанием доверия номеру абонента в виде цифры от 0 до 10
	_abonent_price=2.87 // Параметр указывающий стоимость смс для абонента в валюте указанной в параметре _abonent_price_currency
	_abonent_price_currency=RUR // Параметр указывает валюту в которой было произведено списание с абонента за отправленную смс
	_sms_parts=1 // Опциональный параметр, указывающий на количество частей из которых состояло смс сообщение
		В случае, если параметр _sms_parts присутствует и он больше единицы, то будет произведена тарификация соответственно количеству смс полученных от абонента.
		Сумма в параметре _sms_price будет иметь значение полученное по формуле: кол-во_смс * стоимость_смс.
		Параметр _abonent_price будет показывать стоимость 1 смс сообщения вне зависимости от количества полученных частей.
	_sms_operator_id=1 // Уникальный идентификатор оператора в системе СМС Доступ
	_spec_id=1 // Указание на источник запроса, используется в проверке уникальности, целое число, может быть 0
    _sms_date=2009-01-23 12:34:56 // Дата регистрации СМС платформой
*/

# Обработка входящего сообщения.
# Для получения текста сообщения Вам потребуется произвести следующие операции:
/*
$message_text = rawurldecode($_POST['_sms_plain']); // Убрать URL-кодирование
$message_text = base64_decode($message_text); // Перевести данные из MIME base64
$message_text = iconv("utf-8", "cp1251", $message_text); // Поменять кодировку с utf-8 на cp1251
$message_text = stripslashes($message_text); // Удалить возможные слэш символы
*/

# Для большего удобства так же передается параметр _sms_message в котором все эти действия уже произведены,
# но если же сообщения приходящие Вам достаточно большие, включают в себя спец символы и русский язык, то лучше работать с параметром _sms_plain

# Ваша проверка данных и учет в системе
# ! В случае если получен параметр _is_debug, то учет в системе делать не следует. Был произведен тест скрипта на работоспособность.
# ! вернуть ответ в случае наличия параметра _is_debug необходимо в следующем формате <SMSDOSTUP>OK</SMSDOSTUP>

# Выдаем ответ для передачи клиенту
# ! Учтите обязательность наличия открывающегося <SMSDOSTUP> и закрывающегося </SMSDOSTUP> тегов
# Содержимое внутри тегов и будет передано клиенту, в случае неверного формата ответа, смс не будет засчитана
# При ответе используйте кодировку Windows-1251

# Функция передачи данных

function return_result($message, $is_error = false) {
	if ($is_error) exit("<SMSDERR>".stripslashes($message)."</SMSDERR>");
	exit("<SMSDOSTUP>".stripslashes($message)."</SMSDOSTUP>");
}
?>

Данный скрипт заливам в корень нашего сайта.

4. Редактируем файл functions.php , в конце добавляем новую функцию, которая будет возвращать код для активации. Этот код будет отправлен пользователю на мобильный телефон.

/* Получаем ключ при успешной отправке смс 02.01.2012*/

Function GetKey(){

  $result = mysql_query ("SELECT * FROM key_list WHERE flag='0'");

  $myrow = mysql_fetch_array ($result);

  return $myrow['single_key'];

}

5. Проверяем, как работает созданный обработчик. В личном кабинете на SmsDostup переходим к списку проектов и запускаем режим тестирования.

Пример проверки. Вот тот самый код. Если тест прошел успешно, можно продолжать настройку скрипта, если выдает ошибку, проверьте сгенерированы ли у вас коды активации с административной панели CMS TestMaker.

6. Переходим в административную панель TestMaker и редактируем сообщение, которое выдается пользователю, когда тест окончен. Пример:

Для получения результатов теста необходимо отправить SMS. Отправьте смс с кодом ttiqtest на короткий номер 4443. Полученный код введите в форму.

По желанию можно добавить информатор стоимости сообщения. На сайте smsdostup в панели есть Скрипт показа тарифов на сайте. К скрипту прилагается подробная инструкция, по установке.

Все. Скрипт смс обработчика подключен! При желании информатор стоимости смс сообщения можно запихнуть в слайдер.

Посты:


2leep.com

Прокомментировать