Описание АПИ - интерфейса

(API - application programming interface)

для программного взаимодействия с сервисом



Подключение к АПИ

Подключение к АПИ доступно только зарегистрированным пользователям. Для выполнения запроса на постановку ордера требуется получить в личном кабинете код подтверждения. Для оплаты ордера с личного счета нужно пополнить баланс .

Для активации АПИ нужно обратиться в поддержку с темой «Подключение АПИ» и предоставить Ваш логин и IP-адрес сервера, с которого будут осуществляться запросы. После одобрения и активации АПИ Вы получите идентификатор, который должен отправляться в каждом запросе (параметр “id’).


Структура запросов и ответов

Запросы и ответы выполняются согласно спецификации JSON-RPC 2.0

Все запросы отправляются по адресу https:///api/

* все запросы содержат идентификатор запроса "id", который возвращается в ответах

* все запросы в параметрах содержат секцию идентификации: "secure":{"login":"ВашЛогин","pass":"ВашПароль"}

* любые непредусмотренные параметры игнорируются

* все ответы содержат секцию "error", которая в случае ошибки содержит код и описание ошибки, а в случае удачи – не содержит данных.

Запрос содержит id, метод и параметры.

id - "id" - идентификатор, полученный в поддержке при регистрации API,

метод - "method" - указывает серверу, какая операция должна быть выполнена,

параметры - "params" - содержат секцию "secure" для идентификации на сервере, и перемерты, необходимые для конкретного метода,

например:

