BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 апр 2024, 05:25

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 91 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 13:23 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
dimOn писал(а):
Цитата:
На счет динамического кода: он должен быть в глобальном скрипте поведения или привязан к событийной модели, т.е. неглобальный?
он вообще никакого отношения к любым скриптам поведения и событиям не должен иметь, это просто класс в дин.коде.

Окей, тогда как его создать этот класс? Через управление динамическим кодом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 13:58 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
vkulakov писал(а):
Смена тарифа - это экшен, соответственно, это не событие и не скрипт поведения. Напишите лучше, как у вас работает свой личный кабинет. Если он у вас реализован биллингом, то это одно, если это внешний сервер, то это другое. Решать задачу можно разными способами.

Для меня самый простой способ - написать свой веб-экшен с помощью динамического кода и в конфиге сервера связать свой код с конкретным действием в личном кабинете. Плюс поменять пару файликов типа js, css, xml на сервере биллинга.

Вот ссылка, по которой у меня загружается страничка со сменой пароля:
Код:
http://xxx/bgbilling/webexecuter?action=ChangeTariffPlan&mid=contract&contractId=yyy

Вот конфиг, который привязывает эту ссылку к динамическому коду:
Код:
# Смена тарифных планов
dynaction:contract.web.ActionChangeTariffPlan=ru.bbb.contract.action.web.ActionChangeTariffPlan


В классе динамического кода примерно следующее:
Код:
package ru.bbb.contract.action.web;
public class ActionChangeTariffPlan extends ActionBase {
   @Override
   public void doAction() throws Exception {
      // Делаем полезное
   }
}


Добавить новый тариф можно примерно так:
Код:
            ContractTariff newTariff = new ContractTariff();
            TariffGroup tariffGroup = getTariffGroup(inetId);
            
            newTariff.setContractId(cid);
            newTariff.setDate1(TimeUtils.convertDateToCalendar(fromDate));
            newTariff.setComment("Смена тарифного плана через Web");
            newTariff.setPos(tariffGroup.getPos());
            newTariff.setTariffPlanId(inetId);
            
            contractTariffManager.updateContractTariff(newTariff);
            
            this.context.publishAfterCommit(new ContractTariffChangedEvent(this.cid));
            this.context.publishAfterCommit(new ContractTariffUpdateEvent(userID, cid, newTariff, true));

Ещё проще закрытие тарифа датой или удаление.

Надеюсь, я вас правильно понял. Если нет, то пишите конкретнее, что у вас есть и что вы хотите видеть в итоге.



ActionBase что за класс? И классы ContractTariff, TariffGroup откуда? тоже не понятно. Код добавления тарифа находится внутри doAction()?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 14:03 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
vkulakov писал(а):
Смена тарифа - это экшен, соответственно, это не событие и не скрипт поведения. Напишите лучше, как у вас работает свой личный кабинет. Если он у вас реализован биллингом, то это одно, если это внешний сервер, то это другое. Решать задачу можно разными способами.

Для меня самый простой способ - написать свой веб-экшен с помощью динамического кода и в конфиге сервера связать свой код с конкретным действием в личном кабинете. Плюс поменять пару файликов типа js, css, xml на сервере биллинга.

Вот ссылка, по которой у меня загружается страничка со сменой пароля:
Код:
http://xxx/bgbilling/webexecuter?action=ChangeTariffPlan&mid=contract&contractId=yyy

Вот конфиг, который привязывает эту ссылку к динамическому коду:
Код:
# Смена тарифных планов
dynaction:contract.web.ActionChangeTariffPlan=ru.bbb.contract.action.web.ActionChangeTariffPlan


В классе динамического кода примерно следующее:
Код:
package ru.bbb.contract.action.web;
public class ActionChangeTariffPlan extends ActionBase {
   @Override
   public void doAction() throws Exception {
      // Делаем полезное
   }
}


