forum.bitel.ru
http://forum.bitel.ru/

API обещанного платежа
http://forum.bitel.ru/viewtopic.php?f=19&t=11252
Страница 1 из 2

Автор:  Nyan [ 25 дек 2015, 16:43 ]
Заголовок сообщения:  API обещанного платежа

Здравствуйте.

Хотим сделать с сайта виджет для взятия обещанного платежа. Для этого нужно отправить от имени пользователя запрос по HTTP API. Вопрос заключается в том, где взять параметры запроса.

Для получения параметров API, которые вызываются клиентом биллинга запускаем клиент в режиме debug и повторяем запросы, которые совершает оператор. Существует ли способ вытащить параметры API, которые передаются серверу при работе пользователя в личном кабинете и повторять эти запросы от имени пользователя?

Автор:  skn [ 25 дек 2015, 17:07 ]
Заголовок сообщения:  Re: API обещанного платежа

версия биллинга?

Автор:  Nyan [ 25 дек 2015, 18:50 ]
Заголовок сообщения:  Re: API обещанного платежа

6.1.895, добавил в подпись

Автор:  Akhmat [ 25 дек 2015, 19:20 ]
Заголовок сообщения:  Re: API обещанного платежа

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

Автор:  skn [ 25 дек 2015, 23:40 ]
Заголовок сообщения:  Re: API обещанного платежа

в 6.1 смотри запросы в браузере, какие акшены вызываются, с какими параметрами и разбирать ответ
в 6.2 можно сделать через Web API

Автор:  Nyan [ 28 дек 2015, 12:18 ]
Заголовок сообщения:  Re: API обещанного платежа

Akhmat писал(а):
В дебаге запусти клиент биллинга. Вызови нужное действие в клиенте. потом в логе найди как выглядит запрос


Так не получится. В клиенте биллинга нет операции, взятия обещанного платежа от имени абонента. Или я не нашел?

Автор:  Nyan [ 28 дек 2015, 12:29 ]
Заголовок сообщения:  Re: API обещанного платежа

skn писал(а):
в 6.1 смотри запросы в браузере, какие акшены вызываются, с какими параметрами и разбирать ответ
в 6.2 можно сделать через Web API


В лк BGBilling при взятии обещанного платежа делается POST запрос на адрес "/webexecuter?action=ContractLimit&mid=0&module=contract&contractId=..." с параметрами
action:"ContractLimit"
summ:"сумма"
days:"кол-во дней"

Перед этом пользователь должен быть авторизован, т.е. должна быть установлена кука авторизации. Для эмуляции действий пользователя придется каждый раз отправлять его логин и пароль в форму авторизации, получать куку авторизации, передавать его в форму взятия обещанного платежа с другими заполненными параметрами? Слишком сложно, попроще не получится?

Автор:  Yarlan Zey [ 28 дек 2015, 13:07 ]
Заголовок сообщения:  Re: API обещанного платежа

в клиенте биллинга есть временное понижение лимита

Автор:  Nyan [ 28 дек 2015, 13:37 ]
Заголовок сообщения:  Re: API обещанного платежа

Yarlan Zey писал(а):
в клиенте биллинга есть временное понижение лимита


Да, этот вариант я рассматриваю, но если по-другому никак не получится сделать. Потому что временное понижение лимита не есть обещанный платеж, который берется в лк. Во-первых, он берется от имени оператора, а во-вторых, не попадает в таблицу contract_limit_manage и, соответственно, не выводится в личном кабинете. Если я не прав, поправьте меня, пожалуйста.

Автор:  Phricker [ 28 дек 2015, 13:41 ]
Заголовок сообщения:  Re: API обещанного платежа

А что вы вообще хотите, если не секрет?
Как вы от имени пользователя будете отправлять данные? Форма на сайте где нужно вбить номер договора и сумму?
P.S. Да я про виджет прочитал. Но как вы будете удостоверять пользователя? Или любой может отправить запрос на любой номер договора?

Автор:  Nyan [ 28 дек 2015, 13:57 ]
Заголовок сообщения:  Re: API обещанного платежа

Phricker писал(а):
А что вы вообще хотите, если не секрет?
Как вы от имени пользователя будете отправлять данные? Форма на сайте где нужно вбить номер договора и сумму?


Кнопочка на сайте "взять обещанный платеж", потому что люди имеют затруднения с выходом в ЛК, нагружают саппорт. А на праздники хотелось бы их разгрузить немного.

Привязка IP - абонент у нас жесткая, поэтому по IP клиента можно из базы взять логин пароль абонента и уже от его имени выполнять запросы к API.

В дальнейшем хотелось бы научиться выносить и другие популярные функции из ЛК на сайт в виде виджета.

Автор:  Phricker [ 28 дек 2015, 13:59 ]
Заголовок сообщения:  Re: API обещанного платежа

viewtopic.php?f=19&t=7254
Рисуете свой класс.
Обращаетесь к нему по кнопке - передаете IP.
По IP ищите сервис к которому он привязан.
Активируете что хотите.
Возвращаете результат пользователю на виджет / API добавляет в ЛК.
Профит.