{"jsonrpc":"2.0","id":"Ваш_id","method":"get_valute","params":{"operator":"kievstar","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

НЕ нашли? Не то? Что вы ищете?

Ответ содержит id, результат в случае удачного завершения, или код и описание ошибки,

например:

{"jsonrpc":"2.0","id":"Ваш_id,"error":"","result":{"valute":"UAH"}}

В случае ошибки:

{"jsonrpc":"2.0","id":Ваш_id,"error":{"code":-32601,"message":"Method not found"}}

Запросы могут быть Информационные и Платежные.

Более подробно каждый запрос будет рассматриваться ниже.


Информационные запросы

get_balance - получение баланса Личного счета.

  параметры: - не требуются

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_balance",”params":{"secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"balance":"15.4264"}}

get_history - получение истории по счету.

  параметры:

  last - (необязательный) вывести последние операции. При отсутствии параметра выводятся ВСЕ операции.

  mode - (необязательный) - режим вывода [api, receive, spend, all]

  api - операции через АПИ,

  receive - получено,

  spend - отправлено,

  all - ВСЕ.

  При отсутствии параметра выводятся ВСЕ операции.

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_balance","params":{"last":"5","mode":"api","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

  {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":[

{"timestamp":"1532130832","data":"Jul 21 2018 02:53:52","operation":"tricolor_ediny 37001234567890 1000RUR","batch":"15321308329826","amnt":"-16.22","mode":"api"}]}

get_available - получение списка с указанием категорий и стран доступных операторов/провайдеров.

  параметры: - не требуются

  образец запроса:

{"jsonrpc":"2.0","id":Ваш_id,"method":"get_available","params":{"secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

{"jsonrpc":"2.0","id":Ваш_id,"error":"",  "result":{"sng":{"mobileru":["mts","beeline","tele2","megafon","motiv","yotaphone"] ...

  * вывод в формате: категория -> страна -> оператор/провайдер

  ** категории: sng - мобильные, phones - стационарные, inettv - провайдеры интернет/тв, other - другие

list_available - получение списка БЕЗ указания категорий и стран доступных операторов/провайдеров.

  параметры: - не требуются

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"list_available","params":{"secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

{"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"operator":["mts","beeline","tele2","megafon" ...

get_operator_properies - получение свойств оператора.

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_operator_properies","params":{"operator":"tricolor","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

  {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"tricolor":{

"nameRu":"Триколор ТВ",

"nameEn":"Tricolor TV",

"operator_link":"http://www. tricolor. tv/",

"digits_count":"12-14",

"ex_num":"",

"min_sum":"40",

"max_sum":"",

"sim":"",

"region_ru":"тип платежа",

"region_en":"payment type",

"fieldnameru":"ID приемника",

"fieldnameen":"receiver ID",

"pattern":"",

"instant":0,

"ps":""}}}

  назначение полей:

  nameRu, nameEn - название рус/англ.

  operator_link - ссылка на сайт оператора/провайдера

  digits_count - число цифр в номере

  ex_num - образец номера телефона/провайдера

  min_sum, max_sum - мин/макс. допустимая сумма к оплате

  region_ru, region_en - рус/англ. название дополнительного поля, например, тип платежа, регион и т. д

  fieldnameru, fieldnameen - рус/англ название данных, которые должно содержать поле [account] для методов [get_for_pay] и [set_order]

  pattern - шаблон для поля [account] методов [get_for_pay] и [set_order]

  instant - моментальное пополнение или нет (на данный ммент ВСЕ пополнения в ручном режиме)

  sim, ps - служебные поля или не используется

  * если оператор имеет дополнительное поле [регион], выводится список регионов, например:

  "payment type":{"ediny":"Пакет «Единый»", "childmonth":"Пакет «Детский месяц»", "allfutball":"Пакет «Весь футбол»", ...

get_region - получение поля [регион] (если есть) в виде списка.

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_region","params":{"operator":"tricolor","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

  {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"region":["ediny","childmonth","childyear","multiroom", … ]}}

get_valute - получение валюты, поступающей на счет оператора/провайдкера.

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_valute","params":{"operator":"tricolor","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"valute":"RUR"}}


Запросы на получение суммы к оплате

* методы "get_for_pay" и "multi_for_pay" рекомендуется использовать для проверки правильности данных для пополнения (оператор, сумма, номер счета оператора/провайдера)

** суммы к оплате, полученные методами "get_for_pay" и "multi_for_pay" могут незначительно отличаться от реальных сумм к оплате, полученных методами "set_order" и "multi_order"

* если запросы не содержат параметра pay_method – будет получена сумма к оплате с личного счета

** если pay_method указан – будет получена сумма к оплате в валюте выбранной платежной системы

get_for_pay - получение суммы к оплате.

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  region - (если есть - обязательный, если нет - не должно быть) название региона (должно быть в списке, полученном методом [get_region]).

  Account(обязательный) номер телефона/счета.

  sum - (обязательный) сумма пополнения (не должна быть меньше min_sum и больше max_sum. если max_sum не указана - без ограничений).

  образец запроса:

  {"jsonrpc":"2.0","id":Ваш_id,"method":"get_for_pay","params":{"operator":"tricolor","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"amount":"0.78"}}

multi_for_pay - получение суммы к оплате для мульти-ордеров.

  параметры:

  параметры должны содержать секцию "orders", состоящую из нескольких объектов - ордеров:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  region - (если есть - обязательный, если нет - не должно быть) название региона (должно быть в списке, полученном методом [get_region]).

  Account(обязательный) номер телефона/счета.

  sum - (обязательный) сумма пополнения (не должна быть меньше min_sum и больше max_sum. если max_sum не указана - без ограничений).

  образец запроса:

{"jsonrpc":"2.0","id":Ваш_id,"method":"multi_for_pay","params":{"orders":[

{"operator":"tricolor","sum":50,"account":"48012345678910","region":"personal"},

("operator"=>"kievstar","sum"=>21,"account"=>"0981234567")],

"secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа:

{"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"orders":[

{"operator":"tricolor","sum":40,"account":"48012345678910","region":"personal","order_result":{"amount":"0.61"}},

{"operator":"kievstar","sum":21,"account":"0981234567","order_result":{"amount":"0.78"}}],

"amount":2.13}}


Платежные запросы

* Запросы должны содержать обязательный параметр [Код Подтверждения](pin) в секции идентификации:

"secure":{"login":"ВашЛогин","pass":"ВашПароль","pin":"КодПодтверждения"}

set_order - постановка ордера на пополнение.

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  region - (если есть - обязательный, если нет - не должно быть) название региона (должно быть в списке, полученном методом [get_region]).

  Account(обязательный) номер телефона/счета.

  sum - (обязательный) сумма, на которую нужно пополнить счет телефона/провайдера (не должна быть меньше min_sum и больше max_sum. если max_sum не указана - без ограничений).

  образец запроса: {"jsonrpc":"2.0","id":Ваш_id,"method":"set_order","params":{"operator":"tricolor","sum":50,"account":"48012345678910","region":"personal","secure":{"login":"ВашЛогин","pass":"ВашПароль","pin":"КодПодтверждения"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"order_id":"103481","transaction_id":"15326946612906"}}

multi_order - постановка мульти-ордеров на пополнение.

параметры должны содержать секцию "orders", состоящую из нескольких объектов - ордеров:

  параметры:

  operator - (обязательный) название оператора (должно быть в списке доступных операторов/провайдеров).

  region - (если есть - обязательный, если нет - не должно быть) название региона (должно быть в списке, полученном методом [get_region]).

  Account(обязательный) номер телефона/счета.

  sum - (обязательный) сумма, на которую нужно пополнить счет телефона/провайдера (не должна быть меньше min_sum и больше max_sum. если max_sum не указана - без ограничений).

  образец запроса: {"jsonrpc":"2.0","id":Ваш_id,"method":"multi_order","params":{"orders":[

{"operator":"tricolor","sum":50,"account":"48012345678910","region":"personal"},

{"operator":"kievstar","sum":21,"account":"0981234567"}],

"secure":{"login":"ВашЛогин","pass":"ВашПароль","pin":"КодПодтверждения"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"orders":[

{"operator":"tricolor","sum":40,"account":"48012345678910","region":"personal","order_result":{"amount":"0.61","order_id":"104985","transaction_id":"15346240635338"}},

{"operator":"kievstar","sum":21,"account":"0981234567","order_result":{"amount":"0.78","order_id":"104987","transaction_id":"15346240639086"}}],

"amount":1.39,"order_id":"104986","transaction_id":"15346240633318","pay_account":""}

check_order - проверка статуса ордера.

    в связи с тем, что пополнение выполняется в ручном режиме, проверять статус следует с интервалом 3-4 минуты (т. к. информация о поступивших платежах обновляется каждые 3 минуты)

  параметры:

  order_id - (обязательный) номер заявки (полученный методом [set_order]).

  transaction_id - (обязательный) номер транзакции (полученный методом [set_order]).

  образец запроса: {"jsonrpc":"2.0",”method":"check_order","params":{"order_id":"103481","transaction_id":"15326946612906","secure":{"login":"ВашЛогин","pass":"ВашПароль"}}}

  образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"status":"in_process..."}}

* некоторые варианты статуса:

  0 : - ордер не оплачен или в ожидании оплаты

  in_process... : - ордер в процессе выполнения

  1 : - ордер выполнен

  WAIT : - ордер в ожидании (возможно: проблемы с пополнением, пользователю отправлено сообщение, пополнение временно недоступно и др.)

  RETURN : - средства возвращены пользователю


Платежные запросы с пост-оплатой

Сценарий запроса с пост-оплатой:

Создать ордер или мульти-ордер,

Параметры для методов set_order и multi_order должны содержать дополнительный параметр pay_method.

Возможные значения pay_method : (“PM”: Perfect Money, “payeer”: payeer, “BTC”: BitCioin, “p24noFee” приват24 без комиссии, “pers” : личный счет)

Если указан pay_method “pers” (или не указан параметр pay_method) – оплата будет осуществлена с личного счета

образец запроса:

{"jsonrpc":"2.0","id":Ваш_id,"method":"set_order",

"params":{“pay_method“:”PM”,"operator":"kievstar","sum":21,"account":"0981234567","secure":{"login":"ВашЛогин","pass":"ВашПароль","pin":"КодПодтверждения"}}}

*результат будет содержать кроме order_id и transaction_id реквизиты для оплаты - pay_account – аккаунт/адрес/карту для оплаты, и amount – сумму к оплате.

образец ответа: {"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"order_id":"103481","transaction_id":"15326946612906",”pay_account”:”U1398029”,”amount”:”0.67”}

Оплатить ордер через Ваш АПИ платежной системы, указанной в параметре pay_method.

Номер транзакции “batch_num” будет использован для метода payment_notice.

Сообщить об оплате методом payment_notice. Параметры order_id и transaction_id – получены методом set_order или multi_order.

образец запроса:

{"jsonrpc":"2.0",”method":"payment_notice","params":{“pay_method“:”PM”,"order_id":"103481","transaction_id":"15326946612906",”batch_num”:” 225990376”}}

образец ответа:

{"jsonrpc":"2.0","id":Ваш_id,"error":"","result":{"status":"in_process...","batch":"225990376"}}

Образец скрипта для работы с платежными запросами с пост-оплатой можно скачать на странице описания АПИ

Данный скрипт содержит функции и классы для работы с платежными системами, а также ссылки на описание и инструкции по установке и настройке АПИ платежных систем.

На данный момент доступны такие платежные системы: Perfect Money, Payeer, BitCoin и Приват24


Возможные ошибки

wrong_id: - неверный параметр “id”

ip_not_mach: - IP-адрес не совпадает с зарегистрированным

not_permissions: - для доступа к АПИ Вы не имеете полномочий/не зарегистрированы/заблокированы

method_not_set, incorrect_method: - запрос не содержит метод, или указан несуществующий метод

login_not_found: - нет пользователя с таким логином

incorrect_password, incorrect_pin: - неверный пароль, неверный Код Подтверждения

operator_not_set, operator_not_exist: - оператор отсутствует в запросе или нет такого оператора

account_notmatch_pattern: - номер телефона/счета не соответствует шаблону

sum_not_set, sum_isnot_int, sum_less_min, sum_more_max: - сумма отсутствует в запросе, не целое число, больше или меньше допустимой

order_id_not_set, transaction_id_not_set: - отсутствуют обязательные параметры для проверки ордера

order_notfound_in_database: - ордер не найден в базе данных

operator_not_have_region, region_not_set, region_not_exist: - оператор не содержит регион, регион отсутствует в запросе, нет такого региона

insufficient_funds: - недостаточно средств на личном счете для постановки ордера на пополнение

unknown_valute: - не удалось получить валюту оператора

incorrect_mode: - при получении истории указан некорректный режим



Ограничения
Запросы принимаются только с IP-адреса сервера, который предоставил пользователь в письме к администрации. Если в течение 10 минут поступит более 200 запросов, IP-адрес, с которого поступили запросы, будет заблокирован автоматически. Для разблокировки потребуется обращение в поддержку. Если будет выставлено более 20 неоплаченных пост-оплатных ордеров – метод set_order и multi_order вернет ошибку too_many_orders. Через ~12 часов блокировка будет автоматически снята.