Формирование второго чека
Формирование второго чека
В формате ФФД 1.2 магазины, принимающие оплаты с признаками способа расчета «аванс», «предоплата» или «предоплата 100%», должны после поставки товара или оказания услуги выбить итоговый кассовый чек с признаком способа расчета «полный расчёт».
Сервис доступен только магазинам и партнёрам, которые принимают платежи и проводят фискализацию через Robokassa. Услуга бесплатна, но на одну операцию можно выбить не более двух чеков.
Для второго (итогового) чека параметр payment_method принимает значение full_payment, а в параметре operation нужно передавать только значение sell.
Пример запроса
Основные параметры совпадают с первым фискальным чеком. Дополнительно требуются параметры ниже.
{
"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",
"nomenclature_code": "04620034587217"
}
],
"client": {
"email": "test@test.ru",
"phone": "71234567890"
},
"payments": [
{
"type": 2,
"sum": 100
}
],
"vats": [
{
"type": "none",
"sum": 0
}
]
}
Параметры запроса
| Параметр | Значение |
|---|---|
merchantId | Идентификатор магазина в Robokassa, указанный при создании магазина. |
id | Номер заказа для итогового чека. Целое число от 1 до 9223372036854775807, не должно совпадать с originId. |
originId | Номер заказа (InvId), по которому уже есть чек и требуется сформировать второй чек. Целое число. |
operation | Тип чека. Для итогового чека всегда sell. |
url | Адрес сайта, на котором совершена продажа. |
total | Итоговая сумма чека в рублях. Положительное число: целая часть до 8 знаков, дробная — до 2. |
client.email | Email покупателя. Обязателен, если не передан client.phone. |
client.phone | Телефон покупателя. Обязателен, если не передан client.email. |
payments.type | Тип платежа. Для зачёта аванса используйте значение 2 — предварительная оплата. |
payments.sum | Сумма платежа. Положительное число с целой частью до 8 знаков и дробной до 2. |
vats.type | Налоговая ставка: none, vat0, vat5, vat7, vat10, vat110, vat20,vat22, vat120, vat122, vat105, vat107. |
vats.sum | Сумма налога для соответствующего товара. |
Формирование запроса в BASE64URL
- Закодируйте тело запроса в base64URL без символов
=. - Добавьте пароль магазина (Пароль #1) к полученной строке и вычислите
Signatureпо выбранному алгоритму (например, MD5). - Закодируйте
Signatureв base64 и удалите символы=. - Соберите финальный запрос:
<тело_в_base64>.<signature_в_base64>. - Отправьте POST-запрос на URL
https://ws.roboxchange.com/RoboFiscal/Receipt/Attach.
Пример подписи и итоговой строки:
eyJtZXJjaGFudElkIjogInJvYm9rYXNzYV9zZWxsIiwiaWQiOiAiMTQiLCJvcmlnaW5JZCI6ICIxMyIsIm9wZXJhdGlvbiI6ICJzZWxsIiwKInNubyI6ICJvc24iLCJ1cmwiOiAiaHR0cHM6Ly93d3cucm9ib2thc3NhLnJ1LyIsInRvdGFsIjogMTAwLCJpdGVtcyI6IFt7Im5hbWUiOiAi0KLQvtCy0LDRgCIsInF1YW50aXR5IjogMSwic3VtIjogMTAwLCJ0YXgiOiAibm9uZSIsInBheW1lbnRfbWV0aG9kIjogImZ1bGxfcGF5bWVudCIsInBheW1lbnRfb2JqZWN0IjogImNvbW1vZGl0eSJ9XSwiY2xpZW50IjogeyJlbWFpbCI6ICJ0ZXN0QHRlc3QucnUiLCJwaG9uZSI6ICI3MTIzNDU2Nzg5MCJ9LCJwYXltZW50cyI6IFt7InR5cGUiOiAyLCJzdW0iOiAxMDB9XSwidmF0cyI6IFt7InR5cGUiOiAibm9uZSIsInN1bSI6IDB9XX0
Ответ на формирование чека
Успешный ответ сервиса:
{
"ResultCode": "0",
"ResultDescription": "ok"
}
| Параметр | Значение |
|---|---|
ResultCode | Статус получения данных. Возможные значения: 1 — ожидание регистрации, 2 — чек зарегистрирован, 3 — ошибка регистрации, 1000 — внутренняя ошибка запроса. |
ResultDescription | Описание результата обработки. |
OpKey | Идентификатор операции. |
Получение статуса чека
Создайте запрос в кодировке UTF-8:
{
"merchantId": "robokassa_state",
"id": "34"
}
| Параметр | Значение |
|---|---|
merchantId | Идентификатор магазина, указанный при создании. |
id | Идентификатор операции. |
Вычислите Signature тем же способом, что и для формирования чека, и отправьте POST-запрос на https://ws.roboxchange.com/RoboFiscal/Receipt/Status.
Пример ответа статуса
{
"Code": "2",
"Description": "Done",
"FnNumber": "9289000100348548",
"FiscalDocumentNumber": "135771",
"FiscalDocumentAttribute": "207899681",
"FiscalDate": null,
"FiscalType": null
}
| Параметр | Значение |
|---|---|
Code | Статус регистрации: 1 — ожидание регистрации, 2 — чек зарегистрирован, 3 — ошибка регистрации, 1000 — ошибка обработки запроса. |
Description | Описание результата формирования чека. |
FnNumber | Номер фискального накопителя. |
FiscalDocumentNumber | Фискальный номер документа. |
FiscalDocumentAttribute | Фискальный признак документа. |
FiscalDate | Дата и время формирования фискального чека. |
FiscalType | Тип фискального события (если предоставлен). |