Перейти к основному содержимому

Формирование второго чека

Формирование второго чека

В формате ФФД 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.emailEmail покупателя. Обязателен, если не передан 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

  1. Закодируйте тело запроса в base64URL без символов =.
  2. Добавьте пароль магазина (Пароль #1) к полученной строке и вычислите Signature по выбранному алгоритму (например, MD5).
  3. Закодируйте Signature в base64 и удалите символы =.
  4. Соберите финальный запрос: <тело_в_base64>.<signature_в_base64>.
  5. Отправьте 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Тип фискального события (если предоставлен).