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

Обращение к модулю через SOAP
http://forum.bitel.ru/viewtopic.php?f=19&t=12505
Страница 1 из 1

Автор:  Iriskin0 [ 20 июн 2017, 07:30 ]
Заголовок сообщения:  Обращение к модулю через SOAP

BGBilling 7.0.890. Есть модуль Сбербанк с идентификатором 12, хочу получить список платежей.
Делаю запрос к методу SberbankService.searchTransactionList по ссылке https://сервербиллинга/bgbilling/executer/ru.bitel.bgbilling.modules.sberbank/SberbankService?wsdl, на что возвращается ошибка:
"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'bgbilling.sberbank_transaction' doesn't exist",
что логично - таблица имеет название sberbank_transaction_12.
Собственно, вопрос: где в запросе необходимо указывать этот идентификатор, чтоб обращаться к правильной таблице? Или может в конфиге модуля что-то где-то не дописано?


Полный код на питоне:
Код:
from zeep import Client
from zeep.transports import Transport
from requests import Session
from requests.auth import HTTPBasicAuth
from datetime import date
url = "https://сервербиллинга/bgbilling/executer/ru.bitel.bgbilling.modules.sberbank/SberbankService?wsdl"
session = Session()
session.verify = False
session.auth = HTTPBasicAuth(username='логин', password='пароль')
transport = Transport(session=session)
client = Client(wsdl=url, transport=transport)
dateFrom = date(2017, 6, 1)
print(client.service.searchTransactionList(contractId=-1, period={'dateFrom': dateFrom}))

Автор:  Phricker [ 20 июн 2017, 10:00 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Код:
https://сервербиллинга/bgbilling/executer/ru.bitel.bgbilling.modules.sberbank/12/SberbankService?wsdl

Автор:  Iriskin0 [ 20 июн 2017, 11:22 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Phricker писал(а):
Код:
https://сервербиллинга/bgbilling/executer/ru.bitel.bgbilling.modules.sberbank/12/SberbankService?wsdl

Забыл написать, пробовал, также пишет, что bgbilling.sberbank_transaction doesn't exist

Автор:  Phricker [ 20 июн 2017, 12:21 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Странно, т.к. для InetSessionService я именно так и пользуюсь
Код:
/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/12/InetSessionService

Автор:  Iriskin0 [ 20 июн 2017, 12:26 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Phricker писал(а):
Странно, т.к. для InetSessionService я именно так и пользуюсь
Код:
/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/12/InetSessionService

Проверил для модуля Inet. Действительно, работает. А со сбербанком почему-то нет :?

Автор:  Amir [ 20 июн 2017, 15:05 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Перегенерируйте классы для этого сервиса, если есть сгенерированные. В Java при генерации прописывается URL из WSDL.
Или переопределите URL, если возможно.

Автор:  Iriskin0 [ 22 июн 2017, 05:25 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Amir писал(а):
Перегенерируйте классы для этого сервиса, если есть сгенерированные. В Java при генерации прописывается URL из WSDL.
Или переопределите URL, если возможно.

Сгенерированных классов нет вроде. Это в управлении динамическим кодом?
Насчет переопределения не понял, где.

Автор:  Amir [ 22 июн 2017, 18:25 ]
Заголовок сообщения:  Re: Обращение к модулю через SOAP

Когда WSDL скачивается WS-клиентом - в ней указан URL, на который потом обращается клиент.
Этот URL не всегда подходит, т.к. может быть проброс через nginx. Или как в случае с биллингом - разные URL для разных модулей.

Биллинг генерирует WSDL при первом обращении, в итоге URL внутри WSDL остается от первого обращения.

Обычно этот URL можно переопределить. В данном случае не очень понятно, можно ли:
https://stackoverflow.com/questions/375 ... ython-zeep

Варианты, если переопределить endpoint address нельзя или лень:
1. Перезагрузить биллинг и сразу обратиться к правильному URL (и больше не обращаться с неправильным URL/модулем).
2. Скачать WSDL (и пару XSD, на которые он ссылается внутри), поправить в нем URL и указать в WS-клиенте путь к этому скаченному WSDL.

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