Добавить новый тариф можно примерно так:
Код:
            ContractTariff newTariff = new ContractTariff();
            TariffGroup tariffGroup = getTariffGroup(inetId);
            
            newTariff.setContractId(cid);
            newTariff.setDate1(TimeUtils.convertDateToCalendar(fromDate));
            newTariff.setComment("Смена тарифного плана через Web");
            newTariff.setPos(tariffGroup.getPos());
            newTariff.setTariffPlanId(inetId);
            
            contractTariffManager.updateContractTariff(newTariff);
            
            this.context.publishAfterCommit(new ContractTariffChangedEvent(this.cid));
            this.context.publishAfterCommit(new ContractTariffUpdateEvent(userID, cid, newTariff, true));

Ещё проще закрытие тарифа датой или удаление.

Надеюсь, я вас правильно понял. Если нет, то пишите конкретнее, что у вас есть и что вы хотите видеть в итоге.



ActionBase что за класс? И классы ContractTariff, TariffGroup откуда? тоже не понятно. Код добавления тарифа находится внутри doAction()?


bitel.billing.server.contract.action.base.ActionBase.

Остальные классы можете найти тут :
http://bgbilling.ru/v6.1/javadoc/index.html

Код добавления тарифа находится внутри doAction.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 14:21 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Теперь суть гораздо понятнее.
Дин. код здесь: Сервис -> Автоматизация -> Управление динамическим кодом (http://bgbilling.ru/v6.1/doc/ch02s02.html)
Если пишите код, то гораздо удобнее это делать в Eclipse. Для этого нужно создать там проект Java и добавить все библиотеки биллинга (которые лежат в BGBillingServer/lib). Незнакомые классы Eclipse покажет где брать :).
Я бы весь код привёл, но его очень долго причёсывать нужно. Как напишите пробный вариант своего класса, общими усилиями его приведём в чувства.

Но вам нет особого смысла писать свой класс. Выше уже писали, что можно просто выполнить нужный GET-запрос из вашего php-кода. Примерно такой:
Код:
http://127.0.0.1:8080/bgbilling/webexecuter?action=Pay&mid=130&module=assist&contractId=455&user=123456&pswd=123456&midAuth=10&summ=1

Точный запрос можете посмотреть в стандартном личном кабинете биллинга. У меня сейчас эта страничка скрыта, поэтому привести здесь не смогу.

Ещё лучше вариант - делать через executer. Выше тоже писали (только нужно добавить user и password):
Код:
Для добавления нового тарифа
http://127.0.0.1:8080/bgbilling/executer?id=new&tpid=629&module=contract&action=UpdateContractTariffPlan&date2=&comment=&cid=111&date1=25.11.2014&pos=&

Для закрытия старого
http://127.0.0.1:8080/bgbilling/executer?id=85375&tpid=629&module=contract&action=UpdateContractTariffPlan&date2=30.11.2014&comment=&cid=111&date1=01.10.2014&pos=0&


Для 6.1 может отличаться. Запустите Wireshark и посмотрите, какие конкретно запросы отправляются от клиента к серверу. Про логин/пароль не забудьте. У нас так создание договоров реализовано из внешней системы - всё через executer и веб-сервисы.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 14:42 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
vkulakov писал(а):
Для 6.1 может отличаться. Запустите Wireshark и посмотрите, какие конкретно запросы отправляются от клиента к серверу. Про логин/пароль не забудьте. У нас так создание договоров реализовано из внешней системы - всё через executer и веб-сервисы.


Можно и клиента запустить в режиме debug и смотреть log-файл .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 15:05 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
stark писал(а):
Можно и клиента запустить в режиме debug и смотреть log-файл .


Можно, только после Wireshark смотреть log-файл очень не удобно. Ну и не так универсально.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 15:22 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
vkulakov писал(а):
Но вам нет особого смысла писать свой класс. Выше уже писали, что можно просто выполнить нужный GET-запрос из вашего php-кода. Примерно такой:
Код:
http://127.0.0.1:8080/bgbilling/webexecuter?action=Pay&mid=130&module=assist&contractId=455&user=123456&pswd=123456&midAuth=10&summ=1

Точный запрос можете посмотреть в стандартном личном кабинете биллинга. У меня сейчас эта страничка скрыта, поэтому привести здесь не смогу.


На счет своего класса. Посмотрел сейчас с помощью wireshark, как это делается в стандартном личном кабинете. Дело в том, что смена тарифа происходит в два этапов.
Сначала методом пост проходит авторизация (когда вводишь логин/пароль), потом отправляется гет запрос с экшеном (когда нажимаешь кнопку сменить тариф). По крайней мере я не знаю, как это сделать одним запросом. да и на сервере наверняка для авторизации стоит прием только пост запросов, а не гет. Поэтому думаю, что мне нужно писать этот класс, чем сейчас и займусь. Только не в эклипсе, а в нетбинсе. Я думаю, разницы сильной не будет)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 16:10 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
vkulakov писал(а):
Но вам нет особого смысла писать свой класс. Выше уже писали, что можно просто выполнить нужный GET-запрос из вашего php-кода. Примерно такой:
Код:
http://127.0.0.1:8080/bgbilling/webexecuter?action=Pay&mid=130&module=assist&contractId=455&user=123456&pswd=123456&midAuth=10&summ=1

Точный запрос можете посмотреть в стандартном личном кабинете биллинга. У меня сейчас эта страничка скрыта, поэтому привести здесь не смогу.


На счет своего класса. Посмотрел сейчас с помощью wireshark, как это делается в стандартном личном кабинете. Дело в том, что смена тарифа происходит в два этапов.
Сначала методом пост проходит авторизация (когда вводишь логин/пароль), потом отправляется гет запрос с экшеном (когда нажимаешь кнопку сменить тариф). По крайней мере я не знаю, как это сделать одним запросом. да и на сервере наверняка для авторизации стоит прием только пост запросов, а не гет. Поэтому думаю, что мне нужно писать этот класс, чем сейчас и займусь. Только не в эклипсе, а в нетбинсе. Я думаю, разницы сильной не будет)



Я несколько раз говорил что лучше делать не через личный кабинет , а через executer. Ну если вам нравятся чтобы было посложнее, то ладно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 16:18 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
stark писал(а):
Inspire писал(а):
vkulakov писал(а):
Но вам нет особого смысла писать свой класс. Выше уже писали, что можно просто выполнить нужный GET-запрос из вашего php-кода. Примерно такой:
Код:
http://127.0.0.1:8080/bgbilling/webexecuter?action=Pay&mid=130&module=assist&contractId=455&user=123456&pswd=123456&midAuth=10&summ=1

Точный запрос можете посмотреть в стандартном личном кабинете биллинга. У меня сейчас эта страничка скрыта, поэтому привести здесь не смогу.


На счет своего класса. Посмотрел сейчас с помощью wireshark, как это делается в стандартном личном кабинете. Дело в том, что смена тарифа происходит в два этапов.
Сначала методом пост проходит авторизация (когда вводишь логин/пароль), потом отправляется гет запрос с экшеном (когда нажимаешь кнопку сменить тариф). По крайней мере я не знаю, как это сделать одним запросом. да и на сервере наверняка для авторизации стоит прием только пост запросов, а не гет. Поэтому думаю, что мне нужно писать этот класс, чем сейчас и займусь. Только не в эклипсе, а в нетбинсе. Я думаю, разницы сильной не будет)



Я несколько раз говорил что лучше делать не через личный кабинет , а через executer. Ну если вам нравятся чтобы было посложнее, то ладно.



Я не хочу посложнее, как делать через executer? Просто как делать через executer я вообще не знаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 16:27 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
stark писал(а):
Inspire писал(а):
vkulakov писал(а):
Но вам нет особого смысла писать свой класс. Выше уже писали, что можно просто выполнить нужный GET-запрос из вашего php-кода. Примерно такой:
Код:
http://127.0.0.1:8080/bgbilling/webexecuter?action=Pay&mid=130&module=assist&contractId=455&user=123456&pswd=123456&midAuth=10&summ=1

Точный запрос можете посмотреть в стандартном личном кабинете биллинга. У меня сейчас эта страничка скрыта, поэтому привести здесь не смогу.


На счет своего класса. Посмотрел сейчас с помощью wireshark, как это делается в стандартном личном кабинете. Дело в том, что смена тарифа происходит в два этапов.
Сначала методом пост проходит авторизация (когда вводишь логин/пароль), потом отправляется гет запрос с экшеном (когда нажимаешь кнопку сменить тариф). По крайней мере я не знаю, как это сделать одним запросом. да и на сервере наверняка для авторизации стоит прием только пост запросов, а не гет. Поэтому думаю, что мне нужно писать этот класс, чем сейчас и займусь. Только не в эклипсе, а в нетбинсе. Я думаю, разницы сильной не будет)



Я несколько раз говорил что лучше делать не через личный кабинет , а через executer. Ну если вам нравятся чтобы было посложнее, то ладно.



Я не хочу посложнее, как делать через executer? Просто как делать через executer я вообще не знаю.


Все то же самое, только заходите клиентом биллинга, добавляете новый тариф на договор и смотрите какой запрос ушел на excuter из клиента. Я это уже описал выше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 17:16 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Inspire писал(а):
stark писал(а):
Inspire писал(а):
vkulakov писал(а):
Я не хочу посложнее, как делать через executer? Просто как делать через executer я вообще не знаю.


Что значит "не знаю"??? Уже пять раз написали, я выше примеры дал. Осталось в запрос два параметра добавить (user и password), тоже выше писали про это. Если вы не хотите читать ответы, тогда зачем задавать вопросы. Ну никакого желания отвечать нет.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 17:25 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Если код на TCL вас не пугает, могу выложить код модуля, который взаимодействует с биллингом через executer.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 17:50 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Я очень благодарен за ответы, и я их читаю ) Через executer получил такую команду:
https://сайт/bgbilling/executer?id=407&tpid=8&module=contract&action=UpdateContractTariffPlan&date2=25.11.2014&comment=comment&BGBillingSecret=secretCode&cid=9&date1=10.11.2014&pos=0&

Как генерируется поле BGBIllingSecret и как мне его генерировать если буду работать через executer?

Что касается webexecuter:
TariffGroup tariffGroup = getTariffGroup(inetId);
лазил в явадоках http://bgbilling.ru/v6.1/javadoc/index.html для версии 6.1, 6.0, 5.1, загрузил все либы с сервера биллинга, работаю в netbeans. не находится метод getTariffGroup(). Какому классу он принадлежит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 18:04 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
Я очень благодарен за ответы, и я их читаю ) Через executer получил такую команду:
https://сайт/bgbilling/executer?id=407&tpid=8&module=contract&action=UpdateContractTariffPlan&date2=25.11.2014&comment=comment&BGBillingSecret=secretCode&cid=9&date1=10.11.2014&pos=0&

Как генерируется поле BGBIllingSecret и как мне его генерировать если буду работать через executer?
[/quote="Inspire"]
Он вам не нужен, можете его не заполнять.user и pswd не забыли ?

Inspire писал(а):
Что касается webexecuter:
TariffGroup tariffGroup = getTariffGroup(inetId);
лазил в явадоках http://bgbilling.ru/v6.1/javadoc/index.html для версии 6.1, 6.0, 5.1, загрузил все либы с сервера биллинга, работаю в netbeans. не находится метод getTariffGroup(). Какому классу он принадлежит?


Это, видимо, какой-то его внутренний метод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 18:07 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
а что с BGBillingSecret ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 19:02 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
а что с BGBillingSecret ?

я написал выше , просто ошибся с тегами .
Цитата:
Он вам не нужен, можете его не заполнять.user и pswd не забыли ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 19:21 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
https://сайт/bgbilling/executer?user=102-1000001&pswd=password&id=407&tpid=8&module=contract&action=UpdateContractTariffPlan&date2=25.11.2014&comment=comment&cid=9&date1=10.11.2014&pos=0


Ответ <data status="error">Пользователь "102-1000001" - не найден в БД.</data>


