Интерфейс подключения провайдеров услуг

advertisement
ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ ПРОВАЙДЕРОВ
УСЛУГ
РАСШИРЕННОЕ ОПИСАНИЕ ИНТЕРФЕЙСА
Интерфейс подключения провайдеров услуг
СОДЕРЖАНИЕ
1
ТРЕБОВАНИЯ К ИНТЕРФЕЙСУ ПРОВАЙДЕРА ....................................................................... 3
2
ОСНОВНЫЕ ПРИНЦИПЫ РАБОТЫ ИНТЕРФЕЙСА ................................................................... 4
3
ПРИМЕР ЗАПРОСА НА ПРОВЕРКУ СОСТОЯНИЯ СЧЕТА АБОНЕНТА И РЕГИСТРАЦИЮ ПЛАТЕЖА ........ 6
4
ПРИМЕР ЗАПРОСА НА ПОПОЛНЕНИЕ ЛИЦЕВОГО СЧЕТА ........................................................ 9
5
ПРИМЕР ЗАПРОСА НА ОТМЕНУ ПЛАТЕЖА ........................................................................ 11
6
ЕЖЕДНЕВНАЯ СВЕРКА ................................................................................................ 12
7
ЕЖЕДНЕВНАЯ АВТОМАТИЧЕСКАЯ СВЕРКА ....................................................................... 13
ПРИЛОЖЕНИЕ А:
ЗАЯВКА НА ПОДКЛЮЧЕНИЕ ................................................................. 14
ПРИЛОЖЕНИЕ Б:
СПИСОК КОДОВ ЗАВЕРШЕНИЯ .............................................................. 15
2
Интерфейс подключения провайдеров услуг
1 ТРЕБОВАНИЯ К ИНТЕРФЕЙСУ ПРОВАЙДЕРА
1. Интерфейс должен принимать запросы по протоколу HTTP или HTTPS с IP-адресов подсети:
213.186.115.164/30
213.186.115.168/29
213.186.115.176/28
2. Интерфейс должен обрабатывать параметры, передаваемые системой методом GET
3. Интерфейс должен формировать ответ системе в формате XML в кодировке UTF-8 (если ответ содержит
символы национальных алфавитов)
4. Обмен информацией ведется в режиме запрос-ответ, при этом скорость ответа не должна превышать 60
секунд, в противном случае система разрывает соединение по таймауту.
5. Если предполагаемое количество платежей за услуги подключаемого провайдера, ожидается
интенсивным (до 10 платежей в минуту и более), необходимо, чтобы интерфейс поддерживал
многопотоковую коммуникацию до 10-15 одновременных соединений.
3
Интерфейс подключения провайдеров услуг
2 ОСНОВНЫЕ ПРИНЦИПЫ РАБОТЫ ИНТЕРФЕЙСА
1. Каждый платеж в системе QIWI имеет уникальный идентификатор, который передается провайдеру в
переменной txn_id – целое число длиной до 20 знаков. По этому идентификатору производится
дальнейшая сверка взаиморасчетов и решение спорных вопросов.
2. Сумма платежа принимается от абонента и передается провайдеру в рублях в переменной sum –
дробное число с точностью до сотых, в качестве разделителя используется «.» (точка). Если сумма
представляет целое число, то оно все равно дополняется точкой и нулями, например – «152.00»
3. В запросе на добавление платежа, система передает дату платежа (под датой платежа в системе
подразумевается дата получения запроса от клиента) в переменной txn_date – дата в формате
ГГГГММДДЧЧММСС. Эту дату необходимо использовать для проведения бухгалтерских взаиморасчетов.
Так как в системе QIWI учет платежей ведется по дате получения запроса от клиента, то и расчеты с
провайдером необходимо вести по этой дате. Например, ситуация: клиент прислал в систему запрос
31.12.2005 в 23:59:59, учитывая задержку на обработку данных и пересылку информации по каналам
связи, система смогла отправить запрос провайдеру 1.1.2006 00:00:05, соответственно платеж будет
учтен в системе провайдера в другом отчетном периоде, что вызовет некоторые проблемы при
проведении сверок. Чтобы избежать такой ситуации система передает провайдеру дату, в которой
нужно учитывать платеж.
4. Провайдер идентифицирует своего абонента по уникальному идентификатору (номер лицевого счета,
телефона, логин и т.д.). Перед отправкой провайдеру, идентификатор проходит проверку корректности
в соответствии с регулярным выражением, которое должен предоставить провайдер. Идентификатор
абонента передается в переменной account – строка, содержащая буквы, цифры и спецсимволы,
длиной до 200 символов.
5. Передача информации о платеже провайдеру производится системой в 2 этапа – проверка состояния
абонента и непосредственно проведение платежа. Тип запроса передается системой в переменной
command – строка, принимающая значения «check» и «pay». При проверке статуса (запрос «check»),
провайдер должен проверить наличие в своей базе абонента с указанным идентификатором и
выполнить внутренние проверки идентификатора, суммы платежа в соответствии с принятой логикой
пополнения лицевых счетов через платежные системы. При проведении платежа (запрос «pay»),
провайдер должен произвести пополнение баланса абонента.
6. В случае если любой из запросов провайдеру завершается ошибкой, то провайдер возвращает код
ошибки в соответствии с таблицей приведенной, ниже (Приложение Б). Все ошибки имеют признак
фатальности. Для системы фатальная ошибка означает, что повторная отправка запроса с теми же
параметрами, приведет к 100% повторению той же ошибки – следовательно, система прекращает
обработку клиентского запроса и завершает его с ошибкой. Нефатальная ошибка означает для системы,
что повторение запроса с теми же параметрами через некоторый промежуток времени, возможно,
приведет к успеху. Система будет повторять запросы, завершающиеся нефатальной ошибкой,
постоянно увеличивая интервал, пока операция не завершится успехом или фатальной ошибкой, либо
пока не истечет срок жизни запроса – 24 часа. Отсутствие связи с сервером провайдера является
нефатальной ошибкой. Отсутствие в ответе элемента <result> (некорректный XML, страница Service
temporarily unavailable и т.д.) – является фатальной ошибкой. Запросы получают отказ с ошибкой 300 –
Другая ошибка провайдера.
7. В базе провайдера не должно содержаться двух успешно проведенных платежей с одним и тем же
номером txn_id. Если система повторно присылает запрос с уже существующим в базе провайдера
txn_id, то провайдер должен вернуть результат обработки предыдущего запроса.
8. Провайдер возвращает ответ на запросы системе в формате XML со следующей структурой:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id></osmp_txn_id>
<prv_txn></prv_txn>
<sum></sum>
<result></result>
<comment></comment>
</response>
4
Интерфейс подключения провайдеров услуг