Как я себе это представляю в текущий момент :)

Автор:  skn [ 28 дек 2015, 14:16 ]
Заголовок сообщения:  Re: API обещанного платежа

Nyan писал(а):
Перед этом пользователь должен быть авторизован, т.е. должна быть установлена кука авторизации. Для эмуляции действий пользователя придется каждый раз отправлять его логин и пароль в форму авторизации, получать куку авторизации, передавать его в форму взятия обещанного платежа с другими заполненными параметрами? Слишком сложно, попроще не получится?


кука не обязательна, можно в каждом запросе передавать логин и пароль или есть возможность авторизировать клиента с помощью самописного кода (например по ip)

Автор:  Nyan [ 28 дек 2015, 14:19 ]
Заголовок сообщения:  Re: API обещанного платежа

Phricker писал(а):
http://forum.bitel.ru/viewtopic.php?f=19&t=7254
Рисуете свой класс.
Обращаетесь к нему по кнопке - передаете IP.
По IP ищите сервис к которому он привязан.
Активируете что хотите.
Возвращаете результат пользователю на виджет / API добавляет в ЛК.
Профит.

Как я себе это представляю в текущий момент :)


Звучит интересно, спасибо за наводку, попробую, отпишусь.

Автор:  Phricker [ 28 дек 2015, 14:26 ]
Заголовок сообщения:  Re: API обещанного платежа

Nyan писал(а):
Звучит интересно, спасибо за наводку, попробую, отпишусь.

Если получится - отпишите скрипт :)
Он будет интересен и не только тем у кого жесткая привязка к IP в сервисах.
Можно организовать поиск текущих сессий по IP, и от этого плясать.

Автор:  Nyan [ 28 дек 2015, 20:12 ]
Заголовок сообщения:  Re: API обещанного платежа

Попробовал отправить такой запрос:
Код:
POST http://SERVER/bgbilling/webexecuter

с параметрами:
Код:
action=ContractLimit
mid=0
module=contract
contractId={{ contract_id }}
user={{ title }}
pswd={{ pswd }}
summ=10
days=1


Пользователю выдался обещанный платеж. В принципе, как раз то, что я хотел, только запрос ответ имеет не самый читаемый формат. Так как быстро разобраться с JAVA и API не получится, а результат нужен вчера, то как временный костыль я вижу такое решение:

1. Пользователь заходит на сайт, скрипт, который крутится на сайте определяет его ip, определяет логин, идет в базу BG, берет оттуда {{ contract_id }}, {{ title }}, {{ pswd }}.

2. curl-ом делается POST запрос с параметрами, описанными выше.

3. Ответ парсится, пользователю дается ответ, успешно прошла операция или возникла ошибка.

Пожалуйста, уважаемые гуру, ткните носом, если это решение абсолютно непригодно. В противном случае просто поругайте за криворукость =)

Автор:  skn [ 29 дек 2015, 02:56 ]
Заголовок сообщения:  Re: API обещанного платежа

попробуйте в запрос добавить параметр
Код:
ct=xml

Автор:  Nyan [ 29 дек 2015, 14:23 ]
Заголовок сообщения:  Re: API обещанного платежа

skn писал(а):
попробуйте в запрос добавить параметр
Код:
ct=xml

Не работает, по-прежнему отдается WEB-страница

Автор:  skn [ 29 дек 2015, 15:25 ]
Заголовок сообщения:  Re: API обещанного платежа

в крайнюю сборку 6.1 добавили поддержку параметра contentType=xml для веб-акшена ActionContractLimit

Автор:  Nyan [ 30 дек 2015, 16:04 ]
Заголовок сообщения:  Re: API обещанного платежа

skn писал(а):
в крайнюю сборку 6.1 добавили поддержку параметра contentType=xml для веб-акшена ActionContractLimit

Перед новым годом не будем обновляться, после праздников попробуем и отпишусь.

Автор:  Andr-232 [ 29 авг 2016, 19:41 ]
Заголовок сообщения:  Re: API обещанного платежа

Немного продолжу тему...

Делаю такой запрос:

Код:
POST http://SERVER/bgbilling/webexecuter


с параметрами:

Код:
action=ContractLimit
mid=0
module=contract
contractId={cid}
user={user}
pswd={pswd}
summ=150
days=3


В ответ прилетает:
Код:
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Connection: close
Date: Mon, 29 Aug 2016 13:06:02 GMT
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Thu, 01 Jan 1970 00:00:01 GMT
Client-Date: Mon, 29 Aug 2016 13:07:24 GMT
Client-Peer: 192.168.xxx.xxx:8080
Client-Response-Num: 1
Client-Transfer-Encoding: chunked
Set-Cookie: JSESSIONID=A20757939275103DD28724024FF3A27E; Path=/; HttpOnly

<?xml version="1.0" encoding="UTF-8"?><data status="ok"/>



И никакого понижения лимита не происходит. В логах сервера обращение видно, больше никаких сообщений касательно события в логах не нашел..

