VitalyKravtsov2016 / WebPrinter

0 stars 0 forks source link

Передача QR кода в АСУ #12

Closed ErmacTheSoul closed 7 months ago

ErmacTheSoul commented 8 months ago

[24.01.2024 15:49:54.526 ] [00004776] [DEBUG] POST: http://fbox.ngrok.io/order/create/ [24.01.2024 15:49:54.526 ] [00004776] [DEBUG] => {"qr_code":"","number":1,"receipt_type":"order","products":[{"name":"10ГР. SWEET BOX МАРМЕЛАД С ИГРУШКОЙ В КО","barcode":"6942971507123","amount":1000,"units":1,"price":115000,"product_price":115000,"vat":0,"vat_percent":0,"discount":0,"discount_percent":0,"other":0,"labels":[],"class_code":"02007002003000000","package_code":0,"owner_type":0,"comission_info":{"inn":"","pinfl":""}}],"time":"2024-01-24 14:49:53","cashier":"ts","received_cash":115000,"change":0,"received_card":0,"open_cashbox":false,"send_email":false} [24.01.2024 15:49:58.057 ] [00004776] [DEBUG] <= { "data": { "terminal_id": "UZ170703100597", "receipt_count": 6319, "date_time": "20240124144953", "fiscal_sign": "561134697093", "applet_version": "0300", "qr_url": "https://ofd.soliq.uz/check?t=UZ170703100597&r=6319&c=20240124144953&s=561134697093", "cash_box_number": null }, "error": null, "is_success": true } [24.01.2024 15:49:58.057 ] [00004776] [DEBUG] ToleFiscalPrinter.EndFiscalReceipt(False)=0

при продаже есть поле qr_url, передаёт ли OPOS это поле на кассу? для дальнейшего сохранения в БД

ErmacTheSoul commented 7 months ago

Вопрос от разработчика АСУ:

"Поле добавить не проблема, а где брать значение для нового поля (QR код чека продажи)? И какого размера может быть это значение?"

Dafafgh commented 7 months ago

можно поставить вопрос в первую очередь? нам нужно еще создать задание на доработку АСУ

VitalyKravtsov2016 commented 7 months ago

Добавил методы для чтения и установки полей: https://github.com/VitalyKravtsov2016/WebPrinter/releases/tag/15

ErmacTheSoul commented 7 months ago

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

VitalyKravtsov2016 commented 7 months ago

Достаточно посмотреть описание документов. Позиция чека: DIO_SET_RECITEM_JSON_FIELD = 106; - установка поля позиции чека Допустимые значения: name, barcode, amount, unit_name, units, price, product_price, vat, vat_percent, discount, discount_percent, other, labels, class_code, package_code, owner_type,

И так далее.

Dafafgh commented 7 months ago

как правильно передавать поля? (106, owner_type, '1')? не получается

[30.01.2024 12:01:29.970 ] [00012004] [DEBUG] ToleFiscalPrinter.DirectIO(106, 0, '1') [30.01.2024 12:01:29.971 ] [00012004] [DEBUG] ToleFiscalPrinter.DirectIO(106, 0, '1')=0

[30.01.2024 12:03:52.258 ] [00012004] [DEBUG] ToleFiscalPrinter.DirectIO(106, 1, 'owner_type') [30.01.2024 12:03:52.261 ] [00012004] [DEBUG] ToleFiscalPrinter.DirectIO(106, 1, 'owner_type')=0

Безымянный SHTRIH-M-OPOS-1_2024.01.30.log

VitalyKravtsov2016 commented 7 months ago

Нужно передавать: Название поля;Значение поля Например: DirectIO(106, 0, 'owner_type;1')

Dafafgh commented 7 months ago

получилось, спасибо!

Dafafgh commented 7 months ago

по получению QR, не понятно как действовать. можно так же пошагово разобрать?

qr_url приходит в ответе от сервера, после успешного формирования транзакции продажи. как и в какой момент приложение его может перехватить? Т.е. как вижу приложение формирует чек, заканчивая его командой printrectotal и endfiscalreciept. дальше приложение ждет ответа от драйвера и вроде бы никаких команд не отправляет.

в какой момент и какую команду приложение должно отправить что бы получить qr_url? DIO_GET_RESPONSE_JSON_FIELD = 104? DirectIO(104, 0, 'Data.qr_url')? DirectIO(104, 0, 'qr_url')?

VitalyKravtsov2016 commented 7 months ago

После успешного вызова endFiscalReceipt нужно вызвать: DirectIO(102, 0, 'Data.qr_url') или DirectIO(104, 0, 'Data.qr_url') DIO_GET_RECEIPT_RESPONSE_FIELD = 102; - запрос поля ответа последнего чека DIO_GET_RESPONSE_JSON_FIELD = 104; - запрос поля последнего ответа сервера

ErmacTheSoul commented 7 months ago

пробуем делать возврат, по логу якобы QR-код передаётся, но потом все равно ошибка, посмотрите пожалуйста:

[31.01.2024 18:29:26.646 ] [00007924] [DEBUG] ToleFiscalPrinter.DirectIO(105, 0, 'qr_url;https://ofd.soliq.uz/check?t=UZ170703100597&r=6392&c=20240131172901&s=303136350985') [31.01.2024 18:29:26.646 ] [00007924] [DEBUG] ToleFiscalPrinter.DirectIO(105, 0, 'qr_url;https://ofd.soliq.uz/check?t=UZ170703100597&r=6392&c=20240131172901&s=303136350985')=0 [31.01.2024 18:29:26.662 ] [00007924] [DEBUG] ToleFiscalPrinter.PrintRecMessage('Транз. продажи: 74 (1150,00 тг)') [31.01.2024 18:29:26.662 ] [00007924] [DEBUG] ToleFiscalPrinter.PrintRecMessage('Транз. продажи: 74 (1150,00 тг)')=0 [31.01.2024 18:29:26.678 ] [00007924] [DEBUG] ToleFiscalPrinter.EndFiscalReceipt(False) [31.01.2024 18:29:26.678 ] [00007924] [DEBUG] POST: http://fbox.ngrok.io/order/refuse/ [31.01.2024 18:29:26.678 ] [00007924] [DEBUG] => {"qr_code":"","number":1,"receipt_type":"order","products":[{"name":"10ГР. SWEET BOX МАРМЕЛАД С ИГРУШКОЙ В КО","barcode":"","amount":1000,"units":1,"price":115000,"product_price":115000,"vat":12321,"vat_percent":12,"discount":0,"discount_percent":0,"other":0,"labels":[],"class_code":"02007002003000000","package_code":0,"owner_type":0,"comission_info":{"inn":"","pinfl":""}}],"time":"2024-01-31 17:29:31","cashier":"ts","received_cash":115000,"change":0,"received_card":0,"open_cashbox":false,"send_email":false} [31.01.2024 18:29:27.990 ] [00007924] [DEBUG] <= { "data": null, "error": { "code": 65277, "message": "no refund info passed", "data": "no refund info passed" }, "is_success": false } [31.01.2024 18:29:27.990 ] [00007924] [ERROR] OPOS_E_EXTENDED, 65277, "no refund info passed" [31.01.2024 18:29:27.990 ] [00007924] [DEBUG] ToleFiscalPrinter.EndFiscalReceipt(False)=114

SHTRIH-M-OPOS-1_2024.01.31.log

VitalyKravtsov2016 commented 7 months ago

Поправил драйвер: https://github.com/VitalyKravtsov2016/WebPrinter/releases/tag/18 Сейчас приложение вызывает: DirectIO(105, 0, 'qr_url;https://ofd.soliq.uz/check?t=UZ170703100597&r=6392&c=20240131172901&s=303136350985') Поле чека имеет название 'qr_code'. Нужно вызывать: DirectIO(105, 0, 'qr_code;https://ofd.soliq.uz/check?t=UZ170703100597&r=6392&c=20240131172901&s=303136350985')

Dafafgh commented 7 months ago

поле пустое

SHTRIH-M-OPOS-1_2024.01.31.log

[31.01.2024 19:47:48.295 ] [00007000] [DEBUG] ToleFiscalPrinter.DirectIO(105, 0, 'qr_code;https://ofd.soliq.uz/check?t=UZ170703100597&r=6395&c=20240131184736&s=020033556544') [31.01.2024 19:47:48.311 ] [00007000] [DEBUG] ToleFiscalPrinter.DirectIO(105, 0, 'qr_code;https://ofd.soliq.uz/check?t=UZ170703100597&r=6395&c=20240131184736&s=020033556544')=0 [31.01.2024 19:47:48.311 ] [00007000] [DEBUG] ToleFiscalPrinter.PrintRecMessage('Транз. продажи: 77 (1150,00 тг)') [31.01.2024 19:47:48.311 ] [00007000] [DEBUG] ToleFiscalPrinter.PrintRecMessage('Транз. продажи: 77 (1150,00 тг)')=0 [31.01.2024 19:47:48.326 ] [00007000] [DEBUG] ToleFiscalPrinter.EndFiscalReceipt(False) [31.01.2024 19:47:48.326 ] [00007000] [DEBUG] POST: http://fbox.ngrok.io/order/refuse/ [31.01.2024 19:47:48.326 ] [00007000] [DEBUG] => {"qr_code":"","number":1,"receipt_type":"order","products":[{"name":"10ГР. SWEET BOX МАРМЕЛАД С ИГРУШКОЙ В КО","barcode":"","amount":1000,"units":1,"price":115000,"product_price":115000,"vat":12321,"vat_percent":12,"discount":0,"discount_percent":0,"other":0,"labels":[],"class_code":"02007002003000000","package_code":0,"owner_type":0,"comission_info":{"inn":"","pinfl":""}}],"time":"2024-01-31 18:47:53","cashier":"ts","received_cash":115000,"change":0,"received_card":0,"open_cashbox":false,"send_email":false} [31.01.2024 19:47:49.373 ] [00007000] [DEBUG] <= { "data": null, "error": { "code": 65277, "message": "no refund info passed", "data": "no refund info passed" }, "is_success": false }

Dafafgh commented 7 months ago

проблема не в АСУ?

VitalyKravtsov2016 commented 7 months ago

Поправил: https://github.com/VitalyKravtsov2016/WebPrinter/releases/tag/19

Dafafgh commented 7 months ago

возврат прошел, вопрос по штрихкоду, он не заполнился. и в receipt_type должно order указыватьсчя? "barcode":""

SHTRIH-M-OPOS-1_2024.02.01.log

[01.02.2024 00:41:29.815 ] [00001828] [DEBUG] POST: http://fbox.ngrok.io/order/refuse/ [01.02.2024 00:41:29.815 ] [00001828] [DEBUG] => {"qr_code":"https:\/\/ofd.soliq.uz\/check?t=UZ170703100597&r=6400&c=20240131234118&s=432227303062","number":1,"receipt_type":"order","products":[{"name":"10ГР. SWEET BOX МАРМЕЛАД С ИГРУШКОЙ В КО","barcode":"","amount":1000,"units":1,"price":115000,"product_price":115000,"vat":12321,"vat_percent":12,"discount":0,"discount_percent":0,"other":0,"labels":[],"class_code":"02007002003000000","package_code":0,"owner_type":0,"comission_info":{"inn":"","pinfl":""}}],"time":"2024-01-31 23:41:34","cashier":"ts","received_cash":115000,"change":0,"received_card":0,"open_cashbox":false,"send_email":false} [01.02.2024 00:41:33.361 ] [00001828] [DEBUG] <= { "data": { "terminal_id": "UZ170703100597", "receipt_count": 6401, "date_time": "20240131234134", "fiscal_sign": "908199495303", "applet_version": "0300", "qr_url": "https://ofd.soliq.uz/check?t=UZ170703100597&r=6401&c=20240131234134&s=908199495303", "cash_box_number": "1" }, "error": null, "is_success": true }

VitalyKravtsov2016 commented 7 months ago

Поправил: https://github.com/VitalyKravtsov2016/WebPrinter/releases/tag/20