Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> подключение BAS к POS терминалу Приват Банка именно по протоколу JSON в 8.х , протокол JSON и POS терминал Приват Банка в 8.х          
mfadmin_2024 Подменю пользователя
сообщение 27.09.24, 16:23
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Дорбый день. Помогите плз, такая задача: подключиться к POS-терминалу Приват Банка именно по протоколу JSON из 1С 8.х.
Есть драйвера в частности ВебЧек знаю, но этот драйвер по сути как я понимаю и делает что принимает запрос от программы 1С в формате какой придумали разработчики ВебЧек и ретранслируют его через JSON запросы в понятный для POS-терминала. Так вот хочется напрямую работать, не использую промежуточный драйвер.
Начальные условия:
- POS-терминал Привата VeriFone VX520 (но єто не важно, Приватовские все по JSON должны работать)
- подключил его по сети (Lan) есть IP 192.168.10.123
- в документации Привата указано что работать нужно по порту 2000
- и обаботка с текстом ниже в любой 1С 8.2 конфигурации, пробую примитивнейшую команду отправить на терминал и получить ответ

Сервер = "192.168.10.123";
Порт = 2000;
Попытка
    HTTPСоединение = Новый HTTPСоединение(Сервер,Порт,,,,30,,Ложь);
Исключение
    Сообщить("1 " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

//структура для JSON
Данные = Новый Структура();
Данные.Вставить("method", "PingDevice");
Данные.Вставить("step", 0);

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
ЗапросJSON = ЗаписьJSON.Закрыть();

HTTPЗапрос = Новый HTTPЗапрос(ЗапросJSON);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");

HTTPЗапрос.УстановитьТелоИзСтроки(ЗапросJSON, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
Попытка
    Результат = HTTPСоединение.Получить(HTTPЗапрос);
    Сообщить(Результат);
Исключение
    ОписаниеОшибки = ИнформацияОбОшибке().Описание;
    Сообщить("2 " + ОписаниеОшибки());
КонецПопытки;


POS-терминал при выполнении процедуры пищит, то есть он что-то получает, но в результате программа 1С выдает:
2 {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(252)}: Помилка при виклику методу контексту (Получить): Помилка роботи з Інтернет: Unsupported protocol
И немогу ума приложить что не так..

Anderson Подменю пользователя
сообщение 27.09.24, 20:00
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 94
Из: Одесса
Спасибо сказали: 12 раз
Рейтинг: 14.4

А при чем тут вообще Вебчек?

mfadmin_2024 Подменю пользователя
сообщение 27.09.24, 21:23
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Anderson @ Сегодня, 21:00 * ,
Ни при чем, я имею ввиду что можно подключить POS-терминал через драйвер ВебЧека или еще какой, но меня это не устраивает.
Я хочу именно через JSON запросы напрямую с терминалом.

Anderson Подменю пользователя
сообщение 27.09.24, 21:51
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 94
Из: Одесса
Спасибо сказали: 12 раз
Рейтинг: 14.4

Цитата(mfadmin_2024 @ 27.09.24, 22:23) *
Я хочу именно через JSON запросы напрямую с терминалом.

А вы читали инструкцию. Как терминал работает. То что вы хотите это одно, а то что он принимает это другое.

gesha2281 Подменю пользователя
сообщение 28.09.24, 8:48
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

mfadmin_2024 @ Вчера, 17:23 * ,
Мы когда подключали банковский терминал привата, правда не HTTP, то долго игрались, но потом оказалось, что на самом терминале нет тот протокол был установлен. Обнаружили это только когда приват решил к нам прислать их специалиста по настройке терминала. В инструкциях у них нигде такие моменты почти не описаны. И как оказалось, то нужные настройки можно получить просто позвоним оператору, сказать конкретно что именно нужно и они их высылают на терминал тут же. достаточно его перезагрузить. У нас было похожее - отправляли на терминал данные, он загорался, начинал пищать, но в ответ ошибка подключения была. Как разобрались - больше проблем не было и настройка терминала заняла 5 мин.

mfadmin_2024 Подменю пользователя
сообщение 28.09.24, 9:32
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

gesha2281 @ Сегодня, 9:48 * ,
Спасибо большое, сегодня позвоню в Приват перепроверим что они там прописали именно JSON протокол. Хотя через тестовую их программу вроде они там как раз JSON протоколом ту же каманду отправляют и получают ответ, но правда там екзешник - что там внутри и на каком языке отправляется точно не понятно.

Anderson @ Вчера, 22:51 * ,
Мы так с Вами может лет через пять к сути доберемся ))
Конечно читал инструкцию, более того Приват сам декларирует что все его терминалы работают именно по протоколу JSON.
И про ВебЧек я вспомнил чтоб мне не советовали установить ВебЧек и через него работать - оно так можно, но не хочу.
И терминал в розетку не забыл включить.
И соединение и IP адрес проверил.




mfadmin_2024 Подменю пользователя
сообщение 28.09.24, 13:48
Сообщение #7

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

