🧾 Работа с чеками (54-ФЗ)
Подробное руководство по работе с онлайн-чеками согласно российскому законодательству.
📋 Обзор
CloudPayments SDK полностью поддерживает требования Федерального закона №54-ФЗ "О применении контрольно-кассовой техники". SDK автоматически формирует и отправляет электронные чеки в налоговую через ОФД (Оператор Фискальных Данных).
Что включает поддержка 54-ФЗ:
✅ Автоматическое формирование чеков для всех платежей
✅ Отправка в налоговую через сертифицированный ОФД
✅ Email/SMS уведомления покупателям
✅ Все типы предметов расчета (товары, услуги, работы)
✅ Различные системы налогообложения (ОСН, УСН, ЕНВД и др.)
✅ БСО поддержка для услуг
✅ Рекурентные платежи с автоматическими чеками
⚠️ Важно: Передача данных в CloudPayments API
CloudPayments API имеет определенную специфику работы с параметрами. Данные можно передавать двумя способами:
1. Через параметры модуля (рекомендуемый способ)
const paymentData: IPaymentData = {
publicId: 'pk_test_...',
amount: '1000.00',
currency: 'RUB',
receipt: {
/* чек */
},
payer: {
/* данные покупателя */
},
recurrent: {
/* настройки подписки */
},
};
2. Через jsonData (альтернативный способ)
const paymentData: IPaymentData = {
publicId: 'pk_test_...',
amount: '1000.00',
currency: 'RUB',
jsonData: {
receipt: {
/* чек */
},
payer: {
/* данные покупателя */
},
recurrent: {
/* настройки подписки */
},
},
};
💡 Важно: В силу определенных нюансов CloudPayments API, данные на уровне модуля могут собираться или разбираться как на нашей стороне, так и на стороне SDK. Если что-то не получается передать через параметры модуля или не работает корректно - попробуйте передать эти данные через
jsonData
!
🏗️ Структура типов
Receipt - Чек онлайн-кассы
interface Receipt {
items: ReceiptItem[]; // Список товаров/услуг (обязательно)
taxationSystem: number; // Система налогообложения (обязательно)
email?: string; // Email для отправки чека
phone?: string; // Телефон для SMS
isBso?: boolean; // Признак БСО (false = чек, true = БСО)
amounts?: Amounts; // Детализация по способам оплаты
}
ReceiptItem - Позиция в чеке
interface ReceiptItem {
label: string; // Название товара/услуги
price: number; // Цена за единицу
quantity: number; // Количество
amount: number; // Общая сумма (price × quantity)
vat?: number | null; // Ставка НДС (20, 10, 0 или null)
method: number; // Способ расчета (1-7)
object: number; // Предмет расчета (1-13)
}
Amounts - Способы оплаты
interface Amounts {
electronic: number; // Электронные средства (карты, кошельки)
advancePayment: number; // Предоплата (ранее внесенная)
credit: number; // В кредит/рассрочку
provision: number; // Задаток
}
IPayer - Информация о покупателе
interface IPayer {
firstName?: string; // Имя
lastName?: string; // Фамилия
middleName?: string; // Отчество
birth?: string; // Дата рождения (YYYY-MM-DD)
address?: string; // Полный адрес
street?: string; // Улица
city?: string; // Город
country?: string; // Код страны (RU, US, etc.)
phone?: string; // Телефон
postcode?: string; // Почтовый индекс
}