Если через webexecuter, то заходит в личный кабинет, но никаких действий с тп не делает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 19:44 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Inspire писал(а):
https://сайт/bgbilling/executer?user=102-1000001&pswd=password&id=407&tpid=8&module=contract&action=UpdateContractTariffPlan&date2=25.11.2014&comment=comment&cid=9&date1=10.11.2014&pos=0


Ответ <data status="error">Пользователь "102-1000001" - не найден в БД.</data>


Если через webexecuter, то заходит в личный кабинет, но никаких действий с тп не делает



Вы поймите одну вещь. Если вы работаете с executer, то это другой пользователь (user). там admin/admin должно быть или имя какого-то другого пользователя
http://bgbilling.ru/v6.1/doc/ch01s22s01.html
Не путайте.
1. На executer заходит оператор admin/admin.
2. На webexcuter заходит клиент ваш там user - это номер договора и пароль - пароль для доступа к статистике.

Так понятно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 19:50 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Да уж, долго до меня доходило, что просто надо строку в браузере вбить с логином и паролем своим. Я почему-то думал, что все в 100 раз тяжелее и не принимал этот вариант, как решение моей задачи.
Огромное спасибо stark и vkulakov.
С закрытием тарифа разобрался, завтра буду добавлять новый тариф.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 20:03 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Inspire писал(а):
TariffGroup tariffGroup = getTariffGroup(inetId);
лазил в явадоках http://bgbilling.ru/v6.1/javadoc/index.html для версии 6.1, 6.0, 5.1, загрузил все либы с сервера биллинга, работаю в netbeans. не находится метод getTariffGroup(). Какому классу он принадлежит?


Inspire писал(а):
Это, видимо, какой-то его внутренний метод.


Ага. Так и есть. Но я так понял, уже не актуально.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 20:21 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Если вы про его реализацию, то актуально. Я хочу разобраться и с динамичным кодом, чтобы окончательно поставить точку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 25 ноя 2014, 20:39 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Тот класс содержит 1200 строк и подходит только для нас. Смысла именно с ним разбираться нет. Вот метод getTariffGroup:
Код:
   /**
    * Текущие группы тарифных планов на договоре.<br/>
    * Необходимы для блокировки перехода абонентов на старые (неактуальные тарифные планы).
    */
   private Map<Integer, TariffGroup> contractTariffGroupMap;
...
      ContractTariffGroupManager ctgm = new ContractTariffGroupManager(con);
      List<Integer> contractTariffGroups = ctgm.getContractTariffGroupIds(cid, today);

      TariffGroupManager tariffGroupManager = new TariffGroupManager(con);
      contractTariffGroupMap = new HashMap<Integer, TariffGroup>();
      if (contractTariffGroups.size() > 0) {
         contractTariffGroupMap = tariffGroupManager.getTariffGroupMap(Utils.toString(contractTariffGroups));
      }
...
   /**
    * <p>Получение группы тарифов по идентификатору тарифного плана.</p>
    * <p>Если тарифный план присутствует в нескольких тарифных группах, то параметры смены тарифного плана через веб должны быть идентичны для всех групп,
    * поэтому нет смысла искать все группы - достаточно получить только одну группу и по ней уже определять, можно менять тариф или нет.</p>
    * @param tariffId Идентификатор тарифного плана
    * @return Тарифная группа
    */
   private TariffGroup getTariffGroup(int tariffId) {
      for(TariffGroup tariffGroup : contractTariffGroupMap.values()) {
         if(tariffGroup.getId() == iptvTariffGroupId || tariffGroup.getId() == iptvTariffAddGroupId || tariffGroup.getId() == inetTariffGroupId || tariffGroup.getId() == packetTariffGroupId) {
            continue;
         }
         for(TariffGroupTariff tariffGroupTariff : tariffGroup.getPlanList()) {
            if(tariffGroupTariff.getId() == tariffId) {
               return tariffGroup;
            }
         }
      }
      return null;
   }
