Задать вопрос

Как напечатать чек с маркировкой через атол?

Отправляю задание JSON на кассу атол.
Все работало, но до момента работы с ЧЗ.

Вот пример задания:

{
    "type": "sell",
    "validateMarkingCodes": false,
    "taxationType": "usnIncome",
    "ignoreNonFiscalPrintErrors": false,
    "electronically": false,
    "operator": {
        "name": "Иванова И. О."
    },
    "clientInfo": {
        "emailOrPhone": ""
    },
    "items": [
        {
            "type": "position",
            "name": "Бинт",
            "price": 30,
            "quantity": 1,
            "amount": 30,
            "paymentMethod": "fullPayment",
            "paymentObject": "commodityWithMarking",
            "tax": {
                "type": "none"
            },
            "measurementUnit": "piece",
            "imcParams": {
                "imcType": "auto",
                "imc": "MDEwNDY2MDM3NjAzNzIwNjIxNXAoYUZFUiVoTG81SR05MUVFMTAdOTJQa2VPV0tpaU9ucy9RbmkxWXBRWklpbUNDVFBLdHpIN0RWMXFic2pDdTBnPQ==",
                "itemEstimatedStatus": "itemPieceSold",
                "imcModeProcessing": 0
            }
        }
    ],
    "payments": [
        {
            "type": "cash",
            "sum": 0
        },
        {
            "type": "electronically",
            "sum": 30
        },
        {
            "type": "prepaid",
            "sum": 0
        },
        {
            "type": "credit",
            "sum": 0
        }
    ],
    "total": 30
}

Если стоит параметр "validateMarkingCodes": false, - то Некорректный код маркировки.
Если стоит параметр "validateMarkingCodes": true, - то Документ закрыт - операция невозможна.

imc - кодирую в php через base64 и отправляю.
  • Вопрос задан
  • 349 просмотров
Подписаться 4 Сложный Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Stepik
    PHP (pro)
    2 недели
    Далее
Пригласить эксперта
Ответы на вопрос 1
Проблема в base64-кодировке IMC: строка содержит GS (0x1D), который JSON интерпретирует как разделитель - нужен escape как \u001d.

Фикс JSON
1. IMC escape: В PHP base64_encode, но замени GS на \u001d:

$imc = str_replace("\x1D", '\\u001d', base64_encode($raw_imc));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы