В связи с переходом на новый формат передачи фискальных данных в ФНС (формат 1.1), магазины осуществляющие расчеты с признаками способа расчета «аванс», «предоплата», «предоплата 100%» обязаны после доставки товаров (оказания услуг) выдавать покупателю итоговый кассовый чек на общую сумму всех внесенных покупателем авансовых платежей (предоплат).
Для этого мы реализовали возможность сформировать итоговый кассовый чек, с признаком способа расчёта «полный расчёт».
Сервис актуален только для магазинов/партнеров, принимающих платежи и осуществляющих фискализацию через Robokassa.
Сервис бесплатный (но можно выбить максимум 2 чека по одной операции).
В параметре operation передается значение sell, другие варианты игнорируются.
Основные параметры запроса соответствуют параметрам первого фискального чека. Помимо этого необходимо добавить дополнительные обязательные параметры.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36{ "merchantId": "robokassa_sell", "id": "14", "originId": "13", "operation": "sell", "sno": "osn", "url": "https://www.robokassa.ru/", "total": 100, "items": [ { "name": "Товар", "quantity": 1, "sum": 100, "tax": "none", "payment_method": "full_payment", "payment_object": "commodity" } ], "client": { "email": "[email protected]", "phone": "71234567890" }, "payments": [ { "type": 2, "sum": 100 } ], "vats": [ { "type": "none", "sum": 0 } ] }
Описание параметров
Параметр
Значение
Идентификатор магазина в Robokassa, который Вы придумали при создании магазина.
Номер заказа магазина (не должен совпадать с OriginId). Значение только целое число.
Номер заказа магазина (InvId), по которому уже есть чек и для которого выбивается второй чек. Значение только целое число.
Тип чека. Может принимать только одно значение Sell.
Адрес сайта, на котором осуществлена продажа.
Итоговая сумма чека в рублях. Десятичное положительное число: целая часть не более 8 знаков, дробная часть не более 2 знаков.
Данные о покупателе. Содержит любое из полей или все поля одновременно.
Включает строки:
Эл. почта покупателя.
Телефон покупателя.
Тип и сумма платежа или чека.
Включает строки:
Тип платежа. Должен принимать значение: «2» – предварительная оплата (зачет аванса и (или) предыдущих платежей).
Сумма платежа. Десятичное положительное число: целая часть не более 8 знаков, дробная часть не более 2 знаков.
Тип и сумма налога.
Применяется со значениями Type и Sum:
Налоговая ставка в ККТ. Определяется для каждого вида товара по отдельности, но за все единицы конкретного товара вместе.
Допустимые значение параметра Type:
Без НДС
НДС по ставке 0%
НДС чека по ставке 10%
НДС чека по расчетной ставке 10/110
НДС чека по ставке 20%
НДС чека по расчетной ставке 20/120
Сумма налога, посчитанная исходя из налоговой ставки. Определяется для каждого вида товара по отдельности, но за все единицы конкретного товара вместе. Десятичное положительное число: целая часть не более 8 знаков, дробная часть не более 2 знаков.
Взять весь запрос и при помощи кодировщика закодировать в base64.
После перекодирования нужно стереть все знаки =, если имеются.
Создаем Signature : для этого берем созданный запрос в base64 и приписываем к нему Пароль#1 магазина. Например, robokassatest
Теперь из полученной конструкции необходимо создать hash в соответствии с тем, что выбрано у магазина в Технических настройках (md5 или другое):
Чтобы собрать финальный запрос, который отправляется уже на URL для выбивания чека, необходимо полученный md5 снова зашифровать в base64:
После перекодирования нужно стереть все знаки =, если имеются.
Для завершения сборки запроса к URL, на котором выбивается чек, берем изначальное тело запроса в base64, ставим точку и приписываем полученный чуть выше signature от md5 в base64:
После перекодирования нужно стереть все знаки =, если имеются.
Отправьте этот запрос. Отправка должна быть методом POST на URL:
https://ws.roboxchange.com/RoboFiscal/Receipt/AttachЕсли все правильно сформировали, то должны получить ответ вида:
1 2 3 4{ "ResultCode": "0", "ResultDescription": "ok" }
Описание параметров
Параметр
Значение
Статус получения данных от Клиента.
Возможные значения:
Ожидание регистрации
Чек зарегистрирован
Ошибка регистрации чека
Внутренняя ошибка запроса
Описание результата обработки чека.
Идентификатор операции.
Для того чтобы узнать результат формирования фискального чека, необходимо создать запрос в кодировке UTF8:
1 2 3 4{ "merchantId": "robokassa_state", "id": "34" }
Описание параметров
Параметр
Значение
Идентификатор магазина, который вы придумали при создании магазина
Идентификатор операции
Затем аналогичным способом вычислить параметр Signatureи сформировать полноценный запрос на статус чека из первоначального тела запроса в base64.
URL отправки запроса методом POST
https://ws.roboxchange.com/RoboFiscal/Receipt/Status
Если все правильно сформировали, то должны получить ответ вида:
1 2 3 4 5 6 7 8 9{ "Code": "2", "Description": "Done", "FnNumber": "9289000100348548", "FiscalDocumentNumber": "135771", "FiscalDocumentAttribute": "207899681", "FiscalDate": null, "FiscalType": null }
Описание возвращаемых параметров
Параметр
Значение
Статус регистрации чека.
Возможные значения:
– Ожидание регистрации
– Чек зарегистрирован
– Ошибка регистрации чека
– Ошибка обработки запроса
Описание результата формирования чека
Номер ФН
Фискальный номер документа
Фискальный признак документа
Дата и время формирования фискального чека