<response>

<osmp_txn_id>
txn_id.

<prv_txn>
– уникальный номер операции пополнения баланса абонента (в базе
провайдера), целое число длиной до 20 знаков. Этот элемент должен возвращаться провайдером после
запроса на пополнение баланса (запроса «pay»). При ответе на запрос на проверку состояния абонента
(запрос «check») его возвращать не нужно – не обрабатывается.

<prv_txn_date>
– дата операции пополнения баланса абонента (в базе провайдера) в формате
ГГГГ-ММ-ДД ЧЧ:ММ:СС. Этот элемент должен возвращаться провайдером после запроса на пополнение
баланса (запроса «pay»). При ответе на запрос на проверку состояния абонента (запрос «check») его
возвращать не нужно – не обрабатывается.

<sum>
– сумма платежа, передаваемая провайдеру, дробное число с точностью до
сотых, в качестве разделителя используется «.» (точка). Если сумма представляет целое число, то оно
все равно дополняется точкой и нулями, например – «152.00»
– тело ответа
– номер транзакции в системе, который передается провайдеру в переменной

<result>
– код результата завершения запроса.

<comment>
– необязательный элемент – комментарий завершения операции.
5
Интерфейс подключения провайдеров услуг
3 ПРИМЕР ЗАПРОСА НА ПРОВЕРКУ СОСТОЯНИЯ СЧЕТА
АБОНЕНТА И РЕГИСТРАЦИЮ ПЛАТЕЖА
Платежное приложение провайдера payment_app.cgi, располагается по адресу service.someprv.ru,
сервер поддерживает HTTPS соединения на порт 8443. Для проверки состояния абонента, система
генерирует запрос следующего вида:
https://service.someprv.ru:8443/payment_app.cgi?command=check&txn_id=1234567&account=4957835959&sum=10.45
Запрос содержит переменные:
command=check
– запрос на проверку состояния абонента
txn_id=1234567
– внутренний номер платежа в системе QIWI
account=4957835959
– идентификатор абонента в информационной системе провайдера
sum=10.45
– сумма к зачислению на лицевой счет абонента
Возможна передача следующих дополнительных полей в строке запроса:
pay_type=1
– идентификатор услуги, предоставляемой провайдером,
целое число длиной до 5 знаков. (Используется, если
провайдер предоставляет более 1 услуги.)
prv_id=999
– внутренний идентификатор провайдера в системе QIWI, целое
число, длиной до 4 знаков. (Используется для консолидаторов.)
trm_id=8792525
– id терминала, целое число длиной до 20 знаков. (Используется для
филиалов QIWI.)
trm_txn_id=12589748858
– номер транзакции на терминале, целое число длиной до 20 знаков.
(Используется для филиалов QIWI.)
agt_id=4151231
- id агента, целое число длиной до 20 знаков.
(Используется для филиалов QIWI.)
sum_from=12.00
– сумма платежа с доп.комиссией, дробное число с точностью до
сотых, в качестве разделителя используется «.» (точка).
(Используется для филиалов QIWI.)
receipt_date=20090815120133
- дата чека в формате YYYYMMDDHHSS.
receipt_num=4151231225
- номер чека, целое число длиной до 20 знаков.
data1,data2,…,dataN
– дополнительные поля, передаваемые провайдером - строки,
содержащие буквы, цифры и спецсимволы.
В строке запроса могут быть переданы одно, несколько, все дополнительные поля.
Строка запроса может выглядеть так:
https://service.someprv.ru:8443/payment_app.cgi?command=check&txn_id=1234567&account=4957835959&sum=10.4
5&pay_type=1&prv_id=999&trm_id=4151200&trm_txn_id=12300123&agt_id=4151231&sum_from=11.00&data1=osmp
При он-лайн проверке возможна генерация запроса с нулевой суммой.
Строка запроса в данном случае имеет вид(в случае отсутствия доп.полей):
https://service.someprv.ru:8443/payment_app.cgi?command=check&txn_id=1234567&account=4957835959&sum=0.00
6
Интерфейс подключения провайдеров услуг
Ответ провайдера должен выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<result>0</result>
<comment></comment>
</response>
Возвращение result=0 на запрос «check» свидетельствует о том, что лицевой счет абонента с
соответствующим ему номером txn_id может быть пополнен на сумму, указанную в запросе. После
успешной проверки состояния счета абонента система переходит к формированию и отправке запроса
на пополнение баланса (запрос «pay»).
В необязательном поле comment содержится служебный комментарий.
При необходимости, дополнительную информацию о платеже можно передать в теге fields.
Ответ провайдера тогда должен выглядеть так:
<?xml version=”1.0” encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<result>0</result>
<fields>
<field1 name=”name1”> value1</field1>
<field2 name=”name2”> value2</field2>
…
<fieldN name=”nameN”> valueN</fieldN>
</fields>
<comment></comment>
</response>
В необязательных полях field1, field2… fieldN содержится информация, которую необходимо передать
системе. Эта информация может быть показана пользователю при совершении платежа.
При необходимости, информацию о шлюзе, в котором будет зафиксирован платеж, можно передать в
теге pay_id.
Ответ провайдера тогда должен выглядеть так:
<?xml version=”1.0” encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<result>0</result>
<comment></comment>
<pay_id>111</pay_id>
</response>
7
Интерфейс подключения провайдеров услуг
Какие шлюзы возможны для выбора уточняется при тестировании системы.
В ответе провайдера могут содержаться все дополнительные поля или только часть из них.
8
Интерфейс подключения провайдеров услуг
4 ПРИМЕР ЗАПРОСА НА ПОПОЛНЕНИЕ ЛИЦЕВОГО СЧЕТА
Для подтверждения платежа, система генерирует запрос следующего вида:
https://service.someprv.ru:8443/payment_app.cgi?command=pay&txn_id=1234567&txn_date=20050815120133&acco
unt=4957835959&sum=10.45
Запрос содержит переменные:
command=pay
– запрос на пополнение баланса абонента
txn_id=1234567
– внутренний номер платежа в системе QIWI
txn_date=20050815120133
– дата учета платежа в системе QIWI
account=4957835959
– идентификатор абонента в информационной системе провайдера
sum=10.45
– сумма к зачислению на лицевой счет абонента
Возможна передача следующих дополнительных полей в строке запроса:
pay_type=1
– идентификатор услуги, предоставляемой провайдером,
целое число длиной до 5 знаков. (Используется, если
провайдер предоставляет более 1 услуги.)
prv_id=999
– внутренний идентификатор провайдера в системе QIWI, целое
число, длиной до 4 знаков. (Используется для консолидаторов.)
trm_id=8792525
– id терминала, целое число длиной до 20 знаков. (Используется для
филиалов QIWI.)
trm_txn_id=12589748858
– номер транзакции на терминале, целое число длиной до 20 знаков.
(Используется для филиалов ОСПМ.)
agt_id=4151231
- id агента, целое число длиной до 20 знаков.
(Используется для филиалов QIWI.)
receipt_date=20090815120133
- дата чека в формате YYYYMMDDHHSS.
receipt_num=4151231225
- номер чека, целое число длиной до 20 знаков.
sum_from=12.00
– сумма платежа с доп.комиссией, дробное число с точностью до
сотых, в качестве разделителя используется «.» (точка).
(Используется для филиалов QIWI.)
data1,data2,…,dataN
– дополнительные поля, передаваемые провайдером - строки,
содержащие буквы, цифры и спецсимволы.
В строке запроса могут быть переданы одно, несколько, все дополнительные поля.
Строка запроса может выглядеть так:
https://service.someprv.ru:8443/payment_app.cgi?command=pay&txn_id=1234567&account=4957835959&sum=10.45
&txn_date=20050815120133&pay_type=1&prv_id=999&trm_id=4151200&trm_txn_id=12300123&agt_id=4151231&su
m_from=11.00& data1=osmp
9
Интерфейс подключения провайдеров услуг
Пример ответа:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234567</osmp_txn_id>
<prv_txn>2016</prv_txn>
<prv_txn_date>2005-08-15 12:01:40</ prv_txn_date >
<sum>10.45</sum>
<result>0</result>
<comment>OK</comment>
</response>
Возвращая result=0 на запрос «pay», провайдер сообщает об успешном завершении операции
пополнения баланса. Система полностью завершает обработку данной транзакции.
В необязательном поле comment содержится служебный комментарий.
10
Интерфейс подключения провайдеров услуг
5 ПРИМЕР ЗАПРОСА НА ОТМЕНУ ПЛАТЕЖА
Для отмены платежа, система генерирует запрос следующего вида:
https://service.someprv.ru:8443/payment_app.cgi?command=cancel&txn_id=1234569&
cancel_txn_id=1234567&txn_date=20050815010101&account=4957835959&sum=10.45
Запрос содержит переменные:
command=cancel
– запрос на отмену платежа
txn_id=1234569
– внутренний номер отменяющего платежа в системе QIWI
cancel_txn_id=1234567
– внутренний номер отменяемого платежа в системе QIWI
txn_date=20050815010101
– дата отправки отменяющего платежа в системе QIWI
cancel_txn_date=20050815120133
– дата отправки отменяемого платежа в системе QIWI
account=4957835959
– идентификатор абонента в информационной системе
провайдера
sum=10.45
– сумма, указанная в отменяемой транзакции
Пример ответа:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<osmp_txn_id>1234569</osmp_txn_id>
<cancel_txn_id>1234567</cancel_txn_id>
<prv_txn>2017</prv_txn>
<sum>10.45</sum>
<result>0</result>
<comment>OK</comment>
</response>
Возврат result=0 свидетельствует о подтверждении и успешном завершении отмены транзакции.
Возврат result=90 свидетельствует о том, что отмена еще не подтверждена. Система отправит
повторный запрос через некоторое время.
Возврат result=7 об отказе провайдера в отмене платежа.
Если провайдер не подтвердит отмену платежа в течение 7 суток, платеж автоматически будет
считаться отмененным.
Поле prv_txn ответа содержит номер отменяющей транзакции на стороне провайдера.
В необязательном поле comment содержится служебный комментарий.
11
Интерфейс подключения провайдеров услуг
6 ЕЖЕДНЕВНАЯ СВЕРКА
До 9:00 по Киевскому времени система генерирует реестр принятых платежей за предыдущий день. К
этому реестру можно получить доступ по протоколу FTPS или HTTPS.
Реестр имеет следующую структуру:
<email адрес, на который будет послана сверка>
<txn_id> <дата> <время> <идентификатор абонента> <сумма>
…………………………………………………………………………………………………
<txn_id> <дата> <время> <идентификатор абонента> <сумма>
Total: <кол-во платежей> <общая сумма>
Поля разделены знаком табуляции, дробная часть суммы отделена точкой, дата/время – prv_txn_date,
перевод строки может состоять как из символов x0D x0A, так и просто из x0D.
Например:
test@osmp.ru
95752972
31.02.2005 12:13:14
0957835959
123.45
95752982
31.02.2005 13:22:34
8002000059
0.01
95752992
31.02.2005 14:55:11
9167005151
123.01
95753002
31.02.2005 14:55:12
0732565414
1000.00
Total: 4 1246.47
Система включает в реестр только успешно проведенные платежи.
Подтвержденными считаются платежи, которые пришли как при online обмене сообщениями, так и в
реестре.
В случаях, если
в реестре отсутствуют платежи, которые проведены в базе провайдера,
в реестре содержатся платежи, которых нет в базе провайдера,
реестр не получен
необходимо до 12.00 связаться с контактным лицом в QIWI, указанным в договоре, для выяснения
ситуации и принятия решения.
12
Интерфейс подключения провайдеров услуг
7 ЕЖЕДНЕВНАЯ АВТОМАТИЧЕСКАЯ СВЕРКА
В системе QIWI предусмотрен механизм автосверки платежей провайдеров. Его можно использовать
совместно с ежедневной сверкой или вместо неё.
Система ежедневно запрашивает данные у провайдера, используя предоставляемые провайдером
шлюз, логин и пароль. При использовании HTTPS-соединения, провайдер должен предоставить
клиентский сертификат.
Пример запроса:
https://someurl/test/osmpReport.html?date_from=20080812000000&date_to=20080812235959
Параметры запроса:
date_from - начальное время периода сверки в формате yyyyMMddHHmmss
date_to - конечное время периода сверки в формате yyyyMMddHHmmss
Максимальный временной интервал сверки в одном запросе составляет 24 часа.
Сверка проводится по московскому времени.
В ответ на запрос провайдер возвращает список проведенных платежей.
Список проведенных платежей представляет собой набор строк, каждая из которых содержит
информацию по одному платежу.
Формат строки:
<txn_id>;<идентификатор абонента>;<дата/время>;<сумма>
Поля разделены знаком «;», строка заканчивается символами x0D x0A или x0D, кодировка Windows1251.
Пример списка платежей:
2269705230001;9505378213;19.08.2008 00:00:15;470;
2269725230001;9505374513;19.08.2008 00:00:15;370;
Если в результате автоматической сверки обнаружены расхождения, информация о них направляется
провайдеру и лицу, ответственному за ежедневную сверку платежей в QIWI.
Если провайдер предоставляет несколько услуг, строка запроса содержит уникальный номер
провайдера в системе QIWI, по которому проводиться сверка.
Пример запроса:
https://192.168.0.17/test/osmpReport.html?date_from=20080812000000&date_to=20080812235959&prv_id=999
Параметры запроса:
date_from - начальное время периода сверки в формате yyyyMMddHHmmss
date_to - конечное время периода сверки в формате yyyyMMddHHmmss
prv_id – уникальный номер провайдера в системе QIWI
Формат строки:
<txn_id>;<идентификатор абонента>;<дата/время>;<сумма>;<prv_id>
13
Интерфейс подключения провайдеров услуг
ПРИЛОЖЕНИЕ А: ЗАЯВКА НА ПОДКЛЮЧЕНИЕ
Юридическое наименование организации провайдера (как в договоре)
Короткое название провайдера (для отображении в клиентском интерфейсе)
Приглашение для ввода пользователя (для отображении в клиентском интерфейсе)
(например «Введите номер»)
Вид оказываемой услуги/услуг
URL платежного приложения
(например https://service.someprv.ru:8443/payment_app.cgi)
Логин и пароль, если требуется авторизация
Логин: -
Пароль: E-mail адрес для ежедневных реестров
Размер вознаграждения в %, предоставляемый QIWI за каждый платеж
Регулярное выражение для проверки правильности идентификатора
Серверный сертификат провайдера в формате X509
Клиентский сертификат для QIWI в формате PKCS12
(если требуется авторизация по клиентскому сертификату)
14
Интерфейс подключения провайдеров услуг
ПРИЛОЖЕНИЕ Б:
СПИСОК КОДОВ ЗАВЕРШЕНИЯ
При обработке запросов от системы, провайдер должен сопоставить все возникающие в его
приложении ошибки с приведенным ниже списком и возвращать соответствующие коды в элементе
<result>. Знак «+» в столбце фатальность – показывает то, как система будет интерпретировать
данную ошибку.
Код
Комментарий
Фатальность
0
ОК
1
Временная ошибка. Повторите запрос позже
4
Неверный формат идентификатора абонента
+
5
Идентификатор абонента не найден (Ошиблись номером)
+
7
Прием платежа запрещен провайдером
+
8
Прием платежа запрещен по техническим причинам
+
79
Счет абонента не активен
+
90
Проведение платежа не окончено
241
Сумма слишком мала
+
242
Сумма слишком велика
+
243
Невозможно проверить состояние счета
+
300
Другая ошибка провайдера
+
15
Download