
смс:банк
Не уверены, какую услугу выбрать? Обратитесь к странице сравнения наших услуг!
Также обратите внимание на готовые скрипты.
Техническое описание
Реализация смс:банка напоминает по своей структуре платежный шлюз; пользователь инициирует транзакцию, заполняя форму, расположенную у вас на сайте, после чего производит собственно платеж, отправляя на указанный номер определенным образом составленное сообщение. Можно выделить как минимум три необходимых составных части такой реализации:
- Форма, инициирующая транзакцию (одна или несколько);
- Страницы на вашем сайте, куда пользователь попадет с нашего шлюза после благополучного завершения процесса оплаты или отмены оплаты (Success URL и Fail URL соответственно);
- Адрес обработчика на вашем сайте, куда с нашего сервера передаются параметры каждого смс-сообщения, полученного для вашего смс:банка (Result URL); в отличие от Fail URL и Success URL, пользователи на этот адрес не переходят, здесь должен находиться скрипт.
Детали реализации
Форма, инициирующая транзакцию
Пример HTML-разметки формы, дающей пользователю возможность инициировать транзакцию, приведен ниже.
<form action="http://bank.smscoin.com/bank/" method="POST">
<input name="s_purse" type="hidden" value="1" />
<input name="s_order_id" type="hidden" value="1234" />
<input name="s_amount" type="hidden" value="0.1" />
<input name="s_clear_amount" type="hidden" value="0" />
<input name="s_description" type="hidden" value="Демонстрационный платеж" />
<input name="s_sign" type="hidden" value="0123456789abcdef0123456789abcdef" />
<input type="submit" value="Pay" />
</form>
Ваша имплементация может существенно отличаться от приведенной здесь. Вы также можете добавить свои поля к данной форме, но серверу так или иначе должны быть переданы следующие параметры:
| Параметр | Тип | Описание |
|---|---|---|
s_purse |
int | Идентификатор вашего смс:банка в системе |
s_order_id |
int | Идентификатор операции (произвольное число, служит для соотнесения инициированной транзакции с ее результатом) |
s_amount |
float | Сумма транзакции, USD |
s_clear_amount |
int(1) |
Алгоритм подсчета стоимости услуги для пользователя. Если 0, то значение s_amount представляет собой конечную стоимость для пользователя. Иначе значение s_amount выражает ожидаемую вами прибыль от операции; стоимость для каждого пользователя будет варьироваться в зависимости от действующих тарифов и условий приема сообщений местными сотовыми операторами. |
s_description |
char(127) | Описание операции (произвольная строка длиной не более 127 символов, служит для удобства разграничения целевых платежей). Обрабатывается как UTF-8. |
s_sign |
char(32) |
MD5-хэш строки, состоящей из соединенных через двойное двоеточие ("::") параметров s_purse, s_order_id, s_amount, s_clear_amount, s_description и secret_code (в указанном порядке), где secret_code - секретный ключ Вашего смс:банка. |
s_amount сумма превышает максимальный доступный в той или иной стране тариф, такая страна автоматически исключается из списка стран, обслуживаемых вашим смс:банком.Настройка языка интерфейса
По умолчанию все наши сервисы используют русский язык; в том случае, если часть ваших пользователей не является русскоязычной, или вы по каким-то другим причинам решили сменить используемый язык сервиса, просто измените адрес запроса в приведенном выше коде
с
http://bank.smscoin.com/bank/
на
http://bank.smscoin.com/language/english/bank/
Вместо english можно указать любой из поддерживаемых системой языков.
Страницы выяснения статуса платежа
Страницы выяснения статуса платежа принимают от сервера следующие параметры:
| Параметр | Тип | Описание |
|---|---|---|
s_purse |
int | Идентификатор вашего смс:банка в системе |
s_order_id |
int | Идентификатор операции (произвольное число, служит для соотнесения инициированной транзакции с ее результатом) |
s_amount |
float | Точное значение транзакции, с учетом алгоритма работы (см. ниже), USD |
s_clear_amount |
int(1) |
Алгоритм подсчета стоимости услуги для пользователя. Если 0, то значение s_amount представляет собой конечную стоимость для пользователя, иначе - значение s_amount выражает ожидаемую Вами прибыль от операции; стоимость для каждого пользователя будет варьироваться в зависимости от действующих тарифов и условий приема сообщений местными сотовыми операторами. |
s_status |
int(1) | Статус платежа: 1 - прошел, 0 - не прошел. |
s_sign |
char(32) |
MD5-хэш строки, состоящей из соединенных через двойное двоеточие ("::") параметров secret_code, s_purse, s_order_id, s_amount, s_clear_amount и s_status (в указанном порядке), где secret_code - секретный ключ вашего смс:банка. |
Обработчик статуса платежа
Обработчик статуса платежа принимает от сервера следующие параметры:
| Параметр | Тип | Описание |
|---|---|---|
s_purse |
int | Идентификатор вашего смс:банка в системе |
s_order_id |
int | Идентификатор операции (произвольное число, служит для соотнесения инициированной транзакции с ее результатом) |
s_amount |
float | Точное значение транзакции, с учетом алгоритма работы (см. ниже), USD |
s_clear_amount |
int(1) |
Алгоритм подсчета стоимости услуги для пользователя. Если 0, то значение s_amount представляет собой конечную стоимость для пользователя, иначе - значение s_amount выражает ожидаемую Вами прибыль от операции; стоимость для каждого пользователя будет варьироваться в зависимости от действующих тарифов и условий приема сообщений местными сотовыми операторами. |
s_inv |
int | Порядковый номер операции в системе |
s_phone |
char(32) | Номер телефона, с которого было проведено подтверждение операции |
s_sign_v2 |
char(32) |
MD5-хэш строки, состоящей из соединенных через двойное двоеточие ("::") параметров secret_code, s_purse, s_order_id, s_amount, s_clear_amount, s_inv и s_phone (в указанном порядке), где secret_code - секретный ключ вашего смс:банка. |
Примеры реализации
Пример работы сервиса можно увидеть здесь.
Скачать исходный код на PHP, Perl, ASP.NET, Python.
Пример кода работающего с тарифной сеткой в форматах XML и JSON можно скачать здесь.
Обратите внимание: примеры носят иллюстративный характер, поэтому без доработки под конкретный случай применять их на практике не рекомендуется.
Часто задаваемые вопросы
Я перехожу по адресу, указанному в настройках сервиса, и вижу сообщение об ошибке.
По адресу, указанному в настройках сервиса, переходить не нужно; вместо этого адрес должен быть указан в параметре action формы, инициирующей транзакцию. Код, генерирующий форму, содержится в примерах кода (см. выше).
В списке на странице оплаты нет ни одной страны.
Проверьте, что указанная в форме стоимость соответствует допустимым тарифам в выбранных странах (стоимость смс не может быть больше, чем максимальный доступный тариф для каждой страны).
Как я могу добавить в форму инициализации транзакции дополнительные пользовательские поля?
Данная возможность интегрирована изначально. Поля, приведенные в форме инициации транзакции в примере, — это необходимый минимум. Вы можете добавить к форме и свои поля, которые будут переданы на ваш сервер в ответе. Если ваш номер заказа содержит буквенные символы или превышает int, передавайте его дополнительным полем. Суммарное ограничение размера всех пар "поле-значение" составляет 155 символов.
Добавляю банк, непонятно какие адреса нужно вводить в поля Success URL и Result URL.
Fail URL — это адрес на вашем сайте, куда пользователь попадет с нашего шлюза в случае отмены оплаты;
Success URL — это адрес на вашем сайте, куда пользователь попадет с нашего шлюза после благополучного завершения процесса оплаты;
Result URL — это адрес обработчика на вашем сайте, куда с нашего сервера передаются параметры каждого смс-сообщения, полученного для вашего смс:банка, в отличие от Fail URL и Success URL пользователи на этот адрес не переходят, здесь должен находиться скрипт.