Программы "Простой софт" www.prostoysoft.ru

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически)
Текущее время: 27.11.2024 13:38

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 08.11.2022 19:22 
Не в сети

Зарегистрирован: 10.04.2015 13:32
Сообщения: 159
Добрый день!

Делаем интеграцию с платежным терминалом 3 in 1 FETIAN F20
Отправляем POST запрос и полученный ответ грузим в виде JSON
Используем хранимую процедуру SQL сервера с запуском из программы Склад и торговля.


В Складе и торговле сделали кнопку на панели команд: VBS Script ExecuteSQL("EXECUTE dbo.SP_Android_iKassa_sale <tblSales1RMK>.<ID>, <CurrentUserID>")
В хранимую процедуру передаем параметры указанные выше.
В самой хранимой процедуре используем данный метод отправки POST запроса:


Exec @vReturnCode = sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;

EXEC @vReturnCode = sp_OAMethod @Object, 'open', NULL, 'post', @Url, 'false'

Exec @vReturnCode = sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/json'

Exec @vReturnCode = sp_OAMethod @Object, 'setRequestHeader', null, 'INTENT_OPERATION_TYPE', 'SALE'

Exec @vReturnCode = sp_OAMethod @Object, 'setRequestHeader', null, 'USER_PARTICIPATION', 'false'

Exec @vReturnCode = sp_OAMethod @Object, 'setRequestHeader', null, 'requestCode', '2000'

Exec @vReturnCode = sp_OAMethod @Object, 'send', null, @body

Exec @vReturnCode = sp_OAMethod @Object, 'status', @Status OUTPUT

Exec @vReturnCode = sp_OAMethod @Object, 'statusText', @statusText OUTPUT

Exec @vReturnCode = sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT


Select @ResponseText
Select @Status
Select @StatusText

Exec sp_OADestroy @Object


Через менеджмент студио все отрабатывает корректно. А при запуске из программы Склад и торговля в случае, если нет ответа более 30-ти секунд, выводится ошибка о превышении времени ожидания и процедура не выполняется. Хотя сам запрос успешно передан на внешнее устройство и и выполняет отправленную задачу до конца.

Пробовали использовать еще 2 метода: 'MSXML2.ServerXMLHTTP' и 'WinHttp.WinHttpRequest.5.1'
Но эти два метода не отрабатывают и под менеджмент студио в случае, если ожидание ответа на POST запрос более 30-ти секунд.


Может кто-то сталкивался с подобной задачей и знает как увеличить тайминги?
Либо есть какая-то альтернатива передачи post запрос по HTTP ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09.11.2022 14:03 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Есть такая команда у нас DoWebRequest
Которая позволяет делать веб-запросы и извлекать ответ из JSON-результата сразу в поля таблицы.
См. скриншот.

Мы можем адаптировать под вашу задачу. Обращайтесь, цена договорная.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01.12.2022 13:31 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Мы увеличили все таймауты до 120 секунд.
Везде поставили
CommandTimeout = 120

значение по умолчанию было 30

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB