Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Розмістіть свій проєкт безплатно та почніть отримувати пропозиції від фрилансерів-виконавців уже через хвилини після публікації!

Подключение онлайн кассы. Настройка API, HTTP; POST, Контейнер JSON


Додатки 1

Перегляд додатків доступний тільки зареєстрованим користувачам.
  • Сергей Назаренко
    29 жовтня 2019, 23:59 |

    А у Вас более весомой документации по API взаимодействия с кассами нет?

    А то по тому, что Вы перечислили - сложно что-то оценивать.


    И еще в файл Вашей конфигурации заглянуть бы, чтобы понимать как у Вас сейчас информация о кассах в базе хранится.

  • Andrey Shamilov
    11 листопада 2019, 20:17 |

    Добрый вечер. Сергей.


    В связи с загруженностью, не смог во время отреагировать на заданный Вами вопрос, на данный момент вопрос по интеграции онлайн кассы приоритетный.

    imageВысылаю Вам фото самой онлайн кассы (ОС - Android)


    а так же  полный текст APİ,  

    Описание API SmartOne Cashbox


    В качестве транспорта для API выступает HTTP  проткол, порт  по умолчанию 8008, запросы отправляются методом POST.  Запрос имеет два параметра: data - сообщение и sign - подпись. Контейнером сообщения является JSON. Строка с json кодируется Base64, знаки «равно» экранируются с помощью urlencode.

    Подпись генерируется как base64encode от sha1 (в hex) от параметра data + merchantID. Параметр merchantID выдается при регистрации кассы.

    Протокол включает а себя следующие запросы:

    • /sale - отправка счета продажи в SmartOne Cashbox для оплаты и фискализации
    • /refund - отправка счета возврата
    • /check_status - проверка состояния счета (только при работе с кассой)
    • /x_report – X отчет
    • /open_shift – открытие смены
    • /close_shift – закрытие смены
    • /deposit – внесение в кассу
    • /withdraw - инкассация


    • Отправка счета в SmartOne Cashbox
    • /sale

    Параметры:

    {

     "docNumber":  string, номер документа в системе учета,

     "employeeName": string, ФИО кассира,

     "amount":  integer, сумма документа в копейках,

     "currency": string, наименование валюты,

     "items": список товаров/услуг по счету

        [{

         "itemId": string, код товара/услуги в системе учета

                 "itemName": string, наименование товара/услуги

                 "itemQRCode": QR-code системы идентификации товара

                 "itemQty": integer, кол-во*1000

                 "itemAmount": integer, сумма к оплате в копейках

                 "discount": integer, сумма скидки в копейках

                 "itemTaxes": список налогов по позиции

                 [{

                      "taxName": string, наименование налога

                      "taxPrc": integer, процент налога*100

                   }

                   …

                 ]

            }

            ...

        ],


        "payments" : {   блок оплаты

                   "cashAmount": integer, сумма оплаты наличными в копейках

                   "cashlessAmount": integer, сумма оплаты безналичными в копейках

                   "otherAmount": integer, сумма оплаты прочими видами оплат в копейках

        }


    }

    Необязательные параметры: скидка, qr-code, налоги


    Возврат:

    {

     "status": "success" | "error"

     "code": integer, код ошибки:

                   0 – нет ошибки

                   1 – ошибка авторизации

                   2 – некорректный формат JSON

                   3 – не переданы обязательныве параметры

                   4 – сумма по документу не соответсвует сумме по позициям

                   5 – внутрення ошибка

                   6 – не открыта смена

                   7 – тип оплаты не поддерживается

                   8 – документ не полностью оплачен (при автоматической фискализации)

    "message": string, текст ошибки, опционально

    "documentID": integer, код документа в системе SmartOne Cashbox (при использовании кассы)


    "fiscalID": string, фискальный код документа (использовать для возврата)

    }


    • Отправка счета возврата в SmartOne Cashbox
    • /refund

    • Параметры запроса аналогичны счету продажи, дополнительно должен передаваться код документа продажи, товар которого возвращается:
    • "parentDocID ": string, фискальный код документа продажи
    • Параметры возврата аналогичны счету продажи.





    • Проверка состояния счета (только при работе с кассой)
    • /check_status

    Параметры:

    { "documentID": код счета }


    Возврат:

    {

       "status": "success" | "error"

       "code": integer, код ошибки:

                   0 – нет ошибки

                   1 – ошибка авторизации

                   2 – некорректный формат JSON

                   3 – не переданы обязательныве параметры


      "docStatus": integer:

                   0 – счет не закрыт

                   1 – счет закрыт


      "cashAmount": integer, сумма оплаты наличными в копейках

      "cashlessAmount": integer, сумма оплаты безналичными в копейках

      "transactionID": string, код транзакции оплаты картой

      "authCode": string, код авторизации

      "cardNum": string, номер платежной карты (в зависмости от платежной системы)

      "otherAmount": integer, сумма оплаты прочими видами оплат в копейках

      + блок записей счета, описанный в запросе /sale

    }


    • X отчет
    • /x_report

    Параметры:

    { "shiftID": код смены (только при работе с кассой), необязательный, по умолчанию – текущая открытая }


    Возврат:

    {

      "status": "success" | "error"

       "code": integer, код ошибки:

                   0 – нет ошибки

                   1 – ошибка авторизации

                   2 – некорректный формат JSON

                   6 – смена не найдена (по указанному коду или нет открытой смены в случае

                   отсутствия кода)

                   7 – тип оплаты не поддерживается (на кассе нет наличной оплаты)

      "shiftID": integer: код смены  (только при работе с кассой)

      "saleCount": integer: кол-во чеков продажи

      "saleSum": integer: сумма продаж

      "saleCashSum": integer: сумма продаж нал

      "saleCashlessSum": integer: сумма продаж безнал

      "saleCreditSum": integer: сумма продаж кредит

      "saleBonusSum": integer: сумма продаж бонусами

      "saleVatAmounts": integer: сумма налогов с продаж

      "depositCount": integer: кол-во внесений в кассу

      "depositSum": integer: итоговая сумма внесений за смену в копейках

      "withdrawCount": integer: кол-во инкассаций

      "withdrawSum": integer: итоговая сумма инкассаций за смену в копейках

      "moneyBackCount": integer: кол-во чеков возвратов

      "moneyBackSum": integer: сумма возвратов

      "moneyBackCashSum": integer: сумма возвратов нал

      "moneyBackCashlessSum": integer: сумма возвратов безнал

      "moneyBackCreditSum": integer: сумма возвратов кредит

      "moneyBackBonusSum": integer: сумма возвратов бонусами

      "moneyBackVatAmounts": integer: сумма налогов с возвратов

             }


    • Открытие смены
    • /open_shift

    Параметры:

    { "employeeName": string, ФИО кассира,

      "pincode": пин-код (опционально)}


    Возврат:

    {

      "status": "success" | "error"

      "shiftID": код смены(только при работе с кассой)

      "code": integer, код ошибки:

                   0 – нет ошибки

                   2 – некорректный формат JSON

                   5 – внутрення ошибка

                   6 – смена уже открыта

    }



    • Закрытие смены
    • /close_shift

    Параметры:

    { "employeeName": string, ФИО кассира }


    Возврат:

    {

      "status": "success" | "error"

      "code": integer, код ошибки:

                   0 – нет ошибки

                   2 – некорректный формат JSON

                   5 – внутрення ошибка

                   6 – не открыта смена

      отчет по смене: (см. X-отчет)

    }


    • Внесение
    • /deposit

    Параметры:

    {  

      "docNumber":  string, номер документа в системе учета, необязательно

      "employeeName": string, ФИО кассира,

      "amount":  integer, сумма документа в копейках,

      "currency": string, наименование валюты,

    }


    Возврат:

    {

      "status": "success" | "error"

      "code": integer, код ошибки:

                   0 – нет ошибки

                   2 – некорректный формат JSON

                   5 – внутрення ошибка

                   6 – не открыта смена

    "documentID": integer, код документа в системе SmartOne Cashbox

    "fiscalNum": string, фискальный код документа

    }


    • Икассация
    • /withdraw

    • Параметры запроса аналогичны запросу на внесение.






    • Пример



    • - merchant ID:
    • 9662a13f5b4f46dbb1751bbbf86ed402

    • - данные запроса:
    • {"docNumber":  "123","employeeName": "Иванов","amount":  15000,"currency": "AZN",
    •  "items": [{"itemId": "1111", "itemName": "Семечки", "itemQRCode": "", "itemQty": 2000,
    •  "itemAmount": 15000,"discount": 0,"itemTaxes": [{"taxName": "НДС","taxPrc": 1800}]}],
    •  "payments" : {"cashAmount": 15000,"cashlessAmount": 0,"otherAmount": 0}}

    • - параметр data:
    • eyJkb2NOdW1iZXIiOiAgIjEyMyIsImVtcGxveWVlTmFtZSI6ICLQmNCy0LDQvdC+0LIiLCJhbW91bnQiOiAgMTUwMDAsImN1cnJlbmN5IjogIkFaTiIsCiAiaXRlbXMiOiBbeyJpdGVtSWQiOiAiMTExMSIsICJpdGVtTmFtZSI6ICLQodC10LzQtdGH0LrQuCIsICJpdGVtUVJDb2RlIjogIiIsICJpdGVtUXR5IjogMjAwMCwKICJpdGVtQW1vdW50IjogMTUwMDAsImRpc2NvdW50IjogMCwiaXRlbVRheGVzIjogW3sidGF4TmFtZSI6ICLQndCU0KEiLCJ0YXhQcmMiOiAxODAwfV19XSwKICJwYXltZW50cyIgOiB7ImNhc2hBbW91bnQiOiAxNTAwMCwiY2FzaGxlc3NBbW91bnQiOiAwLCJvdGhlckFtb3VudCI6IDB9fQ%3D%3D

    • - sha1:
    • fce95529d72466191683e02b17a8b1204c165a49

    • - параметр sign:
    • ZmNlOTU1MjlkNzI0NjYxOTE2ODNlMDJiMTdhOGIxMjA0YzE2NWE0OQ%3D%3D



    Прошу ознакомиться.

  • Сергей Назаренко
    11 листопада 2019, 20:50 |

    /sale

      "itemQRCode": QR-code системы идентификации товара

    В каком формате передается этот QR-код?

    Строка, которую касса сама закодирует в соответствующий код?

    Или закодированная в Base64 картинка с уже готовым кодом?

  • Andrey Shamilov
    11 листопада 2019, 22:33 |

    Касса сама закодирует, так как в кассе встроен Token-генератор QR кода

  • Сергей Назаренко
    11 листопада 2019, 20:56 |

    /sale

    "currency": string, наименование валюты

    Названия валют как-то регламентируются?

    Или произвольное название передавать нужно (как в справочнике Валют будет написано), которое просто на печать выводится и нигде не проверяется?

  • Andrey Shamilov
    11 листопада 2019, 22:33 |

    Только одна Валюта АЗН (Азербайджанский манат)

  • Сергей Назаренко
    11 листопада 2019, 22:37 |

    Точно "АЗН" (кирилицей)?
    В примере "AZN".

  • Andrey Shamilov
    11 листопада 2019, 23:10 |

    нет латинецей - AZN

  • Сергей Назаренко
    11 листопада 2019, 21:27 |

    /sale

    "itemQty": integer, кол-во*1000

    Точно умножить на 1000?

    Т.е. если продаем 10 буханок хлеба, то выгружаем itemQty = 10 000?

    Кстати. В API нигде не указывается единица измерения количества.
    Нужно все переводить в базовые единицы измерения номенклатуры?
    Или это не важно - выгружаем указанное в документе количество (1 контейнер тапочек - значит itemQty = 1 000)?

  • Andrey Shamilov
    11 листопада 2019, 22:35 |

    1000 имеется в виду 1.000 три знака после точки. Единицу измерения необходимо будет передавать из справочника номенклатура.

  • Сергей Назаренко
    11 листопада 2019, 22:38 |

    Так нет ни метода выгрузки номенклатуры на кассу. Ни поля для указания единицы измерения, при выгрузке документа.

  • Andrey Shamilov
    11 листопада 2019, 23:15 |

    Просмотрел чек, единицу измерения передавать не нужно.

  • Сергей Назаренко
    11 листопада 2019, 23:32 |

    И пересчитывать количество в базовую единицу тоже не нужно? Сколько в документе указано (хоть штук, хоть вагонов) - столько и выгружаем?

  • Andrey Shamilov
    11 листопада 2019, 23:34 |

    Совершенно верно.

  • Сергей Назаренко
    11 листопада 2019, 21:41 |

    /sale

    "taxName": string, наименование налога

    Названия налогов как-то регламентируются?

    Или, как и с названием валюты, можно все, что угодно передавать - оно просто на печать пойдет (без каких-либо проверок)?

  • Andrey Shamilov
    11 листопада 2019, 23:04 |

    По видом налогооблажения отвечу после уточнения с компанией продающей кассовый апарат.

  • Сергей Назаренко
    11 листопада 2019, 22:10 |

    /withdraw

    Не приведен формат возвращаемых данных.
    Что возвращает данный метод?

  • Andrey Shamilov
    11 листопада 2019, 23:23 |

    Данное APİ было представлено со стороны продавца онлайн кассы. Можем с Вами вывести список необходимых вопросов для уточнения. Завтра я запишу небольшой видеообзор по кассе, по интерфейсу и функциональности, предоставлю распечатываемый на данный момент чек (с переводом на русский язык)

  • Сергей Назаренко
    11 листопада 2019, 23:39 |

    Из ключевых вопросов к производителю остаются:

    1. По названиям налогов (см. выше).

    2. По возвращаемому методом "/withdraw" значению.
    3. По единицам измерения номенклатуры (странно не различать проданных 10 штук от 10 вагонов).

    И еще интересуют вопросы:
    4. Как на кассу попадает номенклатура?

    5. Об авторизации. Большинство методов могут возвращать код ошибки "1 – ошибка авторизации". Но при этом, я нигде не заметил информации о том, как во время отправки запросов эта авторизация производится?


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

  • Сергей Назаренко
    11 листопада 2019, 22:17 |

    И еще в файл Вашей конфигурации заглянуть бы, чтобы понимать как у Вас сейчас информация о кассах в базе хранится.

    Вы на это так и не отреагировали.

    Причем, после прочтения спецификации, меня начала интересовать не только информация о кассах, но и состав и структура документов в конфигурации.

  • Andrey Shamilov
    11 листопада 2019, 23:10 |

    База новая, внедрение базы с онлайн кассами планируется одновременно. Файл dt предоставлю. Вид деятельности - Продажа одежды и обуви, в связи с чем планируется использование характеристик номенклатур, дисконтные и бонусные карты,  подарочные сертификаты,

  • Сергей Назаренко
    11 листопада 2019, 23:44 |

    Мне бы заглянуть в нее до того, как я оценю задачу. Если не в базу (dt), то хотя бы в конфигурацию (cf).

  • Andrey Shamilov
    11 листопада 2019, 23:25 |

    Как нам заявил продавец, драйвера у данного аппарата отсутствуют, связь осуществляется только по İP (протоколу http, порт 8008).

  • Сергей Назаренко
    11 листопада 2019, 23:43 |

    Связь по IP посредством HTTP-запросов - это идеальный вариант для взаимодействия с кассой из 1С. С драйверами часто проблемы разные бывают.

  • Andrey Shamilov
    11 листопада 2019, 23:29 |

    Есть ли у Вас Skype или Whats Up для более быстрого обмена и уточнения информации. Мой Whats Up +994 55 855 50 88

  • Сергей Назаренко
    11 листопада 2019, 23:42 |

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

    Ватсапа у меня нет. Но есть Скайп. Напишите мне в личные сообщения (я Вам написать не могу, т.к. у Вас заблокированы входящие сообщения), и я Вам там сообщу свой Скайп.