mfadmin_2024 @ Сегодня, 10:32 * ,
Перепроверили, JSON протокол включен на POS-термсинале, вроде все ок.
Через эмулятор от ПриватБанка POS-терминал работает и команды выполняет, а вот напрямую из 1С нет, пищит и выдает ошибку:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Помилка при виклику методу контексту (Получить): Помилка роботи з Інтернет: Unsupported protocol

Anderson Подменю пользователя
сообщение 28.09.24, 19:40
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 94
Из: Одесса
Спасибо сказали: 12 раз
Рейтинг: 14.4

Цитата(mfadmin_2024 @ 28.09.24, 14:48) *
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(38)}: Помилка при виклику методу контексту (Получить): Помилка роботи з Інтернет: Unsupported protocol

Ну если он по http работает то ок. Но что вы пытаетесь получить(т.е GET) через метод получить? Попробуйте POST.

Цитата(mfadmin_2024 @ 28.09.24, 10:32) *
Конечно читал инструкцию, более того Приват сам декларирует что все его терминалы работают именно по протоколу JSON.

Просто я встречал работу через драйвер Addin.a_ingenicopb1c81 , JSON это уже интересней.

mfadmin_2024 Подменю пользователя
сообщение 28.09.24, 20:57
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Anderson @ Сегодня, 20:40 * ,
Переписал на POST, но ничего не поменялось (((
Сервер = "192.168.10.123";
Порт = 2000;
Попытка
    HTTPСоединение = Новый HTTPСоединение(Сервер,Порт,,,,30,,Ложь);
Исключение
    Сообщить("1 " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

//структура для JSON
Данные = Новый Структура();
Данные.Вставить("method", "PingDevice");
Данные.Вставить("step", 0);

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);
ЗапросJSON = ЗаписьJSON.Закрыть();

HTTPЗапрос = Новый HTTPЗапрос(ЗапросJSON);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");

//Закидываем JSON в тело
HTTPЗапрос.УстановитьТелоИзСтроки(ЗапросJSON, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
Попытка
    Результат = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);    
//    Результат = HTTPСоединение.Получить(HTTPЗапрос);
    Сообщить(Результат);
Исключение
    ОписаниеОшибки = ИнформацияОбОшибке().Описание;
    Сообщить("2 " + ОписаниеОшибки());
КонецПопытки;


mfadmin_2024 Подменю пользователя
сообщение 30.09.24, 7:57
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

mfadmin_2024 @ 28.09.24, 21:57 * ,
В описании вот нашел еще такое:
Основа цього протоколу (далі - Протокол) - формат обміну даними JSON. Для спрощення обміну даними, байтові послідовності JSON завершуються символами-термінаторами (делімітерами) 0x00 (як рядки в мові С). Застосування делімітера покликане слугувати заміною керуючим ASCII кодам, що застосовуються в подібних протоколах. Протокол єдиний для всіх типів підключення. Внаслідок цієї установки, у разі роботи з послідовним портом, він виконує роль протоколу канального рівня. У разі IEEE 802.x, оскільки дейтаграми упаковуються в TCP/IP, протокол стає прикладним, не змінюючись за змістом.

Наприклад:
Вихідний JSON рядок:
{"method":"GetTerminalInfo","step":0}
Вихідний JSON [] byte:
0x7b, 0x22, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x3a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x2c, 0x22, 0x73, 0x74, 0x65,
0x70, 0x22, 0x3a, 0x30, 0x7d
NULL-terminated JSON:
0x7b, 0x22, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x3a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x65,
0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x2c, 0x22, 0x73, 0x74, 0x65,
0x70, 0x22, 0x3a, 0x30, 0x7d, 0x00

Но как это применить в 1С - не понимаю.

alexxbely Подменю пользователя
сообщение 30.09.24, 8:10
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 3 раз
Рейтинг: 3

mfadmin_2024 @ Сегодня, 8:57 * , обмін йде через ТСР, наскільки я пам'ятаю. Вам треба сформований JSON перегнати в binary data, відправити через ТСР на відповідний порт, а потім слухати його, отримувати відповідь в вигляді binary data, конвертувати в текст, прочитати як JSON і далі працювати вже з цим об'єктом

Спасибо сказали: mfadmin_2024,

mfadmin_2024 Подменю пользователя
сообщение 30.09.24, 8:27
Сообщение #12

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

alexxbely @ Сегодня, 9:10 * ,
Дякую. Дуже цікава думка, буду намагатись її втілити у життя сьогодні. Відпишусь.

Petre Подменю пользователя
сообщение 30.09.24, 17:56
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2909
Из: Київ, Україна
Спасибо сказали: 1162 раз
Рейтинг: 1248.1

QUOTE (mfadmin_2024 @ 30.09.24, 7:57) *
Но как это применить в 1С - не понимаю.

Символ(0)


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: mfadmin_2024,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 05.11.24, 19:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!