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/ |