...

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 26 ноя 2014, 15:39 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
За закрытием и открытием тарифа разобрался. Далее вопрос немного не по теме, но тем не менее отношение к ней имеет. Создал отдельно php файл, в котором код http get запроса вида:
Код:
$url_q = "https://сайт/bgbilling/executer?user=user&pswd=password&id=859&tpid=14&module=contract&action=UpdateContractTariffPlan&date2=25.11.2014&comment=comment&cid=9&date1=25.11.2014&pos=0";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "$url_q");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);


curl_setopt($curl, CURLOPT_COOKIEJAR, 'cook.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cook.txt');
curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_REFERER, "$url_q");
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

$result = curl_exec($curl);
curl_close($curl);


И он не отсылается.
Пробовал еще так:
Код:
 $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://сайт/bgbilling/executer");
    curl_setopt_array($ch, array(
        'user' => 'user',
        'pswd' => 'password',
        'id' => '859',
        'tpid' => '14',
        'module' => 'contract',
        'action' => 'UpdateContractTariffPlan',
        'date2' => '25.11.2014',
        'comment' => 'comment',
        'cid' => '9',
        'date1' => '25.11.2014',
        'pos' => '0'
    ));
    $output = curl_exec($ch);
    curl_close($ch);


И через file_get_contents пробовал тоже. Результат один и тот же. Если я этот код вставляю в начале страницы личного кабинета, то она просто не грузится. А если в конце, то грузится, но ничего не происходит с запросом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 26 ноя 2014, 16:22 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Если страница не грузится, значит точно есть ошибка. Смотрите логи.

Пальцем в небо: вы пытаетесь зайти по https, но не понятно, на какой порт и не понятно, какие используются настройки SSL. Попробуйте через обычный http.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 26 ноя 2014, 17:34 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Не было логов php, подключил их. Оказывается, не была подключена библиотека curl. Теперь получилось. Еще раз спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 04 дек 2014, 17:07 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Коснулся вопроса смены пароля для подключения к интернету. Работаю в биллинге в режиме Debug и не вижу там команды, которая отвечает за смену пароля. Единственная команда, которая есть в дебаге после нажатия кнопки сохранить в биллинге, это:
https://адрес/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/3/InetServService?wsdl -> {http://service.common.api.inet.modules.bgbilling.bitel.ru/}InetServService:inetServRestrictionList

Подскажите, как через executer осуществить смену пароля? Или как посмотреть команду, которая отправляется для смены

Если через webexecutor делать в личном кабинете биллинга, то там отправляется пост запросом. Пробовал подставить параметры из пост запроса и отправить гет-ом:
https://адрес/bgbilling/executer?module=inet&mid=3&action=ChangeLoginPassword&operation=change&login=11&old_pswd=12345&pswd1=123456&pswd2=123456

Но получил такую ошибку Action NOT FOUND ! module:inet class: ActionChangeLoginPassword


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 04 дек 2014, 18:30 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4489
Откуда: Уфа, Россия
Карма: 186
смена пароля реализована через web-сервис, там немного другой механизм построения запроса
ищи по форуму и в инете как из php вызывать сервисы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 04 дек 2014, 18:33 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Вбейте в браузере
Код:
https://адрес/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/3/InetServService?wsdl

и получите описание сервиса. Дальше на основе этого описания в php создаёте клиент веб-сервиса и с помощью него уже вызываете нужные методы. Вам понадобятся inetServGet для получения сервиса и inetServUpdate для записи сервиса в биллинг с уже изменённым паролем.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 04 дек 2014, 18:44 
Не в сети

Зарегистрирован: 21 ноя 2014, 15:11
Сообщения: 393
Карма: 0
Что-то executer-ом там и близко не пахнет. Мне не нужен веб сервис. Мне команда смены пароля через executer нужна. Смена пароля и в биллинге реализована.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Смена тарифного плана
СообщениеДобавлено: 04 дек 2014, 18:57 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Inspire писал(а):
Коснулся вопроса смены пароля для подключения к интернету.

Если подключение к интернету работает через модуль Inet, то пароль нужно менять только через веб-сервис. И это нормальный подход и его рекомендуется использовать, другие варианты не стоит даже и рассматривать. Тем более здесь ничего сложного нет.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 91 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.128s | 78 Queries | GZIP : On ]