Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Opublikuj swoje zlecenie za darmo i otrzymaj oferty od wykonawców freelancerów już minutę po opublikowaniu!

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


Załączniki 1

Wgląd do aplikacji jest dostępny tylko zarejestrowanym użytkownikom.
    Jeszcze 2 ofert jest ukrytych
  • Sergey Nazarenko
    29 października 2019, 23:59 |

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

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


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

  • Andrey Shamilov
    11 listopada 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



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

  • Sergey Nazarenko
    11 listopada 2019, 20:50 |

    /sale

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

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

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

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

  • Andrey Shamilov
    11 listopada 2019, 22:33 |

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

  • Sergey Nazarenko
    11 listopada 2019, 20:56 |

    /sale

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

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

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

  • Andrey Shamilov
    11 listopada 2019, 22:33 |

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

  • Sergey Nazarenko
    11 listopada 2019, 22:37 |

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

  • Andrey Shamilov
    11 listopada 2019, 23:10 |

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

  • Sergey Nazarenko
    11 listopada 2019, 21:27 |

    /sale

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

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

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

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

  • Andrey Shamilov
    11 listopada 2019, 22:35 |

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

  • Sergey Nazarenko
    11 listopada 2019, 22:38 |

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

  • Andrey Shamilov
    11 listopada 2019, 23:15 |

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

  • Sergey Nazarenko
    11 listopada 2019, 23:32 |

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

  • Andrey Shamilov
    11 listopada 2019, 23:34 |

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

  • Sergey Nazarenko
    11 listopada 2019, 21:41 |

    /sale

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

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

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

  • Andrey Shamilov
    11 listopada 2019, 23:04 |

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

  • Sergey Nazarenko
    11 listopada 2019, 22:10 |

    /withdraw

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

  • Andrey Shamilov
    11 listopada 2019, 23:23 |

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

  • Sergey Nazarenko
    11 listopada 2019, 23:39 |

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

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

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

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

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


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

  • Sergey Nazarenko
    11 listopada 2019, 22:17 |

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

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

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

  • Andrey Shamilov
    11 listopada 2019, 23:10 |

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

  • Sergey Nazarenko
    11 listopada 2019, 23:44 |

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

  • Andrey Shamilov
    11 listopada 2019, 23:25 |

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

  • Sergey Nazarenko
    11 listopada 2019, 23:43 |

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

  • Andrey Shamilov
    11 listopada 2019, 23:29 |

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

  • Sergey Nazarenko
    11 listopada 2019, 23:42 |

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

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

Aktualne zlecenia dla freelancerów w kategorii Bazy danych i SQL

Power BI

57 PLN

Dashboard działa na serwerze Google, trzeba przenieść całą logikę + kod Jakie umiejętności są potrzebne: wdrażanie procesów ETL na serwerze Linux + praca z BigQuery i Postgre Jest działający kod, który działa na Google, gdzie znajduje się sama baza danych, trzeba przenieść na…

PythonBazy danych i SQL ∙ 2 godziny 11 minut temu ∙ 4 oferty

Potrzebny specjalista 1C do poprawek i rozwoju

Szukam specjalisty z 1C do współpracy na freelansie. Obecnie już współpracuję z wykonawcą, który zapewnia wsparcie i obsługę systemu 1C. Jednak z powodu obciążenia wykonawcy pojawia się potrzeba szybkiego wykonania dodatkowych zadań, poprawek oraz opracowania nowej…

Bazy danych i SQL ∙ 2 dni 1 godzina temu ∙ 11 ofert

Przywracanie Instagrama po zablokowaniu

3 marca 2026 r. zablokowano Instagram z powodu naruszenia zasad. Uważam, że doszło do jakiegoś błędu, ponieważ strona była osobista z zdjęciami i filmami z prywatnych podróży. Nie pisałam komentarzy ani niczego innego. Wysłałam kilka razy odwołanie. Nie mogę pobrać swoich…

Bazy danych i SQLProgramowanie stron internetowych ∙ 2 dni 12 godzin temu ∙ 5 ofert

Usunąć problem niepełnego importu danych z plików Excel specyfikacji Nowej Poczty do 1C:

163 PLN

Cel: Istnieje przetwarzanie w 1C dotyczące ładowania specyfikacji Nowej Poczty. Z nieznanych powodów przestało ładować niektóre dane tabelaryczne. Należy znaleźć przyczynę i usunąć problem niepełnego importu danych z plików Excel specyfikacji Nowej Poczty do 1C: Mały Biznes.…

Administracja systemem i sieciąBazy danych i SQL ∙ 5 dni 19 godzin temu ∙ 16 ofert

System ewidencji, planowania i sprzedaży dla farmy grzybowej

2206 PLN

Oto pełny, finalny tekst Technicznego Zadania (TZ). Łączy on wszystkie Twoje wymagania: 16 komór, 20 kontrahentów, harmonogram po dniach, ewidencja opakowań, obliczenie rentowności oraz obowiązkowy podział na trzy gatunki grzybów. Możesz całkowicie skopiować ten tekst i wysłać…

Bazy danych i SQLZarządzanie klientami i CRM ∙ 7 dni 23 godziny temu ∙ 59 ofert

Zleceniodawca
Zlecenie zostało opublikowane
6 lat temu
721 wyświetleń