Актуальні фриланс-проєкти в категорії Бази даних та SQL

Power BI

700 UAH

Дашборд працює на гугл сервері, потрібно перенести всю логіку+код Які потрібні скіли: розгортання etl процесів на linux сервері + робота із BigQuery та Postgre Є робочий код, який працює на google, де є сама БД, потрібно перенести на інший сервер, можливо переписати код.

PythonБази даних та SQL ∙ 2 дні 17 годин тому ∙ 15 ставок

Потрібен спеціаліст 1С для доопрацювань та розробки

Шукаю фахівця з 1С для співпраці на фрілансі. Наразі вже працюю з підрядником, який забезпечує підтримку та обслуговування системи 1С. Проте через завантаженість підрядника виникає потреба в оперативному виконанні додаткових задач, доопрацювань та розробки нового функціоналу.…

Бази даних та SQL ∙ 4 дні 17 годин тому ∙ 11 ставок

Відновлення інстаграму після блокування

3 березня 2026 року заблокували інстаграм з причини порушення правил. Вважаю, що сталася якась помилка, оскільки сторінка була особистою з фото та відео особистих поїздок. Коментарі тощо я не писала ніде. Відправляла кілька разів на оскарження. Не можу скачати свої файли,…

Бази даних та SQLВеб-програмування ∙ 5 днів 4 години тому ∙ 5 ставок

Виправити проблему неповного імпорту даних з Excel-файлів специфікацій Нової Пошти в 1С:

2000 UAH

Мета: Є обробка в 1С по завантаженню специфікації Нової Пошти. З незрозумілих причин перестало підгружати деякі табличні дані. Потрібно знайти причину і усунути проблему неповного імпорту даних з Excel-файлів специфікацій Нової Пошти в 1С: Малий Бізнес. Поточний стан: В 1С…

Адміністрування систем та мережБази даних та SQL ∙ 8 днів 11 годин тому ∙ 16 ставок

Система обліку, планування та продажу для грибної ферми

27 000 UAH

Ось повний, фінальний текст Технічного завдання (ТЗ). Він об'єднує всі ваші вимоги: 16 камер, 20 контрагентів, розклад по днях, облік тари, розрахунок рентабельності та обов'язковий поділ на три сорти грибів. Ви можете повністю скопіювати цей текст і надсилати розробникам або…

Бази даних та SQLУправління клієнтами та CRM ∙ 10 днів 15 годин тому ∙ 61 ставка

Замовник
Проєкт опублікований
6 років тому
721 перегляд