Почему SMS-платежи?
Сейчас никого не удивишь возможностью оплаты услуг путём отправки SMS-сообщения на определённый «короткий номер». Даже самый далёкий от интернетов человек мог услышать по телевизору: «Отправьте SMS на номер XXXX, чтобы проголосовать за YYYY», а внизу экрана увидеть надпись: «* стоимость отправки 30руб». Ниже я рассажу, как это работает.
Плюсы
Чем же этот способ оплаты так хорош? Вот основные, на мой взгляд, аргументы:
- Удобство оплаты
Сегодня мобильный телефон есть почти у каждого жителя страны, а значит и возможность такого способа оплаты есть практически у каждого. Для использования требуется минимум телодвижений: взять телефон и набрать небольшой текст, а если оплата происходит из мобильного приложения (например, игры), то обычно пользователю остаётся только пару раз нажать кнопочку «ОК» — приложение само сформирует и отошлёт SMS-сообщение.
Несмотря на то, что бОльшая той суммы, что списывается со счёта абонента, уходит в карман оператору, размер доступной аудитории с лихвой покрывает эту разницу: даже если предположить, что продавец получает одну треть от стоимости SMS, ему достаточно иметь всего лишь в три раза большую аудиторию, чем требуется, чтобы зарабатывать те же суммы, используя прямые (без комиссии) способы оплаты. - Удобство обработки платежей
Обработка SMS-платежей может быть полностью автоматизирована. А если предоставление продаваемой услуги также может быть автоматизировано, то это означает возможность полной автоматизации всего процесса.
Минусы
- Небольшой процент
К сожалению, в лучшем случае 40% от стоимости SMS уходит оператору, а поскольку между продавцом и оператором может быть еще несколько посредников (об этом ниже), то, в конечном счёте, продавец может получать, скажем, всего 10-20% стоимости. - Фиксированная стоимость
Стоимость отправки SMS-сообщения на короткий номер определяется заранее на уровне оператора, поэтому единственная возможность дифференцировать размер оплаты – использовать несколько коротких номеров с разными стоимостями.
Жизненный цикл SMS-сообщения
Виды тарификации
Существует два вида тарификации:
- МО-тарификация («Mobile Originated»)
Стоимость списывается со счёта абонента в момент отправки SMS-сообщения на определенный короткий номер. - МТ-тарификация («Mobile Terminated»)
Стоимость списывается со счёта абонента в момент получения SMS-сообщения.
Точнее, сначала пользователь отсылает SMS на короткий номер (деньги за это не взимаются), затем проверяется, достаточно ли у абонента денег, чтобы оплатить услугу, и готов ли продавец данную услугу предоставить. Если все хорошо, то абоненту отсылается сообщение, за которое и взимается плата.
Какой именно вид тарификации используется в конкретном случае, зависит от страны, оператора, короткого номера.
Агенты платёжной сети
- Операторы
Ясное дело, это те, кто предоставляет абонентам услуги связи. Для предоставления услуг каждый оператор выделяет у себя ряд коротких номеров, которые он сдаёт в аренду. Короткий номер имеет отношение только к тому оператору, к которому подключен данный абонент, т.е. SMS-сообщение на короткий номер обрабатывается только данным оператором связи. Оператор «отщипывает» себе львиную долю от стоимости SMS. - Агрегаторы
Операторам обычно не интересно иметь дело с индивидуальными продавцами, поскольку им нужен постоянный и большой SMS-трафик, поэтому операторы договариваются с агрегаторами, которые являются посредниками между ними и продавцами.
Агрегатору желательно чтобы SMS-сообщения на короткий номер XXXX доходили до него независимо от того, какой у абонента оператор (иначе придется заставлять абонента выяснять, какой у него оператор и самостоятельно выбирать соответствующий короткий номер), поэтому он отдельно договаривается с каждым оператором и берет у них в аренду номер XXXX. Естественно, если какой-то из популярных операторов не хочет сдавать в аренду нужный номер, то агрегатору выгоднее поискать другой номер, на который согласятся большинство операторов.
Оператор и агрегатор договариваются о стоимости коротких номеров между собой и о доле каждого в стоимости SMS. Естественно, агрегатору надо, чтобы стоимость одного и того же короткого номера у разных операторов, была хотябы примерно одинакова, однако небольшая разница всегда будет. У одного оператора один и тот же короткий номер может стоить, например, 150 рублей, а у другого – 165. - Субагрегаторы
Агрегаторам, на самом деле, тоже не всегда выгодно напрямую с продавцами, поэтому они могут договариваться с субагрегаторами.
Субагрегатор обычно с одной стороны договаривается с одним или несколькими агрегаторами (например, потому что у разных агрегаторов может быть разное покрытие по странам и разные тарифные сетки), а с другой – с продавцами. Например, субагрегатором может быть какая-либо партнёрская система, которая осуществляет продажи не самостоятельно, а через своих партнёров. Субагрегатор и агрегатор договариваются между собой, как они делят стоимость SMS, оставшуюся после того, как свою долю забрал оператор.
Конечно, ничто не мешает существованию суб-субагрегаторов и т.д., но поскольку на каждом этапе от остаточной стоимости SMS «отщипывается» значительный кусок, этому процессу имеется разумное ограничение. - Продавцы
Собственно — те, кто непосредственно предоставляет услуги, конечное звено цепи. Продавцы договариваются с (суб-)агрегатором на свою долю от SMS.
Способы определения стоимости и адресата SMS-платежа
Обычно стоимость и агрегатор-адресат SMS-сообщения определяется только коротким номером, на который оно было отправлено, но на самом деле так происходит не всегда. В некоторых случаях она выясняется по содержимому текста SMS. Агрегатор может договориться с оператором, что стоимость SMS на данный номер будет определяться по так называемому «префиксу» — заранее оговорённому сочетанию символов в начале текста SMS. Например, может быть решено, что данному агрегатору уходят все SMS на номер XXXX, начинающиеся с текста «AGREG1» или «AGREG2», причём первые будут стоить $1 а вторые — $2.
Поскольку у агрегатора ограниченное число номеров, он обычно договаривается с субагрегатором, что тому уходят SMS, с определенных коротких номеров и начинающиеся с привязанного к нему префикса, например, «SUB». В случае, когда стоимость устанавливается по префиксу, он может быть двусложный, например «AGREG1 SUB» (далее идет текст существенный для субагрегатора).
В свою очередь субагрегатор может так же вычислять продавца по префиксу следующего уровня («AGREG1 SUB SELLER1»), либо как-то еще зашифровывать идентификатор продавца в теле SMS.
Полная идентификация адресата и стоимости SMS определяется по параметрам:
Страна — Оператор — Короткий номер — Текст SMS.
Технические подробности
Интерфейс субпартнера
Как правило, все агенты сети, начиная с оператора и заканчивая субагрегатором, предоставляют своим субпартнёрам инструмент для получения статистики по SMS-платежам. Обычно он выполнен в виде сайта, на котором субпартнёр может зарегистрироваться, завести свои проекты, посмотреть текущую статистику SMS и доходов, получить различные отчёты.
Транспортная система
Кроме пользовательского интерфейса, операторы и агрегаторы (а иногда и субагрегаторы) предоставляют программный интерфейс для двустороннего взаимодействия. Этот интерфейс реализуется в виде веб-скриптов, которые делают http(s)-запросы друг к другу при необходимости передачи какой-либо информации.
Рассмотрим на примере взаимодействия агрегатора и субагрегатора.
Каждый агрегатор использует свой протокол и предоставляет свой набор возможностей, стандартного протокола нет, но есть набор стандартных данных, которые так или иначе предоставляются агрегатором субпартнёру при получении SMS-сообщения:
- Текст SMS-сообщения
В некоторых случаях текст может доставляться без префикса, или префикс может доставляться в отдельном поле - Короткий номер
Номер, на который было отправлено сообщение. Требуется для определения стоимости и типа сервиса. - Страна
Услуга может предоставляться в разных странах, а значит, по разным ценам. Иногда страну приходится определять по идентификатору оператора. - Оператор
Некий идентификатор оператора. У разных операторов разные цены.
Другие возможные данные:
- Идентификатор сессии
Предоставляется большинством агрегаторов. Используется для определения того, какой из запросов пользователя мы в данный момент обрабатываем. Например, для МТ-тарификации первый запрос может содержать описание SMS и ID сессии, а второй – отчёт о доставке – только ID сессии и состояние платежа (доставлен/отменен/ожидается).
ID сессии также может быть использован при ответе от субагрегатора агрегатору. Дело в том, что чаще агрегаторы получают ответ сразу в результате http-запроса (т.е. сервер агрегатора совершает http-запрос к серверу субагрегатора, в ответ на него субагрегатор отсылает результат обработки запросов), но иногда агрегатор требует ответа не в том же запросе, а в обратном параллельном (т.е. получив запрос от агрегатора субагрегатор сразу отвечает «ОК, получил», затем обрабатывает его и уже сам делает новый http-запрос к серверу агрегатора, в котором передаёт уже настоящий результат плюс ID сессии, чтобы было понятно, о каком SMS-сообщении идёт речь). - Номер телефона абонента
Иногда предоставляется полностью, иногда частично, иногда вообще не предоставляется - Идентификатор абонента
Предоставляется некоторыми системами в виде внутреннего (для агрегатора) идентификатора абонента. - Номер попытки
Иногда агрегатор не может с первого раза достучаться до сервера субагрегатора, тогда он может повторить тоже самый запрос через некоторое время, но указав новый номер попытки связи (0 — для первой попытки, 1 – для второй и т.д.). Если за определенный период агрегатор не достучался до субагрегатора, то он может отменить обработку платежа. - Время осуществления запроса
Может потребоваться для более точной идентификации сообщения, если время на сервере агрегатора и субагрегатора не синхронизировано.
Кроме того, могут передаваться: внутренний (для агрегатора) идентификатор короткого номера, идентификатор тарифа, полная стоимость SMS, доход субагрегатора, валюта, в которой совершен платёж, и прочее.
В ответ субагрегатор обычно отправляет текст SMS, который надо отправить абоненту и/или описание ошибки.
Некоторые агрегаторы позволяют субагрегатору отправлять SMS-сообщения, когда ему надо (не в ответ на SMS абонента, а в качестве рассылки), на указанный номер, но плата за это взимается уже с самого субагрегатора. Так же некоторые агрегаторы позволяют разбивать ответ на несколько сообщений.
Обеспечение безопасности связи
Для безопасности связи используются следующие способы:
- Использование зашифрованных протоколов
- Шифрование текста запроса с использованием заранее заданного пароля
- Передача заранее заданного пароля в тексте запроса без использования шифрования
- Передача MD5-хэша от заранее заданного списка полей, включающих пароль
- Ограничение списка IP, с которых могут приниматься запросы
Вместо заключения.
Конечно, в своей статье я не указал все возможные нюансы, а некоторые вещи рассказал крайне размыто, но я постарался дать теоретическую базу, которой совершенно достаточно, чтобы увидеть систему с высоты птичьего полёта, и использовать как руководство к действию.
Спасибо за внимание!
Автор: godlin