Версия биллинга: 6.2.1108 / 24.08.2016.

Возможно, как где-то писали, надо сначала авторизоваться, отловить куки, а потом уже выполнять action=ContractLimit? Если да, то каким запросом авторизоваться?..

Автор:  skn [ 29 авг 2016, 19:57 ]
Заголовок сообщения:  Re: API обещанного платежа

статус договора дебетовый?

Автор:  Andr-232 [ 29 авг 2016, 20:08 ]
Заголовок сообщения:  Re: API обещанного платежа

Да, дебетовый.

Автор:  skn [ 29 авг 2016, 23:25 ]
Заголовок сообщения:  Re: API обещанного платежа

А из ЛК этого договора обещанный платёж работает?

Автор:  Andr-232 [ 30 авг 2016, 15:52 ]
Заголовок сообщения:  Re: API обещанного платежа

Заглянул в дефолтный ЛК: меню Управление лимитом не отображается. Никаких настроек в биллинге касательно ЛК я не делал.

Может надо немного прояснить ситуацию... Если вкратце, то у нас "самописный" ЛК. Т.е. на отдельном сервере крутится нджинкс, который редиректит абонента на си-джи-ай враппер. Последний, в свою очередь, берет шаблоны, заполняет соответствующие поля данными из биллинга и все это отдает клиенту. Когда клиент хочет "доверительный платеж"(понижение лимита), он нажимает соответствующую кнопочку, враппер запрашивает биллинг возможно ли такое действие для клиента, и если да - то хотелось бы ему этот лимит понизить.
Враппер обращается в биллинг от имени своей учетной записи (завел в биллинге отдельную учетку и предоставил ей право управлять лимитами всех пользователей) и дает команду на временное понижение лимита (как из клиентской программы). Именно как подать эту команду посредством хттп(с) и интересует. Никакие дефолтные ЛК и возможности управления лимитом через них не используются.

Автор:  Andr-232 [ 30 авг 2016, 21:09 ]
Заголовок сообщения:  Re: API обещанного платежа

Экспериментальным путем выяснилось следующее:

1.
Код:
POST http://SERVER/bgbilling/webexecuter

в версии 6.2.1108 не работает (мне по крайней мере не удалось заставить работать).
2. Взаимодействие клиентского приложения с биллингом реализовано по протоколу SOAP поверх http(s).
3. Web-сервис через JSON RPC не реализован.

Выходит что Интеграция с внешними системами (для версии 6.2.1108) возможна только средствами Web-сервис через SOAP RPC. Очень помогла статья с вики:

http://wiki.bitel.ru/index.php/SOAP_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%B8%D0%B7_Perl

Теперь ясно куда копать. Ну и wireshark конечно же...

Автор:  Fate [ 30 ноя 2016, 15:06 ]
Заголовок сообщения:  Re: API обещанного платежа

Может кто-то разобрался и реализовал кнопку обещанного платежа без входа в личный кабинет?

Автор:  spectrum [ 01 дек 2016, 01:36 ]
Заголовок сообщения:  Re: API обещанного платежа

Пытаюсь через JSON вызвать метод "searchContractLimitLogList" интерфейса ContractLimitService.
Код:
{"method" : "searchContractLimitLogList", "user" :{ "user" : "user", "pswd" : "password" }, "params" : { "contractId" : "1", "period" : "" } }


Ответ:
Код:
{"status":"error","exception":"java.lang.IllegalArgumentException","message":"Can not instantiate value of type [simple type, class ru.bitel.common.model.Period] from String value (''); no single-String constructor/factory method\n at [Source: N/A; line: -1, column: -1]","tag":null,"data":{}}

В каком формате нужно задавать Period?

И еще вопрос. Метод updateContractLimitPeriod делает апдейт какого-то уже существующего лимита или может создавать новый лимит?
Если только апдейт, существуют ли методы по добавлению новых лимитов?

Автор:  spectrum [ 05 дек 2016, 19:05 ]
Заголовок сообщения:  Re: API обещанного платежа

spectrum писал(а):
Пытаюсь через JSON вызвать метод "searchContractLimitLogList" интерфейса ContractLimitService.
Код:
{"method" : "searchContractLimitLogList", "user" :{ "user" : "user", "pswd" : "password" }, "params" : { "contractId" : "1", "period" : "" } }


Ответ:
Код:
{"status":"error","exception":"java.lang.IllegalArgumentException","message":"Can not instantiate value of type [simple type, class ru.bitel.common.model.Period] from String value (''); no single-String constructor/factory method\n at [Source: N/A; line: -1, column: -1]","tag":null,"data":{}}

В каком формате нужно задавать Period?

И еще вопрос. Метод updateContractLimitPeriod делает апдейт какого-то уже существующего лимита или может создавать новый лимит?
Если только апдейт, существуют ли методы по добавлению новых лимитов?

Уважаемые разработчики, прокомментируйте пожалуйста.

Автор:  Fate [ 07 дек 2016, 21:54 ]
Заголовок сообщения:  Re: API обещанного платежа

Да, прокомментируйте, а...

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/