From 4b89c42a7297fedd01984d7ceae7535026428618 Mon Sep 17 00:00:00 2001 From: Kirill Date: Sun, 24 May 2026 17:07:46 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plans/2026-05-24-admin-test-checklist.md | 539 ++ .../plans/2026-05-24-test-checklist-v2.md | 507 ++ server/prisma/prisma/dev.db | Bin 364544 -> 368640 bytes yookassa-openapi-specification.yaml | 5548 ----------------- ...комнадзора к сайтам 2026_ чек-лист для бизнеса copy.md | 157 - 5 files changed, 1046 insertions(+), 5705 deletions(-) create mode 100644 docs/superpowers/plans/2026-05-24-admin-test-checklist.md create mode 100644 docs/superpowers/plans/2026-05-24-test-checklist-v2.md delete mode 100644 yookassa-openapi-specification.yaml delete mode 100644 Требования Роскомнадзора к сайтам 2026_ чек-лист для бизнеса copy.md diff --git a/docs/superpowers/plans/2026-05-24-admin-test-checklist.md b/docs/superpowers/plans/2026-05-24-admin-test-checklist.md new file mode 100644 index 0000000..49fdc6a --- /dev/null +++ b/docs/superpowers/plans/2026-05-24-admin-test-checklist.md @@ -0,0 +1,539 @@ +# Admin Test Checklist Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add an admin page with a manual testing checklist where each check can be marked as passed/failed with auto-timestamp. + +**Architecture:** Hardcoded checklist items in shared constants, Prisma model for results, Fastify API route (admin-only), React admin page with MUI Accordion grouped by section. + +**Tech Stack:** Prisma (SQLite), Fastify, React + MUI, @tanstack/react-query, apiClient (axios) + +--- + +### Task 1: Prisma Migration — ChecklistResult Model + +**Files:** +- Modify: `server/prisma/schema.prisma` (add model at end) + +- [ ] **Step 1: Add ChecklistResult model to schema** + +Append to `server/prisma/schema.prisma` after the last model: + +```prisma +/// Результат ручной проверки тест-чеклиста +model ChecklistResult { + id String @id @default(cuid()) + itemKey String @unique + passed Boolean + checkedAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} +``` + +- [ ] **Step 2: Run migration** + +```bash +cd /mnt/d/my_projects/shop/server && npx prisma migrate dev --name add_checklist_result +``` + +Expected: Migration created and applied successfully. + +- [ ] **Step 3: Commit** + +```bash +git add server/prisma/schema.prisma server/prisma/migrations/ +git commit -m "feat: add ChecklistResult model for manual test checklist" +``` + +--- + +### Task 2: Shared Constants — Checklist Items + +**Files:** +- Create: `shared/constants/test-checklist-items.js` +- Create: `shared/constants/test-checklist-items.d.ts` + +- [ ] **Step 1: Create the JS file with all checklist items** + +Create `shared/constants/test-checklist-items.js`: + +```js +export const TEST_CHECKLIST_ITEMS = Object.freeze([ + // Авторизация + { key: 'auth.register-email', section: 'Авторизация', action: 'Зарегистрироваться по email', expectedResult: 'Код приходит на почту, аккаунт создаётся' }, + { key: 'auth.login-password', section: 'Авторизация', action: 'Войти по паролю', expectedResult: 'Корректный пароль пускает, неправильный — ошибка' }, + { key: 'auth.oauth-vk', section: 'Авторизация', action: 'Войти через OAuth VK', expectedResult: 'Редирект на VK, callback, авторизация успешна' }, + { key: 'auth.oauth-yandex', section: 'Авторизация', action: 'Войти через OAuth Yandex', expectedResult: 'Редирект на Yandex, callback, авторизация успешна' }, + { key: 'auth.reset-password', section: 'Авторизация', action: 'Сбросить пароль', expectedResult: 'Письмо приходит, ссылка работает, пароль меняется' }, + { key: 'auth.logout', section: 'Авторизация', action: 'Выйти из аккаунта', expectedResult: 'Сессия очищается, редирект на страницу входа' }, + + // Каталог и товары + { key: 'catalog.homepage', section: 'Каталог и товары', action: 'Открыть главную страницу', expectedResult: 'Слайдер грузится, товары отображаются' }, + { key: 'catalog.filters', section: 'Каталог и товары', action: 'Применить фильтры', expectedResult: 'Фильтры по категории, цене, материалам работают' }, + { key: 'catalog.product-page', section: 'Каталог и товары', action: 'Открыть страницу товара', expectedResult: 'Фото, описание, цена, кнопка "В корзину" отображаются' }, + { key: 'catalog.seo', section: 'Каталог и товары', action: 'Проверить SEO-метаданные', expectedResult: 'Title, meta, slug корректные' }, + + // Корзина + { key: 'cart.add', section: 'Корзина', action: 'Добавить товар в корзину', expectedResult: 'Счётчик корзины обновляется' }, + { key: 'cart.change-qty', section: 'Корзина', action: 'Изменить количество товара', expectedResult: 'Сумма пересчитывается' }, + { key: 'cart.remove', section: 'Корзина', action: 'Удалить товар из корзины', expectedResult: 'Товар убирается, сумма пересчитывается' }, + + // Чекаут + { key: 'checkout.address', section: 'Чекаут', action: 'Выбрать адрес доставки', expectedResult: 'Можно выбрать из сохранённых или добавить новый' }, + { key: 'checkout.delivery', section: 'Чекаут', action: 'Выбрать способ доставки', expectedResult: 'Почта, OZON, Яндекс, 5post — доступны' }, + { key: 'checkout.payment', section: 'Чекаут', action: 'Выбрать способ оплаты', expectedResult: 'Онлайн / при получении — доступны' }, + { key: 'checkout.comment', section: 'Чекаут', action: 'Добавить комментарий к заказу', expectedResult: 'Поле работает, текст сохраняется' }, + { key: 'checkout.create', section: 'Чекаут', action: 'Создать заказ', expectedResult: 'Заказ создаётся, статус DRAFT' }, + + // Оплата + { key: 'payment.yookassa', section: 'Оплата', action: 'Оплатить через ЮKassa', expectedResult: 'Редирект на оплату, webhook обрабатывается' }, + { key: 'payment.status', section: 'Оплата', action: 'Проверить статус платежа', expectedResult: 'Статус обновляется после webhook' }, + + // Профиль пользователя + { key: 'profile.avatar', section: 'Профиль пользователя', action: 'Управление аватаром', expectedResult: 'Загрузка, отображение, удаление работают' }, + { key: 'profile.settings', section: 'Профиль пользователя', action: 'Изменить настройки профиля', expectedResult: 'Email, имя, способы входа обновляются' }, + { key: 'profile.addresses', section: 'Профиль пользователя', action: 'Управление адресами', expectedResult: 'Добавление, редактирование, удаление, по умолчанию' }, + { key: 'profile.orders', section: 'Профиль пользователя', action: 'Просмотр заказов', expectedResult: 'Список, детали, статусы отображаются' }, + { key: 'profile.messages', section: 'Профиль пользователя', action: 'Сообщения по заказу', expectedResult: 'Отправка, получение, read state работают' }, + { key: 'profile.notifications', section: 'Профиль пользователя', action: 'Настройки уведомлений', expectedResult: 'Вкл/выкл каналов работают' }, + { key: 'profile.delete-account', section: 'Профиль пользователя', action: 'Удалить аккаунт', expectedResult: 'Данные удаляются' }, + + // Админ — Товары + { key: 'admin-products.list', section: 'Админ — Товары', action: 'Открыть список товаров', expectedResult: 'Пагинация, поиск работают' }, + { key: 'admin-products.create', section: 'Админ — Товары', action: 'Создать товар', expectedResult: 'Все поля сохраняются, фото загружаются, публикация работает' }, + { key: 'admin-products.edit', section: 'Админ — Товары', action: 'Редактировать товар', expectedResult: 'Изменения сохраняются' }, + { key: 'admin-products.delete', section: 'Админ — Товары', action: 'Удалить товар', expectedResult: 'Товар удаляется' }, + { key: 'admin-products.images', section: 'Админ — Товары', action: 'Управление изображениями товара', expectedResult: 'Добавление, сортировка, удаление работают' }, + + // Админ — Категории + { key: 'admin-categories.crud', section: 'Админ — Категории', action: 'CRUD категорий', expectedResult: 'Создание, редактирование, удаление, сортировка работают' }, + + // Админ — Заказы + { key: 'admin-orders.list', section: 'Админ — Заказы', action: 'Открыть список заказов', expectedResult: 'Фильтрация по статусу, внимание отображается' }, + { key: 'admin-orders.details', section: 'Админ — Заказы', action: 'Открыть детали заказа', expectedResult: 'Состав, статус, смена статуса работают' }, + { key: 'admin-orders.messages', section: 'Админ — Заказы', action: 'Ответить на сообщение заказа', expectedResult: 'Сообщение отправляется пользователю' }, + + // Админ — Отзывы + { key: 'admin-reviews.list', section: 'Админ — Отзывы', action: 'Открыть список отзывов', expectedResult: 'Фильтрация pending/approved/rejected работает' }, + { key: 'admin-reviews.moderate', section: 'Админ — Отзывы', action: 'Модерировать отзыв', expectedResult: 'Approve/reject работают' }, + + // Админ — Пользователи + { key: 'admin-users.list', section: 'Админ — Пользователи', action: 'Открыть список пользователей', expectedResult: 'Email, дата регистрации отображаются' }, + { key: 'admin-users.orders', section: 'Админ — Пользователи', action: 'Просмотр заказов пользователя', expectedResult: 'Заказы пользователя отображаются' }, + + // Админ — Галерея + { key: 'admin-gallery.upload', section: 'Админ — Галерея', action: 'Управление галереей', expectedResult: 'Загрузка, удаление, использование в слайдере работают' }, + + // Админ — Настройки + { key: 'admin-settings.notifications', section: 'Админ — Настройки', action: 'Настройки уведомлений админа', expectedResult: 'Email, telegram настраиваются' }, + + // Инфо-страницы + { key: 'info.pages', section: 'Инфо-страницы', action: 'Открыть инфо-страницы', expectedResult: 'Доставка, оплата, как заказать, статусы заказов отображаются' }, + { key: 'info.legal', section: 'Инфо-страницы', action: 'Открыть юридические страницы', expectedResult: 'Политика конфиденциальности, условия использования отображаются' }, + + // SSE / Realtime + { key: 'sse.notifications', section: 'SSE / Realtime', action: 'Проверить SSE-уведомления', expectedResult: 'Уведомления приходят в реальном времени' }, +]) +``` + +- [ ] **Step 2: Create the TypeScript declaration file** + +Create `shared/constants/test-checklist-items.d.ts`: + +```ts +export interface TestChecklistItem { + key: string + section: string + action: string + expectedResult: string +} + +export declare const TEST_CHECKLIST_ITEMS: readonly TestChecklistItem[] +``` + +- [ ] **Step 3: Commit** + +```bash +git add shared/constants/test-checklist-items.js shared/constants/test-checklist-items.d.ts +git commit -m "feat: add test checklist items shared constants" +``` + +--- + +### Task 3: Server API Route + +**Files:** +- Create: `server/src/routes/api/admin/test-checklist.js` +- Modify: `server/src/routes/api.js` (register new route) + +- [ ] **Step 1: Create the API route file** + +Create `server/src/routes/api/admin/test-checklist.js`: + +```js +import { prisma } from '../../../lib/prisma.js' + +export async function registerAdminTestChecklistRoutes(fastify) { + fastify.get('/api/admin/test-checklist', { preHandler: [fastify.verifyAdmin] }, async () => { + const results = await prisma.checklistResult.findMany() + const resultMap = {} + for (const r of results) { + resultMap[r.itemKey] = { passed: r.passed, checkedAt: r.checkedAt.toISOString() } + } + return { results: resultMap } + }) + + fastify.patch('/api/admin/test-checklist', { preHandler: [fastify.verifyAdmin] }, async (request) => { + const { itemKey, passed } = request.body || {} + if (!itemKey || typeof passed !== 'boolean') { + return fastify.httpErrors.badRequest('itemKey and passed (boolean) are required') + } + + const result = await prisma.checklistResult.upsert({ + where: { itemKey }, + create: { itemKey, passed }, + update: { passed, checkedAt: new Date() }, + }) + + return { result: { itemKey: result.itemKey, passed: result.passed, checkedAt: result.checkedAt.toISOString() } } + }) + + fastify.post('/api/admin/test-checklist/reset', { preHandler: [fastify.verifyAdmin] }, async () => { + await prisma.checklistResult.deleteMany({}) + return { ok: true } + }) +} +``` + +- [ ] **Step 2: Register the route in api.js** + +Read `server/src/routes/api.js` to find where other admin routes are registered (look for imports and calls like `registerAdminNotificationRoutes`). + +Add import and registration following the existing pattern. Example: + +```js +import { registerAdminTestChecklistRoutes } from './api/admin/test-checklist.js' + +// ... inside the registerApiRoutes function: +await registerAdminTestChecklistRoutes(fastify) +``` + +- [ ] **Step 3: Commit** + +```bash +git add server/src/routes/api/admin/test-checklist.js server/src/routes/api.js +git commit -m "feat: add admin test-checklist API routes" +``` + +--- + +### Task 4: Client — API Layer + +**Files:** +- Create: `client/src/entities/test-checklist/api/test-checklist-api.ts` + +- [ ] **Step 1: Create the API functions** + +Create `client/src/entities/test-checklist/api/test-checklist-api.ts`: + +```ts +import { apiClient } from '@/shared/api/client' + +export interface ChecklistResultDto { + passed: boolean + checkedAt: string +} + +export interface TestChecklistResponse { + results: Record +} + +export async function fetchTestChecklistResults(): Promise { + const { data } = await apiClient.get('admin/test-checklist') + return data +} + +export async function updateTestChecklistItem(itemKey: string, passed: boolean): Promise<{ itemKey: string; passed: boolean; checkedAt: string }> { + const { data } = await apiClient.patch<{ result: { itemKey: string; passed: boolean; checkedAt: string } }>('admin/test-checklist', { itemKey, passed }) + return data.result +} + +export async function resetTestChecklist(): Promise { + await apiClient.post('admin/test-checklist/reset') +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add client/src/entities/test-checklist/api/test-checklist-api.ts +git commit -m "feat: add test-checklist API client functions" +``` + +--- + +### Task 5: Client — Admin Test Checklist Page + +**Files:** +- Create: `client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx` +- Create: `client/src/pages/admin-test-checklist/index.ts` + +- [ ] **Step 1: Create the page component** + +Create `client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx`: + +```tsx +import { useMemo, useState } from 'react' +import Accordion from '@mui/material/Accordion' +import AccordionDetails from '@mui/material/AccordionDetails' +import AccordionSummary from '@mui/material/AccordionSummary' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import Checkbox from '@mui/material/Checkbox' +import CircularProgress from '@mui/material/CircularProgress' +import Dialog from '@mui/material/Dialog' +import DialogActions from '@mui/material/DialogActions' +import DialogContent from '@mui/material/DialogContent' +import DialogContentText from '@mui/material/DialogContentText' +import DialogTitle from '@mui/material/DialogTitle' +import Stack from '@mui/material/Stack' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import Typography from '@mui/material/Typography' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import { TEST_CHECKLIST_ITEMS } from '@shared/constants/test-checklist-items' +import { fetchTestChecklistResults, resetTestChecklist, updateTestChecklistItem } from '@/entities/test-checklist/api/test-checklist-api' + +function formatDate(iso: string): string { + return new Date(iso).toLocaleString('ru-RU', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + hour: '2-digit', + minute: '2-digit', + }) +} + +export function AdminTestChecklistPage() { + const queryClient = useQueryClient() + const [confirmOpen, setConfirmOpen] = useState(false) + const [expanded, setExpanded] = useState(false) + + const { data, isLoading } = useQuery({ + queryKey: ['admin', 'test-checklist'], + queryFn: fetchTestChecklistResults, + }) + + const updateMutation = useMutation({ + mutationFn: ({ itemKey, passed }: { itemKey: string; passed: boolean }) => updateTestChecklistItem(itemKey, passed), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['admin', 'test-checklist'] }) + }, + }) + + const resetMutation = useMutation({ + mutationFn: resetTestChecklist, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['admin', 'test-checklist'] }) + setConfirmOpen(false) + }, + }) + + const sections = useMemo(() => { + const map = new Map() + for (const item of TEST_CHECKLIST_ITEMS) { + const existing = map.get(item.section) || [] + existing.push(item) + map.set(item.section, existing) + } + return Array.from(map.entries()) + }, []) + + const results = data?.results ?? {} + + const total = TEST_CHECKLIST_ITEMS.length + const passedCount = TEST_CHECKLIST_ITEMS.filter((i) => results[i.key]?.passed).length + + return ( + + + + + Тест-чеклист + + + Пройдено: {passedCount} из {total} + + + + + + {isLoading ? ( + + + + ) : ( + sections.map(([section, items]) => ( + setExpanded(isExpanded ? section : false)}> + }> + {section} + + + + + + + + Действие + Ожидаемый результат + Дата проверки + + + + {items.map((item) => { + const r = results[item.key] + return ( + + + updateMutation.mutate({ itemKey: item.key, passed: checked })} + color="success" + /> + + {item.action} + {item.expectedResult} + + {r ? formatDate(r.checkedAt) : '—'} + + + ) + })} + +
+
+
+
+ )) + )} + + setConfirmOpen(false)}> + Сбросить все проверки? + + Все отметки будут удалены. Это действие нельзя отменить. + + + + + + +
+ ) +} +``` + +- [ ] **Step 2: Create the barrel export** + +Create `client/src/pages/admin-test-checklist/index.ts`: + +```ts +export { AdminTestChecklistPage } from './ui/AdminTestChecklistPage' +``` + +- [ ] **Step 3: Commit** + +```bash +git add client/src/pages/admin-test-checklist/ +git commit -m "feat: add admin test checklist page" +``` + +--- + +### Task 6: Client — Routing & Navigation + +**Files:** +- Modify: `client/src/pages/admin-layout/ui/AdminLayoutPage.tsx` (add nav item + route) + +- [ ] **Step 1: Add nav item and route to AdminLayoutPage** + +In `client/src/pages/admin-layout/ui/AdminLayoutPage.tsx`: + +1. Add import for `ClipboardCheck` from `lucide-react`: +```tsx +import { Bell, ClipboardCheck, Image, LayoutGrid, ListOrdered, MessageSquare, Settings, Store, Users } from 'lucide-react' +``` + +2. Add import for the page: +```tsx +import { AdminTestChecklistPage } from '@/pages/admin-test-checklist' +``` + +3. Add nav item to `navItems` array (after настройки): +```tsx +{ to: '/admin/test-checklist', label: 'Тест-чеклист', icon: }, +``` + +4. Add route to `` (before the catch-all `*`): +```tsx +} /> +``` + +- [ ] **Step 2: Commit** + +```bash +git add client/src/pages/admin-layout/ui/AdminLayoutPage.tsx +git commit -m "feat: add test-checklist to admin navigation and routing" +``` + +--- + +### Task 7: Verification + +- [ ] **Step 1: Run server tests** + +```bash +cd /mnt/d/my_projects/shop/server && npm test +``` + +Expected: All tests pass. + +- [ ] **Step 2: Run client lint** + +```bash +cd /mnt/d/my_projects/shop/client && npm run lint +``` + +Expected: No errors. + +- [ ] **Step 3: Run client format check** + +```bash +cd /mnt/d/my_projects/shop/client && npm run format:check +``` + +Expected: All files formatted correctly. + +- [ ] **Step 4: Run client tests** + +```bash +cd /mnt/d/my_projects/shop/client && npm test +``` + +Expected: All tests pass. + +- [ ] **Step 5: Run client build** + +```bash +cd /mnt/d/my_projects/shop/client && npm run build +``` + +Expected: Build succeeds with no type errors. diff --git a/docs/superpowers/plans/2026-05-24-test-checklist-v2.md b/docs/superpowers/plans/2026-05-24-test-checklist-v2.md new file mode 100644 index 0000000..b018ab5 --- /dev/null +++ b/docs/superpowers/plans/2026-05-24-test-checklist-v2.md @@ -0,0 +1,507 @@ +# Test Checklist v2 — 3-State Status + Error Comments Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add "failed with error" state to checklist items with a mandatory error comment dialog. + +**Architecture:** Add `comment String?` field to `ChecklistResult` model. Update PATCH API to accept optional comment. Replace checkbox with 3-state status selector (passed/failed/not-checked). Show error comment dialog when marking as failed. + +**Tech Stack:** Prisma (SQLite), Fastify, React + MUI, @tanstack/react-query, apiClient (axios) + +--- + +### Task 1: Prisma Migration — Add comment field + +**Files:** +- Modify: `server/prisma/schema.prisma` + +- [ ] **Step 1: Add comment field to ChecklistResult model** + +In `server/prisma/schema.prisma`, find the `ChecklistResult` model and add `comment String?` after `passed`: + +```prisma +/// Результат ручной проверки тест-чеклиста +model ChecklistResult { + id String @id @default(cuid()) + itemKey String @unique + passed Boolean + comment String? + checkedAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} +``` + +- [ ] **Step 2: Run migration** + +```bash +cd /mnt/d/my_projects/shop/server && npx prisma migrate dev --name add_checklist_comment +``` + +Expected: Migration created and applied successfully. + +- [ ] **Step 3: Commit** + +```bash +git add server/prisma/schema.prisma server/prisma/migrations/ +git commit -m "feat: add comment field to ChecklistResult for error descriptions" +``` + +--- + +### Task 2: Server API — Support comment in PATCH and GET + +**Files:** +- Modify: `server/src/routes/api/admin/test-checklist.js` + +- [ ] **Step 1: Update PATCH to accept and store comment** + +Replace the PATCH handler in `server/src/routes/api/admin/test-checklist.js`: + +```js + fastify.patch('/api/admin/test-checklist', { preHandler: [fastify.verifyAdmin] }, async (request, reply) => { + const { itemKey, passed, comment } = request.body || {} + if (!itemKey || typeof passed !== 'boolean') { + return reply.code(400).send({ error: 'itemKey и passed (boolean) обязательны' }) + } + if (comment !== undefined && typeof comment !== 'string') { + return reply.code(400).send({ error: 'comment должен быть строкой' }) + } + if (comment !== undefined && comment.length > 2000) { + return reply.code(400).send({ error: 'Комментарий слишком длинный (макс. 2000 символов)' }) + } + + const result = await prisma.checklistResult.upsert({ + where: { itemKey }, + create: { itemKey, passed, comment: passed ? null : comment || null }, + update: { passed, comment: passed ? null : comment ?? undefined, checkedAt: new Date() }, + }) + + return { result: { itemKey: result.itemKey, passed: result.passed, comment: result.comment, checkedAt: result.checkedAt.toISOString() } } + }) +``` + +- [ ] **Step 2: Update GET to include comment in response** + +Replace the GET handler's result mapping: + +```js + fastify.get('/api/admin/test-checklist', { preHandler: [fastify.verifyAdmin] }, async (request, reply) => { + const results = await prisma.checklistResult.findMany() + const resultMap = {} + for (const r of results) { + resultMap[r.itemKey] = { passed: r.passed, comment: r.comment, checkedAt: r.checkedAt.toISOString() } + } + return { results: resultMap } + }) +``` + +- [ ] **Step 3: Commit** + +```bash +git add server/src/routes/api/admin/test-checklist.js +git commit -m "feat: support comment field in test-checklist API" +``` + +--- + +### Task 3: Client API Layer — Add comment to types and functions + +**Files:** +- Modify: `client/src/entities/test-checklist/api/test-checklist-api.ts` + +- [ ] **Step 1: Update types and update function** + +Replace the entire file content: + +```ts +import { apiClient } from '@/shared/api/client' + +export type ChecklistResultDto = { + passed: boolean + comment: string | null + checkedAt: string +} + +export type TestChecklistResponse = { + results: Record +} + +export type UpdateChecklistItemResponse = { + itemKey: string + passed: boolean + comment: string | null + checkedAt: string +} + +export async function fetchTestChecklistResults(): Promise { + const { data } = await apiClient.get('admin/test-checklist') + return data +} + +export async function updateTestChecklistItem( + itemKey: string, + passed: boolean, + comment?: string | null, +): Promise { + const { data } = await apiClient.patch<{ result: UpdateChecklistItemResponse }>('admin/test-checklist', { + itemKey, + passed, + comment: passed ? null : comment ?? null, + }) + return data.result +} + +export async function resetTestChecklist(): Promise { + await apiClient.post('admin/test-checklist/reset') +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add client/src/entities/test-checklist/api/test-checklist-api.ts +git commit -m "feat: add comment to test-checklist API client types and function" +``` + +--- + +### Task 4: Client Page — 3-state status + error comment dialog + +**Files:** +- Modify: `client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx` + +- [ ] **Step 1: Replace the entire page component** + +Replace the entire file content: + +```tsx +import { useCallback, useMemo, useState } from 'react' +import Alert from '@mui/material/Alert' +import Accordion from '@mui/material/Accordion' +import AccordionDetails from '@mui/material/AccordionDetails' +import AccordionSummary from '@mui/material/AccordionSummary' +import Box from '@mui/material/Box' +import Button from '@mui/material/Button' +import CircularProgress from '@mui/material/CircularProgress' +import Dialog from '@mui/material/Dialog' +import DialogActions from '@mui/material/DialogActions' +import DialogContent from '@mui/material/DialogContent' +import DialogTitle from '@mui/material/DialogTitle' +import IconButton from '@mui/material/IconButton' +import Stack from '@mui/material/Stack' +import Table from '@mui/material/Table' +import TableBody from '@mui/material/TableBody' +import TableCell from '@mui/material/TableCell' +import TableContainer from '@mui/material/TableContainer' +import TableHead from '@mui/material/TableHead' +import TableRow from '@mui/material/TableRow' +import TextField from '@mui/material/TextField' +import Tooltip from '@mui/material/Tooltip' +import Typography from '@mui/material/Typography' +import CheckCircleIcon from '@mui/icons-material/CheckCircle' +import CancelIcon from '@mui/icons-material/Cancel' +import ExpandMoreIcon from '@mui/icons-material/ExpandMore' +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' +import { TEST_CHECKLIST_ITEMS } from '@shared/constants/test-checklist-items' +import { + fetchTestChecklistResults, + resetTestChecklist, + updateTestChecklistItem, +} from '@/entities/test-checklist/api/test-checklist-api' + +type Status = 'passed' | 'failed' | 'unchecked' + +function statusFromResult(r: { passed: boolean; comment: string | null } | undefined): Status { + if (!r) return 'unchecked' + return r.passed ? 'passed' : 'failed' +} + +function formatDate(iso: string): string { + return new Date(iso).toLocaleString('ru-RU', { + day: '2-digit', + month: '2-digit', + year: 'numeric', + hour: '2-digit', + minute: '2-digit', + }) +} + +function StatusIcon({ status, onClick }: { status: Status; onClick: () => void }) { + const icons = { + passed: , + failed: , + unchecked: , + } + + return ( + + + {icons[status]} + + + ) +} + +export function AdminTestChecklistPage() { + const queryClient = useQueryClient() + const [confirmOpen, setConfirmOpen] = useState(false) + const [expanded, setExpanded] = useState(false) + const [errorDialogOpen, setErrorDialogOpen] = useState(false) + const [errorItemKey, setErrorItemKey] = useState(null) + const [errorComment, setErrorComment] = useState('') + const [errorCommentError, setErrorCommentError] = useState(false) + + const { data, isLoading, isError } = useQuery({ + queryKey: ['admin', 'test-checklist'], + queryFn: fetchTestChecklistResults, + }) + + const updateMutation = useMutation({ + mutationFn: ({ itemKey, passed, comment }: { itemKey: string; passed: boolean; comment?: string | null }) => + updateTestChecklistItem(itemKey, passed, comment), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['admin', 'test-checklist'] }) + }, + }) + + const resetMutation = useMutation({ + mutationFn: resetTestChecklist, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['admin', 'test-checklist'] }) + setConfirmOpen(false) + }, + }) + + const sections = useMemo(() => { + const map = new Map() + for (const item of TEST_CHECKLIST_ITEMS) { + const existing = map.get(item.section) || [] + existing.push(item) + map.set(item.section, existing) + } + return Array.from(map.entries()) + }, []) + + const results = data?.results ?? {} + + const total = TEST_CHECKLIST_ITEMS.length + const passedCount = TEST_CHECKLIST_ITEMS.filter((i) => results[i.key]?.passed).length + + const handleStatusClick = useCallback( + (itemKey: string) => { + const current = statusFromResult(results[itemKey]) + if (current === 'failed') { + // Clicking on failed → reset to unchecked + updateMutation.mutate({ itemKey, passed: false, comment: null }) + } else if (current === 'unchecked') { + // Clicking on unchecked → mark as passed + updateMutation.mutate({ itemKey, passed: true }) + } else { + // Clicking on passed → open error dialog + setErrorItemKey(itemKey) + setErrorComment('') + setErrorCommentError(false) + setErrorDialogOpen(true) + } + }, + [results, updateMutation], + ) + + const handleSaveError = () => { + if (!errorItemKey) return + if (!errorComment.trim()) { + setErrorCommentError(true) + return + } + updateMutation.mutate({ itemKey: errorItemKey, passed: false, comment: errorComment.trim() }) + setErrorDialogOpen(false) + setErrorItemKey(null) + setErrorComment('') + } + + const errorItem = errorItemKey ? TEST_CHECKLIST_ITEMS.find((i) => i.key === errorItemKey) : null + + return ( + + + + + Тест-чеклист + + + Пройдено: {passedCount} из {total} + + + + + + {isLoading ? ( + + + + ) : isError ? ( + Не удалось загрузить чеклист. + ) : ( + sections.map(([section, items]) => ( + setExpanded(isExpanded ? section : false)} + > + }> + {section} + + + + + + + + Действие + Ожидаемый результат + Комментарий + Дата проверки + + + + {items.map((item) => { + const r = results[item.key] + const status = statusFromResult(r) + return ( + + + handleStatusClick(item.key)} /> + + {item.action} + {item.expectedResult} + + {r?.comment ? ( + + + {r.comment} + + + ) : ( + + — + + )} + + + {r ? formatDate(r.checkedAt) : '—'} + + + ) + })} + +
+
+
+
+ )) + )} + + setConfirmOpen(false)}> + Сбросить все проверки? + + Все отметки будут удалены. Это действие нельзя отменить. + + + + + + + + setErrorDialogOpen(false)} maxWidth="sm" fullWidth> + + Описание ошибки — {errorItem?.action} + + + { + setErrorComment(e.target.value) + if (errorCommentError) setErrorCommentError(false) + }} + placeholder="Опишите, что пошло не так..." + error={errorCommentError} + helperText={errorCommentError ? 'Обязательное поле' : ''} + sx={{ mt: 1 }} + /> + + + + + + +
+ ) +} +``` + +- [ ] **Step 2: Commit** + +```bash +git add client/src/pages/admin-test-checklist/ui/AdminTestChecklistPage.tsx +git commit -m "feat: add 3-state status and error comment dialog to test checklist" +``` + +--- + +### Task 5: Verification + +- [ ] **Step 1: Run server tests** + +```bash +cd /mnt/d/my_projects/shop/server && npm test +``` + +Expected: All tests pass (pre-existing failures unrelated). + +- [ ] **Step 2: Run client lint** + +```bash +cd /mnt/d/my_projects/shop/client && npm run lint +``` + +Expected: 0 errors. + +- [ ] **Step 3: Run client format check** + +```bash +cd /mnt/d/my_projects/shop/client && npm run format:check +``` + +Expected: All files formatted correctly. + +- [ ] **Step 4: Run client build** + +```bash +cd /mnt/d/my_projects/shop/client && npm run build +``` + +Expected: Build succeeds with no type errors. diff --git a/server/prisma/prisma/dev.db b/server/prisma/prisma/dev.db index 58f210993dc6fcda2714094acfcb5472a4f0f7ed..8f10f7222ba0e2bb691f4ca24a4cd870e42f4848 100644 GIT binary patch delta 3536 zcmb_edu&tJ8NWC8I`MTJpSXntXj-hGwq#&(-;bfmp@^-BwBePGfKYnwz31AF?fAxa zFb;x{twTjsU&=JA{R0KHl$EJli6Lg4G|7`%DGW7B3Cp%)hE35yVJPXUF37TD%35dX%y)W`j|SH%a2>n{-YW&3+XTi}GrQ>= z%I3mW3=T(8*v*FpO*2$cP-i4bfv15L~E>?=KV}x6*qozuy-TCR*A(9uH-u+#xqMEb2VZE7|ODlGjmo zOwR3H2#+km#xCVGWXgsF4Glue5lu}oRKbCgqAH3bSV&V;M-Y)Fi?S>T$T3WvmlVSi zlIduCm_9N-aQPQ!=_3Od&qs)Sf}Ut>p5sH+_-ML?`ACFMN*fs+licV+K9Z@M0)nz4 z$f9ZqmTfpPGN5VOj>MZd2sFu%RZ+qr;OM-lNvh&Vrn5}bH9?eAp+;!n@~#&N6X}m7 z_l=)=I{bkbDDV;ZJva^yg9La4bc0~vAAxrR<-iN2AYTYfc0cRY>pIPUFB74wF0Eri zGZ~%S|HjhN-!I)2#OoZRz{lWCZ~{CHT(AwOfiD9e1b!Dd2A1M=eiE4c;PVdJKk44= zpqq&-{qu8C6!-$%03U*P!Q0?0I0aq>N5CX_670v*c7rw_j&XMZ zY&KWS{efP)1%ng_h&mF>jJm0mJ*K85=Ct(|9=t6x~}54?WsTbCKZP6y@gKLyLN z!os;eT#+jDz9Cf z;erX%ikaG*-NRp_0Jq+*q$Xm?gRxM4x9{d zEtdaHe^>Jpz8k(x+zDJDp1}p;z7@Xyi55>kX2^Y;0xOFKFF*t}ok!5NpeooRw2+`% zrl#wHBa2YN1;c_6YDiX9*~UV1Y}M3tUWFF6@$zr4h`gxsiYSi@xUS0bAhhj4D~7B@ zGM>#1;`)|C!?}v;g^7DRD-5?0hTo>L+k&ARj*Tx_!2cF5Su!rPs%i32LYiP`s;-!# zA@IDo-Y_g=*dpEsWFVyA+Gg{3-PaD4Y7_+lE6!(_LD|tHA^6&%sq&4tnKLquG!v1n z6-l;@4JBP8mxskOx0nYyal&C$oNd)$t&^3f*h;L{L6~V}+15rHT%y3GQgHKcz*>WD zjwtx%cp|(M$8p|jbdj(yNpz8Xi)KwVvnNdw{;g{tSLG>&EK^TwriW#DTnA25;4~Nl z%L7+%VxA8auN+`|$C>6x1h0axxpi!FjF_sEnlPj~!?}EZY|gfY#e$fg`LHTCHY|X$ zH0)nqBn5<5lLl@q=3GwKDhs?*S_n$^tE$|H&HqnYv9Sy!v`8-zm83&9zJgURT`L#T7!XmQIKCfpRyq0}Z+m<)QB72i3< zEb_1Rh49sB5st;brD&sg?q&9#Uf*i`t(s_^q3s)XZ10-z?rUmazlxsdt{6HGeQ*wV zFo6p5hIUS#Y+O7(@8j3?J41bsE}+}FvU3iyvkM;rLB$Jw|Fajo*<988|CJjWd|l>W zn3WSyPu!+65>+hHmmwJ)GSoe0GMcXSywhIKm)-bWTsskz1H5P79agx5Wpa2fA0OjK z6K>u{Y7(-yIsd;;3nXdyxP5=w+vB+jmcDiE&p2bTY#{^W0P%CM8?=Jfmx4SPU&}T| z!nImh&wDN`kjAp6kWMFHHVZMHni59rvmT={7JgbwcCN1XD_9v6#qAGe!lb+;G00W9r6R%X z^gB<@zFw91X*x7JjbC5KE7Y!jkuPsv=h;M;2cYNpn%3HOf@}EqK6oGZj-#M&5fi58 eJAs7Mcil|di6>DzBhmBC!d5l3F%nmY;=ciSL|!NW delta 1779 zcmZ`)Yitx%6yBM++jghzoEGSdhbE95=KMX5q2XxHtA3vw^}#yfx&_uKIlL#)>7(*5ZelH{PnIS_Owg zvI~+R+O3k^7c?9Z%FnBA2W7}4p-b;&j{J!d$SwpI!3UB zR5{?Z@q#NOhkLx~Wzoc`5mM90vZ@LCxm(<(>I>Djs-sm6l^?RxteUIkUt@FX*^kYQ zEO*@mzraNpg}o4f^{^ajxxcvUXmWxN%$GA!(})Jr{POD2w5~sLH6zG^4zD>>s<4~ zvgl9oJa3Oj!+b{Y#C(#ZPzSdS{j@&sqV5A@ymV7Ut)k&#F~q$viXd+QhGo&>SE!X6 z5u{f}5NF&G^|+lOXFQUWm<3E5t1#Js~S$dOp);DQJC}J|AjD zL+kHPMieRF+cQDsCuq`AMgf-2D3k)4I!&+cTK!75d-Hn#+Lzx_99`}9&M3cDS+_>o z+9lf}1Mc9)RN6fd3wE`7Fo*rS78d1G{p5Kv3EJQ^U6-$6NQ+K*@;fw#pA-^{WT0Tm z1XFtL1bqv%sSOOvrdNng-YQs~_Ix)2u(Y|}WVvmwhaEbnGGoMnrLjgZJw6-~Vq&H@ z=5=>4mbNvBW-^-#fytuHfd+zM5f4U{gwr3=?!}pBEJHW88?CspU9V3t6NDTCiq-FA zn087JM445zequM%N$JF8UQH1M+?pR`h-*#-J86Pfxs#lw+EaC@YDwjL>?D@(DyvUk zX2z{`7*n4SlGEt9Hx%&7l26darg{iPe#bs5K@D|(BHyJiK=X~ z;kH;BEVv$JDreBIBK0dCcSKfw5nDS>*qd=!7WycP%c;{2(DM z6sMU-NOOfj3|xnX4<+d)U;8usm$^{{Y8VM>qp3PGxnR5=^IWlpHW&( zn3}7dKTKM+<7b$d9{GkjM(I<>Nh9@?slC0M%+cOIN1iW?u2BKm7~M>NG(4b0g&Ct; zQlA;4Taxn8^MoJnF1Jva#1>=gHGhx{EGk|Gy#r#8Pe6apq-0YQAtjNvtFmQ*aaU+N zdYPsdANuz3c6ZvKsU*jeiD*2U3G%+U@h@0_<@WJbG2Me&(a`$rf!?q+W;<;rJpKkA z+*22IjyLZFV=z($F1%jx=t`2s9zUMu<&fx8+_KbTb+lF1fJsF7rQ7eV}fv gz>YC=Y0}$YGH<5zZL;|wSDpOiH`Jh" - refundIdPath: - name: "refund_id" - in: "path" - required: true - description: "Идентификатор возврата." - schema: - type: "string" - minLength: 36 - maxLength: 36 - default: "cae993f2-eb15-45f5-91c5-efb87107ae10" - receiptIdPath: - name: "receipt_id" - in: "path" - required: true - description: "Идентификатор чека." - schema: - $ref: "#/components/schemas/ReceiptId" - ExpiresGte: - name: "expires_at.gte" - in: "query" - description: "Фильтр по времени автоматического закрытия сделки: время должно быть больше указанного значения или равно ему («с такого-то момента включительно»). Указывается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: expires_at.gte=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - ExpiresGt: - name: "expires_at.gt" - in: "query" - description: "Фильтр по времени автоматического закрытия сделки: время должно быть больше указанного значения («с такого-то момента, не включая его»). Указывается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: expires_at.gt=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - ExpiresLte: - name: "expires_at.lte" - in: "query" - description: "Фильтр по времени автоматического закрытия сделки: время должно быть меньше указанного значения или равно ему («по такой-то момент включительно»). Указывается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: expires_at.lte=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - ExpiresLt: - name: "expires_at.lt" - in: "query" - description: "Фильтр по времени автоматического закрытия сделки: время должно быть меньше указанного значения («по такой-то момент, не включая его»). Указывается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: expires_at.lt=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - DealStatusParameter: - name: "status" - in: "query" - schema: - $ref: "#/components/schemas/DealStatus" - description: "Фильтр по статусу сделки. Пример: status=closed" - FullTextSearch: - name: "full_text_search" - in: "query" - description: "Фильтр по описанию сделки — параметру description (например, идентификатор сделки на стороне вашей интернет-площадки в ЮKassa, идентификатор покупателя или продавца). От 4 до 128 символов. Пример: 123554642-2432FF344R" - schema: - type: "string" - minLength: 4 - maxLength: 128 - DealIdPath: - name: "deal_id" - in: "path" - required: true - schema: - $ref: "#/components/schemas/DealId" - SucceededGte: - name: "succeeded_at.gte" - in: "query" - description: "Filter by time of a successful payout processing: time must be greater than the specified value or equal (\"from a certain moment inclusive\"). Specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: succeeded_at.gte=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - SucceededGt: - name: "succeeded_at.gt" - in: "query" - description: "Filter by time of a successful payout processing: time must be greater than the specified value (\"from a certain moment exclusive\"). Specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: succeeded_at.gt=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - SucceededLte: - name: "succeeded_at.lte" - in: "query" - description: "Filter by time of a successful payout processing: time must be less than the specified value or equal (\"until a certain moment inclusive\"). Specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: succeeded_at.lte=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - SucceededLt: - name: "succeeded_at.lt" - in: "query" - description: "Filter by time of a successful payout processing: time must be less than the specified value (\"until a certain moment exclusive\"). Specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: succeeded_at.lt=2018-07-18T10:51:18.139Z" - schema: - type: "string" - format: "date-time" - MetadataInQueryParameter: - name: "metadata" - in: "query" - style: "deepObject" - explode: true - description: "Filter by the metadata object. Strict \"key-value\" pair search: objects that have an exact key and value match in metadata are returned. Restrictions: you can specify a maximum of one \"key-value\" pair, the key name must not be longer than 32 characters, the key value must not be longer than 512 characters, and the data type is a string in UTF-8 format in URL-encoded form. Template: metadata[key]=value Example: metadata%5Boperation_id%5D=e2ab2e1c-776d-4376-aba8-d2099243d1f6" - schema: - type: "object" - maxProperties: 1 - additionalProperties: - type: "string" - maxLength: 512 - PayoutIdPath: - name: "payout_id" - in: "path" - required: true - schema: - $ref: "#/components/schemas/PayoutId" - webhookId: - name: "webhook_id" - in: "path" - required: true - description: "Идентификатор webhook-a." - schema: - type: "string" - minLength: 36 - maxLength: 36 - default: "1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - schemas: - MonetaryAmount: - description: "Сумма в выбранной валюте." - type: "object" - properties: - value: - description: "Сумма в выбранной валюте. Всегда дробное значение. Разделитель дробной части — точка, разделитель тысяч отсутствует. Количество знаков после точки зависит от выбранной валюты. Пример: 1000.00." - type: "string" - example: "1000.00" - currency: - $ref: "#/components/schemas/CurrencyCode" - required: - - "value" - - "currency" - CurrencyCode: - description: "Трехбуквенный код валюты в формате ISO-4217: https://www.iso.org/iso-4217-currency-codes.html. Пример: RUB. Должен соответствовать валюте субаккаунта (recipient.gateway_id), если вы разделяете потоки платежей, и валюте аккаунта (shopId в личном кабинете: https://yookassa.ru/my), если не разделяете." - type: "string" - enum: - - "RUB" - - "EUR" - - "USD" - - "KZT" - - "BYN" - - "UAH" - - "UZS" - - "TRY" - - "INR" - - "MDL" - - "AZN" - - "AMD" - example: "RUB" - Description: - description: "Поле, в котором пользователь может передать описание создаваемого объекта (не более 128 символов). Например: «Оплата заказа № 72»." - type: "string" - maxLength: 128 - example: "Оплата заказа № 72" - ReceiptData: - type: "object" - description: "Data for creating a receipt. The parameter is specified if: you are a company or a sole proprietor, and you use Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics; you are a company or a sole proprietor, and you use the third-party sales register: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics and send data for creating receipts under one of the following scenarios: Payment and receipt at the same time: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#payment-and-receipt or Payment after receipt: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#payment-after-receipt." - properties: - customer: - $ref: "#/components/schemas/ReceiptDataCustomer" - items: - description: "List of products in an order. If you use Receipts from YooMoney, you can specify up to 80 items. If you use a third-party online sales register, you can specify up to 100 items." - type: "array" - items: - $ref: "#/components/schemas/ReceiptDataItem" - internet: - description: "Признак проведения платежа в интернете (тег в 54 ФЗ — 1125) — указывает на оплату через интернет. Возможные значения: true — оплата прошла онлайн, через интернет (например, на вашем сайте или в приложении); false — оплата прошла офлайн, при личном взаимодействии (например, в торговой точке или при встрече с курьером). По умолчанию true. Если вы принимаете платежи офлайн, передайте в запросе значение false." - type: "boolean" - tax_system_code: - $ref: "#/components/schemas/TaxSystemCode" - timezone: - description: "Номер часовой зоны для адреса, по которому вы принимаете платежи (тег в 54 ФЗ — 1011). Указывается, только если в чеке есть товары, которые подлежат обязательной маркировке (в items.mark_code_info передается параметр gs_1m, short или fur). Перечень возможных значений: для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#timezone; для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#timezone." - type: "integer" - minimum: 1 - maximum: 11 - receipt_industry_details: - description: "Отраслевой реквизит чека (тег в 54 ФЗ — 1261). Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2." - type: "array" - items: - $ref: "#/components/schemas/IndustryDetails" - receipt_operational_details: - allOf: - - $ref: "#/components/schemas/OperationalDetails" - - description: "Операционный реквизит чека (тег в 54 ФЗ — 1270). Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2." - required: - - "items" - PayoutId: - description: "Идентификатор выплаты." - minLength: 36 - maxLength: 50 - type: "string" - example: "po-27ced252-0025-5000-9000-0a682a8bab8f" - GatewayId: - description: "Идентификатор субаккаунта. Используется для разделения потоков платежей в рамках одного аккаунта." - type: "string" - example: "456" - FiscalizationProvider: - description: "The YooMoney’s solution that the store uses to send receipts. Possible values: 54-FZ: Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics: avanpost (“Avanpost” LLC), yoo_receipt (“Aitigrupp” LLC).; 54-FZ: a third-party online sales register: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics (name of an online sales register): a_qsi (aQsi online), atol (ATOL online), business_ru (Business.Ru), digital_kassa (digitalkassa), evotor (Evotor), first_ofd (1-OFD), kit_invest (Kit Invest), komtet (KOMTET Kassa), life_pay (LIFE PAY), mertrade (Mertrade), modul_kassa (ModulKassa), rocket (RocketR), shtrih_m (Orange Data)." - type: "string" - enum: - - "atol" - - "avanpost" - - "a_qsi" - - "business_ru" - - "digital_kassa" - - "evotor" - - "first_ofd" - - "kit_invest" - - "komtet" - - "life_pay" - - "mertrade" - - "modul_kassa" - - "rocket" - - "shtrih_m" - - "yoo_receipt" - example: "atol" - BankCardHolderName: - description: "Имя владельца карты." - type: "string" - pattern: "[a-zA-Z '-]{0,26}" - example: "John Smith" - CardRequestData: - description: "Данные банковской карты (необходимы, если вы собираете данные карты пользователей на своей стороне)." - type: "object" - properties: - number: - description: "Номер банковской карты." - type: "string" - pattern: "[0-9]{14,19}" - example: "5105105105105100" - expiry_year: - description: "Срок действия, год, YYYY." - type: "string" - pattern: "[0-9]{4}" - example: "2017" - expiry_month: - description: "Срок действия, месяц, MM." - type: "string" - pattern: "[0-9]{2}" - example: "07" - cardholder: - $ref: "#/components/schemas/BankCardHolderName" - required: - - "number" - - "expiry_year" - - "expiry_month" - ReceiptDataCustomer: - type: "object" - description: "Информация о пользователе. Необходимо указать как минимум контактные данные: для Чеков от ЮKassa — электронную почту (customer.email), в остальных случаях — электронную почту (customer.email) или номер телефона (customer.phone)." - properties: - full_name: - description: "Для юрлица — название организации, для ИП и физического лица — ФИО. Если у физлица отсутствует ИНН, в этом же параметре передаются паспортные данные. Не более 256 символов. Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу Orange Data, Атол Онлайн." - type: "string" - example: "Иванов Иван Иванович" - inn: - allOf: - - $ref: "#/components/schemas/RussianItn" - - description: "ИНН пользователя (10 или 12 цифр). Если у физического лица отсутствует ИНН, необходимо передать паспортные данные в параметре full_name. Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу Orange Data, Атол Онлайн." - email: - allOf: - - $ref: "#/components/schemas/Email" - - description: "User's email address for sending the receipt. A required parameter if you use Receipts from YooMoney or a third-party online sales register, and if you don't set the phone parameter." - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "Телефон пользователя для отправки чека. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000. Обязательный параметр, если не передан email." - ReceiptDataItem: - type: "object" - description: "Информация о товарной позиции в заказе. Используется для формирования чека." - properties: - description: - $ref: "#/components/schemas/ReceiptItemDescription" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Цена товара (тег в 54 ФЗ — 1079)." - vat_code: - $ref: "#/components/schemas/ReceiptItemVatCode" - quantity: - $ref: "#/components/schemas/ReceiptItemQuantity" - measure: - $ref: "#/components/schemas/ReceiptItemMeasure" - mark_quantity: - $ref: "#/components/schemas/MarkQuantity" - payment_subject: - $ref: "#/components/schemas/ReceiptItemPaymentSubject" - payment_mode: - $ref: "#/components/schemas/ReceiptItemPaymentMode" - country_of_origin_code: - $ref: "#/components/schemas/ReceiptItemCountryOfOriginCode" - customs_declaration_number: - $ref: "#/components/schemas/ReceiptItemCustomsDeclarationNumber" - excise: - $ref: "#/components/schemas/ReceiptItemExcise" - product_code: - $ref: "#/components/schemas/ReceiptItemProductCode" - planned_status: - $ref: "#/components/schemas/ReceiptItemPlannedStatus" - mark_code_info: - $ref: "#/components/schemas/MarkCodeInfo" - mark_mode: - $ref: "#/components/schemas/MarkMode" - payment_subject_industry_details: - $ref: "#/components/schemas/ReceiptItemPaymentSubjectIndustryDetails" - required: - - "description" - - "quantity" - - "amount" - - "vat_code" - TaxSystemCode: - description: "Система налогообложения магазина (тег в 54 ФЗ — 1055). Для сторонних онлайн-касс: обязательный параметр, если вы используете онлайн-кассу Атол Онлайн, обновленную до ФФД 1.2, или у вас несколько систем налогообложения, в остальных случаях не передается. Перечень возможных значений: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#tax-systems Для Чеков от ЮKassa: параметр передавать не нужно, ЮKassa его проигнорирует." - type: "integer" - format: "int32" - minimum: 1 - maximum: 6 - IndustryDetails: - description: "Данные отраслевого реквизита." - type: "object" - properties: - federal_id: - description: "Идентификатор федерального органа исполнительной власти (тег в 54 ФЗ — 1262)." - type: "string" - pattern: "(^00[1-9]{1}$)|(^0[1-6]{1}[0-9]{1}$)|(^07[0-3]{1}$)" - example: "001" - document_date: - description: "Дата документа основания (тег в 54 ФЗ — 1263). Передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601" - type: "string" - format: "date" - example: "2020-11-18" - document_number: - description: "Номер нормативного акта федерального органа исполнительной власти, регламентирующего порядок заполнения реквизита «значение отраслевого реквизита» (тег в 54 ФЗ — 1264)." - type: "string" - maxLength: 32 - value: - description: "Значение отраслевого реквизита (тег в 54 ФЗ — 1265)." - type: "string" - example: "123/43" - maxLength: 256 - required: - - "federal_id" - - "document_date" - - "document_number" - - "value" - OperationalDetails: - description: "Данные операционного реквизита чека" - type: "object" - properties: - operation_id: - description: "Идентификатор операции (тег в 54 ФЗ — 1271). Число от 0 до 255." - type: "integer" - minimum: 0 - maximum: 255 - example: 0 - value: - description: "Данные операции (тег в 54 ФЗ — 1272)." - type: "string" - maxLength: 64 - created_at: - description: "Время создания операции (тег в 54 ФЗ — 1273). Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2020-07-03T11:52:31.827Z" - required: - - "operation_id" - - "value" - - "created_at" - ReceiptItemDescription: - description: "Название товара (от 1 до 128 символов). Тег в 54 ФЗ — 1030." - type: "string" - ReceiptItemVatCode: - description: "Ставка НДС (тег в 54 ФЗ — 1199). Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#vat-codes * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#vat-codes" - type: "integer" - format: "int32" - minimum: 1 - maximum: 12 - ReceiptItemQuantity: - description: "Product quantity (tag 1023 in 54-FZ). You can set an integer or a decimal value. The decimal separator is a dot; there is no thousands separator. The maximum possible value and the maximum number of digits after the decimal separator (for decimal values) depend on the model of your online sales register. For Receipts from YooMoney, the maximum possible value is 99999.999, with no more than 3 digits after the decimal separator." - type: "number" - example: 1 - ReceiptItemMeasure: - description: "Мера количества предмета расчета (тег в 54 ФЗ — 2108) — единица измерения товара, например штуки, граммы. Обязательный параметр, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2. Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#measure * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#measure" - type: "string" - enum: - - "piece" - - "gram" - - "kilogram" - - "ton" - - "centimeter" - - "decimeter" - - "meter" - - "square_centimeter" - - "square_decimeter" - - "square_meter" - - "milliliter" - - "liter" - - "cubic_meter" - - "kilowatt_hour" - - "gigacalorie" - - "day" - - "hour" - - "minute" - - "second" - - "kilobyte" - - "megabyte" - - "gigabyte" - - "terabyte" - - "another" - example: "piece" - MarkQuantity: - description: "Дробное количество маркированного товара (тег в 54 ФЗ — 1291). Обязательный параметр, если одновременно выполняются эти условия: * вы используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2; * товар нужно маркировать: http://docs.cntd.ru/document/902192509; * поле measure имеет значение piece. Пример: вы продаете поштучно карандаши. Они поставляются пачками по 100 штук с одним кодом маркировки. При продаже одного карандаша нужно в numerator передать 1, а в denominator — 100." - type: "object" - properties: - numerator: - description: "Числитель — количество продаваемых товаров из одной потребительской упаковки (тег в 54 ФЗ — 1293). Не может превышать denominator." - type: "integer" - example: 1 - minimum: 1 - denominator: - description: "Знаменатель — общее количество товаров в потребительской упаковке (тег в 54 ФЗ — 1294)." - type: "integer" - example: 100 - minimum: 1 - required: - - "numerator" - - "denominator" - ReceiptItemPaymentSubject: - description: "Признак предмета расчета (тег в 54 ФЗ — 1212) — это то, за что принимается оплата, например товар, услуга. Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#payment-subject * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#payment-subject" - type: "string" - enum: - - "commodity" - - "excise" - - "job" - - "service" - - "gambling_bet" - - "gambling_prize" - - "lottery" - - "lottery_prize" - - "intellectual_activity" - - "payment" - - "agent_commission" - - "property_right" - - "non_operating_gain" - - "insurance_premium" - - "sales_tax" - - "resort_fee" - - "composite" - - "another" - - "fine" - - "tax" - - "lien" - - "cost" - - "pension_insurance_without_payouts" - - "pension_insurance_with_payouts" - - "health_insurance_without_payouts" - - "health_insurance_with_payouts" - - "health_insurance" - - "casino" - - "agent_withdrawals" - - "non_marked_excise" - - "marked_excise" - - "marked" - - "non_marked" - ReceiptItemPaymentMode: - description: "Признак способа расчета (тег в 54 ФЗ — 1214) — отражает тип оплаты и факт передачи товара. Пример: покупатель полностью оплачивает товар и сразу получает его. В этом случае нужно передать значение full_payment (полный расчет). Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#payment-mode * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#payment-mode" - type: "string" - enum: - - "full_prepayment" - - "partial_prepayment" - - "advance" - - "full_payment" - - "partial_payment" - - "credit" - - "credit_payment" - ReceiptItemCountryOfOriginCode: - description: "Код страны происхождения товара по общероссийскому классификатору стран мира (OК (MК (ИСО 3166) 004-97) 025-2001: http://docs.cntd.ru/document/842501280). Тег в 54 ФЗ — 1230. Пример: RU. Можно передавать, если используете онлайн-кассу Orange Data, Кит Инвест." - type: "string" - example: "RU" - ReceiptItemCustomsDeclarationNumber: - description: "Номер таможенной декларации (от 1 до 32 символов). Тег в 54 ФЗ — 1231. Можно передавать, если используете онлайн-кассу Orange Data, Кит Инвест." - type: "string" - minLength: 1 - maxLength: 32 - example: "10714040/140917/0090376" - ReceiptItemExcise: - description: "Сумма акциза товара с учетом копеек (тег в 54 ФЗ — 1229). Десятичное число с точностью до 2 знаков после точки. Можно передавать, если используете онлайн-кассу Orange Data, Кит Инвест." - type: "string" - example: "20.00" - ReceiptItemProductCode: - description: "Product code (tag 1162 in 54-FZ) is a unique number assigned to a unit of product during marking process. Format: hexadecimal number with spaces. Maximum length is 32 bytes. Example: 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00. This parameter is required if both conditions apply: your online sales register is updated to FFD 1.05 or 1.1; the product is subject to mandatory marking: http://docs.cntd.ru/document/902192509. The parameter must not be included in the request if you are using Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics or an online sales register updated to FFD 1.2: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/marking." - type: "string" - example: "00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00" - ReceiptItemPlannedStatus: - description: "Planned product status. Tag in 54-FZ: 2003. To be specified only for products that are subject to mandatory marking (parameter gs_1m, short, or fur is set in items.mark_code_info). Possible values are: for Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#planned-status; for third party online sales registers: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#planned-status." - type: "integer" - format: "int32" - minimum: 1 - maximum: 6 - MarkCodeInfo: - description: "Код товара (тег в 54 ФЗ — 1163). Обязательный параметр, если одновременно выполняются эти условия: * вы используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2; * товар нужно маркировать: http://docs.cntd.ru/document/902192509. Должно быть заполнено хотя бы одно поле." - type: "object" - properties: - mark_code_raw: - description: "Код товара в том виде, в котором он был прочитан сканером (тег в 54 ФЗ — 2000). Нужно передавать, если используете онлайн-кассу Orange Data. Пример: 010460406000590021N4N57RTCBUZTQ\\u001d2403054002410161218\\u001d1424010191ffd0\\u001g92tIAF/YVpU4roQS3M/m4z78yFq0nc/WsSmLeX6QkF/YVWwy5IMYAeiQ91Xa2m/fFSJcOkb2N+uUUtfr4n0mOX0Q==" - type: "string" - unknown: - description: "Нераспознанный код товара (тег в 54 ФЗ — 1300)." - type: "string" - minLength: 1 - maxLength: 32 - ean_8: - description: "Код товара в формате EAN-8 (тег в 54 ФЗ — 1301)." - type: "string" - minLength: 8 - maxLength: 8 - ean_13: - description: "Код товара в формате EAN-13 (тег в 54 ФЗ — 1302)." - type: "string" - minLength: 13 - maxLength: 13 - itf_14: - description: "Код товара в формате ITF-14 (тег в 54 ФЗ — 1303)." - type: "string" - minLength: 14 - maxLength: 14 - gs_10: - description: "Код товара в формате GS1.0 (тег в 54 ФЗ — 1304). Можно передавать, если используете онлайн-кассу Orange Data, aQsi, Кит Инвест, АТОЛ Онлайн." - type: "string" - minLength: 1 - maxLength: 38 - gs_1m: - description: "Код товара в формате GS1.M (тег в 54 ФЗ — 1305)." - type: "string" - minLength: 1 - maxLength: 200 - short: - description: "Код товара в формате короткого кода маркировки (тег в 54 ФЗ — 1306)." - type: "string" - minLength: 1 - maxLength: 38 - fur: - description: "Контрольно-идентификационный знак мехового изделия (тег в 54 ФЗ — 1307)." - type: "string" - minLength: 20 - maxLength: 20 - egais_20: - description: "Код товара в формате ЕГАИС-2.0 (тег в 54 ФЗ — 1308)." - type: "string" - minLength: 33 - maxLength: 33 - egais_30: - description: "Код товара в формате ЕГАИС-3.0 (тег в 54 ФЗ — 1309)." - type: "string" - maxLength: 14 - minLength: 14 - MarkMode: - description: "Режим обработки кода маркировки (тег в 54 ФЗ — 2102). Обязательный параметр, если одновременно выполняются эти условия: * вы используете Чеки от ЮKassa или онлайн-кассу Атол Онлайн или BusinessRu, обновленную до ФФД 1.2; * товар нужно маркировать: http://docs.cntd.ru/document/902192509. Должен принимать значение равное «0»." - type: "string" - pattern: "^[0]{1}$" - example: "0" - ReceiptItemPaymentSubjectIndustryDetails: - description: "Отраслевой реквизит предмета расчета (тег в 54 ФЗ — 1260). Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу, обновленную до ФФД 1.2." - type: "array" - items: - $ref: "#/components/schemas/IndustryDetails" - RussianItn: - description: "ИНН пользователя (10 или 12 цифр)." - type: "string" - example: "6321341814" - pattern: "\\d{10}|\\d{12}" - Email: - description: "Адрес электронной почты RFC 5322" - type: "string" - format: "email" - maxLength: 254 - example: "user@yoomoney.ru" - Phone: - description: "Номер телефона в формате ITU-T E.164" - type: "string" - pattern: "[0-9]{4,15}" - example: "79000000000" - SbpBankId: - type: "string" - description: "Идентификатор банка или платежного сервиса в СБП (НСПК)." - maxLength: 12 - pattern: "[a-zA-Z0-9]{12}" - example: "100000000111" - SbpBankBic: - type: "string" - description: "Банковский идентификационный код (БИК) банка или платежного сервиса." - maxLength: 9 - pattern: "\\d{9}" - example: "044525225" - PayoutDestinationDataType: - description: "Способ получения выплаты: * yoo_money — выплаты на кошелек ЮMoney; * bank_card — выплаты на банковскую карту; * sbp — выплаты через СБП на счет в банке или платежном сервисе." - type: "string" - enum: - - "yoo_money" - - "bank_card" - - "sbp" - PayoutDestinationData: - discriminator: - propertyName: "type" - mapping: - yoo_money: "#/components/schemas/PayoutToYooMoneyDestinationData" - bank_card: "#/components/schemas/PayoutToBankCardDestinationData" - sbp: "#/components/schemas/PayoutToSbpDestinationData" - type: "object" - description: "Данные платежного средства, на которое нужно сделать выплату. Обязательный параметр, если не передан payout_token или payment_method_id. Выплаты через СБП доступны только при обычных выплатах и только при выплатах физическим лицам." - properties: - type: - $ref: "#/components/schemas/PayoutDestinationDataType" - required: - - "type" - YooMoneyAccountNumber: - description: "Номер кошелька ЮMoney, например 41001614575714. Длина — от 11 до 33 цифр." - minLength: 11 - maxLength: 33 - type: "string" - example: "41001614575714" - CardDataForPayoutDestination: - description: "Данные банковской карты для выплаты." - type: "object" - properties: - number: - description: "Номер банковской карты. Формат: только цифры, без пробелов. Пример: 5555555555554477" - type: "string" - pattern: "[0-9]{16,19}" - example: "5555555555554477" - required: - - "number" - Recipient: - description: "Получатель платежа. Нужен, если вы разделяете потоки платежей в рамках одного аккаунта или создаете платеж в адрес другого аккаунта." - type: "object" - properties: - gateway_id: - $ref: "#/components/schemas/GatewayId" - required: - - "gateway_id" - PaymentToken: - description: "One-time payment token generated with Checkout.js: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/checkout-js/basics or mobile SDK: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/mobile-sdks/basics." - type: "string" - example: "+u7PDjMTkf08NtD66P6+eYWa2yjU3gsSIhOOO+OWsOg=" - PaymentId: - type: "string" - description: "Идентификатор платежа в ЮKassa." - minLength: 36 - maxLength: 36 - example: "1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - ConfirmationDataType: - description: "Type of payment confirmation scenario by the user. Possible values: redirect - redirecting the user to a ready-made YooMoney page or a partner's page; external - waiting for the user to confirm the payment independently; qr - generating a QR and displaying it on the payment page so that the user can confirm the payment; embedded - displaying the YooMoney payment widget; mobile_application - redirecting the user to the partner's payment app." - type: "string" - enum: - - "redirect" - - "external" - - "qr" - - "embedded" - - "mobile_application" - Locale: - description: "Язык интерфейса, писем и смс, которые будет видеть или получать пользователь. Формат соответствует ISO/IEC 15897: https://en.wikipedia.org/wiki/Locale_(computer_software). Возможные значения: ru_RU, en_US. Регистр важен." - type: "string" - enum: - - "ru_RU" - - "en_US" - example: "ru_RU" - ConfirmationData: - description: "Information required to initiate the selected payment confirmation scenario by the user. More about confirmation scenarios: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#user-confirmation" - type: "object" - properties: - type: - $ref: "#/components/schemas/ConfirmationDataType" - locale: - $ref: "#/components/schemas/Locale" - discriminator: - propertyName: "type" - mapping: - redirect: "#/components/schemas/ConfirmationDataRedirect" - external: "#/components/schemas/ConfirmationDataExternal" - qr: "#/components/schemas/ConfirmationDataQr" - embedded: "#/components/schemas/ConfirmationDataEmbedded" - mobile_application: "#/components/schemas/ConfirmationDataMobileApplication" - required: - - "type" - Enforce: - description: "Запрос на проведение платежа с аутентификацией по 3-D Secure. Будет работать, если оплату банковской картой вы по умолчанию принимаете без подтверждения платежа пользователем. В остальных случаях аутентификацией по 3-D Secure будет управлять ЮKassa. Если хотите принимать платежи без дополнительного подтверждения пользователем, напишите вашему менеджеру ЮKassa." - type: "boolean" - default: false - example: true - ReturnUrl: - description: "URL, на который вернется пользователь после подтверждения или отмены платежа на веб-странице. Не более 2048 символов." - type: "string" - maxLength: 2048 - ConfirmationType: - description: "Тип пользовательского процесса подтверждения платежа | - redirect - необходимо направить пользователя на страницу партнера; - external - необходимо подождать, пока пользователь самостоятельно подтвердит платеж; - qr - необходимо сгенерировать QR-код и отобразить его на странице оплаты, чтобы пользователь смог подтвердить платеж; - embedded - необходимо отобразить платежный виджет ЮKassa; - mobile_application - необходимо перенаправить пользователя в приложение партнера для оплаты." - type: "string" - enum: - - "redirect" - - "external" - - "qr" - - "embedded" - - "mobile_application" - example: "redirect" - Confirmation: - description: "Selected payment confirmation scenario. For payments requiring confirmation from the user. More about confirmation scenarios: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#user-confirmation" - type: "object" - properties: - type: - $ref: "#/components/schemas/ConfirmationType" - discriminator: - propertyName: "type" - mapping: - redirect: "#/components/schemas/ConfirmationRedirect" - external: "#/components/schemas/ConfirmationExternal" - qr: "#/components/schemas/ConfirmationQr" - embedded: "#/components/schemas/ConfirmationEmbedded" - mobile_application: "#/components/schemas/ConfirmationMobileApplication" - required: - - "type" - ConfirmationUrl: - description: "URL, на который необходимо перенаправить пользователя для подтверждения оплаты." - type: "string" - BankCardFirst6: - description: "Первые 6 цифр номера карты (BIN). При оплате картой, сохраненной в ЮKassa: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/basics и других сервисах, переданный BIN может не соответствовать значениям last4, expiry_year, expiry_month." - type: "string" - pattern: "[0-9]{6}" - example: "427918" - BankCardLast4: - description: "Последние 4 цифры номера карты." - type: "string" - pattern: "[0-9]{4}" - example: "7918" - BankCardExpiryYear: - description: "Срок действия, год, YYYY." - type: "string" - pattern: "[0-9]{4}" - example: "2017" - BankCardExpiryMonth: - description: "Срок действия, месяц, MM." - type: "string" - example: "07" - BankCardType: - description: "Тип банковской карты. Возможные значения: MasterCard (для карт Mastercard и Maestro), Visa (для карт Visa и Visa Electron), Mir, UnionPay, JCB, AmericanExpress, DinersClub, DiscoverCard, InstaPayment, InstaPaymentTM, Laser, Dankort, Solo, Switch и Unknown." - type: "string" - enum: - - "MasterCard" - - "Visa" - - "Mir" - - "UnionPay" - - "JCB" - - "AmericanExpress" - - "DinersClub" - - "DiscoverCard" - - "InstaPayment" - - "InstaPaymentTM" - - "Laser" - - "Dankort" - - "Solo" - - "Switch" - - "Unknown" - PaymentMethodType: - description: "Payment method code is the type of a means of payment used for paying. More about payment methods: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-methods" - type: "string" - enum: - - "bank_card" - - "cash" - - "alfabank" - - "webmoney" - - "wechat" - - "apple_pay" - - "google_pay" - - "qiwi" - - "installments" - - "yoo_money" - - "sberbank" - - "mobile_balance" - - "b2b_sberbank" - - "tinkoff_bank" - - "sbp" - - "sber_loan" - - "electronic_certificate" - - "sber_bnpl" - - "alfa_pay" - example: "bank_card" - PaymentMethodStatus: - type: "string" - description: "Статус проверки и сохранения способа оплаты. Возможные значения: * pending — ожидает действий от пользователя; * active — способ оплаты сохранен, его можно использовать для автоплатежей или выплат; * inactive — способ оплаты не сохранен: пользователь не подтвердил привязку платежного средства или при сохранении способа оплаты возникла ошибка. Чтобы узнать подробности, обратитесь в техническую поддержку ЮKassa." - enum: - - "pending" - - "active" - - "inactive" - example: "active" - PaymentMethodTitle: - description: "Название способа оплаты." - type: "string" - example: "Основная карта" - PaymentMethod: - type: "object" - description: "Payment method: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-methods#all used for this payment." - properties: - type: - $ref: "#/components/schemas/PaymentMethodType" - id: - description: "Payment method ID." - type: "string" - example: "1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - saved: - description: "Признак сохранения способа оплаты для автоплатежей: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/pay-with-saved. Возможные значения: * true — способ оплаты сохранен для автоплатежей и выплат; * false — способ оплаты не сохранен." - type: "boolean" - example: true - status: - allOf: - - $ref: "#/components/schemas/PaymentMethodStatus" - - description: "Статус проверки и сохранения способа оплаты. Возможные значения: * pending — ожидает действий от пользователя; * active — способ оплаты сохранен, его можно использовать для автоплатежей или выплат; * inactive — способ оплаты не сохранен: возникла ошибка или не было попытки сохранения способа оплаты." - title: - $ref: "#/components/schemas/PaymentMethodTitle" - discriminator: - propertyName: "type" - mapping: - bank_card: "#/components/schemas/PaymentMethodBankCard" - cash: "#/components/schemas/PaymentMethodCash" - qiwi: "#/components/schemas/PaymentMethodQiwi" - alfabank: "#/components/schemas/PaymentMethodAlfabank" - webmoney: "#/components/schemas/PaymentMethodWebmoney" - apple_pay: "#/components/schemas/PaymentMethodApplePay" - google_pay: "#/components/schemas/PaymentMethodGooglePay" - yoo_money: "#/components/schemas/PaymentMethodYooMoney" - sberbank: "#/components/schemas/PaymentMethodSberbank" - mobile_balance: "#/components/schemas/PaymentMethodMobileBalance" - installments: "#/components/schemas/PaymentMethodInstallments" - b2b_sberbank: "#/components/schemas/PaymentMethodB2bSberbank" - tinkoff_bank: "#/components/schemas/PaymentMethodTinkoffBank" - wechat: "#/components/schemas/PaymentMethodWeChat" - sbp: "#/components/schemas/PaymentMethodSbp" - sber_loan: "#/components/schemas/PaymentMethodSberLoan" - electronic_certificate: "#/components/schemas/PaymentMethodElectronicCertificate" - sber_bnpl: "#/components/schemas/PaymentMethodSberBnpl" - alfa_pay: "#/components/schemas/PaymentMethodAlfaPay" - required: - - "type" - - "id" - - "saved" - - "status" - BankCardData: - type: "object" - description: "Данные банковской карты." - properties: - first6: - $ref: "#/components/schemas/BankCardFirst6" - last4: - $ref: "#/components/schemas/BankCardLast4" - expiry_year: - $ref: "#/components/schemas/BankCardExpiryYear" - expiry_month: - $ref: "#/components/schemas/BankCardExpiryMonth" - card_type: - $ref: "#/components/schemas/BankCardType" - card_product: - $ref: "#/components/schemas/BankCardProduct" - issuer_country: - $ref: "#/components/schemas/BankCardIssuerCountry" - issuer_name: - $ref: "#/components/schemas/BankCardIssuerName" - source: - $ref: "#/components/schemas/BankCardDataSource" - required: - - "last4" - - "expiry_year" - - "expiry_month" - - "card_type" - BankCardProduct: - description: "Карточный продукт платежной системы, с которым ассоциирована банковская карта. Например, карточные продукты платежной системы Мир: Mir Classic, Mir Classic Credit, MIR Privilege Plus и другие." - type: "object" - properties: - code: - type: "string" - description: "Код карточного продукта. Пример: MCP" - example: "MCP" - name: - type: "string" - description: "Название карточного продукта. Пример: MIR Privilege" - example: "MIR Privilege" - required: - - "code" - BankCardIssuerCountry: - description: "Код страны, в которой выпущена карта. Передается в формате ISO-3166 alpha-2: https://www.iso.org/obp/ui/#iso:pub:PUB500001:en. Пример: RU." - type: "string" - example: "RU" - BankCardIssuerName: - description: "Наименование банка, выпустившего карту." - type: "string" - example: "Sberbank" - BankCardDataSource: - description: "Источник данных банковской карты. Возможные значения: mir_pay, apple_pay, google_pay. Присутствует, если пользователь при оплате выбрал карту, сохраненную в Mir Pay, Apple Pay или Google Pay." - type: "string" - enum: - - "apple_pay" - - "google_pay" - - "mir_pay" - InvoicingBankCardData: - type: "object" - description: "Данные банковской карты." - properties: - first6: - allOf: - - $ref: "#/components/schemas/BankCardFirst6" - - description: "Первые 6 цифр номера карты (BIN)." - last4: - $ref: "#/components/schemas/BankCardLast4" - expiry_year: - $ref: "#/components/schemas/BankCardExpiryYear" - expiry_month: - $ref: "#/components/schemas/BankCardExpiryMonth" - card_type: - $ref: "#/components/schemas/BankCardType" - required: - - "first6" - - "last4" - - "expiry_year" - - "expiry_month" - - "card_type" - SbpOperationId: - description: "Идентификатор операции в СБП (НСПК). Пример: 1027088AE4CB48CB81287833347A8777." - type: "string" - example: "1027088AE4CB48CB81287833347A8777" - SbpPayerBankDetails: - description: "Реквизиты счета, который использовался для оплаты. Обязательный параметр для платежей в статусе succeeded. В остальных случаях может отсутствовать." - type: "object" - properties: - bank_id: - $ref: "#/components/schemas/SbpBankId" - bic: - allOf: - - $ref: "#/components/schemas/SbpBankBic" - - description: "Банковский идентификационный код (БИК) банка или платежного сервиса. Используйте значение этого параметра, чтобы узнать дополнительные сведения об организации в Справочнике БИК: https://cbr.ru/PSystem/payment_system/?utm_source=w&utm_content=page#a_101477. Например, так вы можете определить название банка." - required: - - "bank_id" - - "bic" - PaymentPurpose: - description: "Назначение платежа (не больше 210 символов)." - type: "string" - pattern: "(?s).{1,210}" - example: "Оплата по договору №2143" - B2bSberbankCalculatedVatData: - description: "Данные об НДС, если товар или услуга облагается налогом (в параметре type передано значение calculated)." - allOf: - - $ref: "#/components/schemas/B2bSberbankVatData" - - type: "object" - properties: - rate: - type: "string" - enum: - - 5 - - 7 - - 10 - - 20 - - 22 - description: "Tax rate (in percentage). Possible values: 5, 7, 10, 20 and 22. Starting January 1, 2026, the 22% VAT rate applies instead of the 20% rate." - example: 22 - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма НДС." - required: - - "rate" - - "amount" - B2bSberbankUntaxedVatData: - description: "Данные об НДС, если товар или услуга не облагается налогом (в параметре type передано значение untaxed)." - allOf: - - $ref: "#/components/schemas/B2bSberbankVatData" - - type: "object" - B2bSberbankMixedVatData: - description: "Данные об НДС, если создается платеж на несколько товаров или услуг с разными ставками НДС (в параметре type передано значение mixed)." - allOf: - - $ref: "#/components/schemas/B2bSberbankVatData" - - type: "object" - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма НДС." - required: - - "amount" - B2bSberbankPayerBankDetails: - description: "Банковские реквизиты плательщика (юридического лица или ИП)." - type: "object" - properties: - full_name: - description: "Полное наименование организации." - type: "string" - maxLength: 800 - example: "Общество с ограниченной ответственностью 'Организация'" - short_name: - description: "Сокращенное наименование организации." - type: "string" - maxLength: 160 - example: "ООО 'Организация'" - address: - description: "Адрес организации." - type: "string" - example: "197111, Российская Федерация, г.Санкт-Петербург, ул.3-й Северовокзальный, д.17, корп./стр.2, кв.16" - maxLength: 500 - inn: - description: "Индивидуальный налоговый номер (ИНН) организации." - type: "string" - pattern: "\\d{10}|\\d{12}" - example: 7728662610 - bank_name: - description: "Наименование банка организации." - type: "string" - minLength: 1 - maxLength: 350 - example: "СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК" - bank_branch: - description: "Отделение банка организации." - type: "string" - minLength: 1 - maxLength: 140 - example: "СЕВЕРО-ЗАПАДНЫЙ БАНК СБЕРБАНКА РФ" - bank_bik: - description: "Банковский идентификационный код (БИК) банка организации." - type: "string" - pattern: "\\d{9}" - example: 9449899 - account: - description: "Номер счета организации." - type: "string" - pattern: "\\d{20}" - example: 40702810355002140000 - kpp: - description: "Код причины постановки на учет (КПП) организации." - type: "string" - pattern: "\\d{9}" - example: 783501610 - required: - - "full_name" - - "short_name" - - "address" - - "inn" - - "bank_name" - - "bank_branch" - - "bank_bik" - - "account" - ElectronicCertificatePayment: - type: "object" - description: "Данные от ФЭС НСПК для оплаты по электронному сертификату." - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, которая спишется с электронного сертификата." - basket_id: - allOf: - - $ref: "#/components/schemas/BasketId" - - description: "Идентификатор корзины покупки, сформированной в НСПК." - required: - - "amount" - - "basket_id" - ElectronicCertificateApprovedPaymentArticle: - type: "object" - description: "Товарная позиция в одобренной корзине покупки при оплате по электронному сертификату." - properties: - article_number: - $ref: "#/components/schemas/ElectronicCertificateArticleNumber" - tru_code: - $ref: "#/components/schemas/ElectronicCertificateTruCode" - article_code: - $ref: "#/components/schemas/ElectronicCertificateArticleCode" - certificates: - type: "array" - description: "Список электронных сертификатов, которые используются для оплаты покупки." - items: - $ref: "#/components/schemas/ElectronicCertificate" - required: - - "article_number" - - "tru_code" - - "certificates" - BasketId: - description: "Идентификатор корзины, сформированной в НСПК." - type: "string" - pattern: "[0-9]{24}" - example: "110200010001100000000001" - B2bSberbankVatDataType: - description: "Тип способа расчета НДС." - type: "string" - enum: - - "calculated" - - "untaxed" - - "mixed" - example: "calculated" - B2bSberbankVatData: - discriminator: - propertyName: "type" - mapping: - calculated: "#/components/schemas/B2bSberbankCalculatedVatData" - untaxed: "#/components/schemas/B2bSberbankUntaxedVatData" - mixed: "#/components/schemas/B2bSberbankMixedVatData" - description: "Данные о налоге на добавленную стоимость (НДС). Платеж может облагаться или не облагаться НДС. Товары могут облагаться по одной ставке НДС или по разным." - type: "object" - properties: - type: - $ref: "#/components/schemas/B2bSberbankVatDataType" - required: - - "type" - ElectronicCertificateArticleNumber: - description: "Порядковый номер товара в корзине. От 1 до 999 включительно." - type: "integer" - format: "int32" - minimum: 1 - maximum: 999 - example: 1 - ElectronicCertificateTruCode: - description: "Код ТРУ. 30 символов, две группы цифр, разделенные точкой. Формат: NNNNNNNNN.NNNNNNNNNYYYYMMMMZZZ, где NNNNNNNNN.NNNNNNNNN — код вида ТРУ по Перечню ТРУ: https://esnsi.gosuslugi.ru/classifiers/10616/data?pg=1&p=1, YYYY — код производителя, MMMM — код модели, ZZZ — код страны производителя. Пример: 329921120.06001010200080001643 Как сформировать код ТРУ: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/basics#payments-preparations-tru-code" - example: "329921120.06001010200080001643" - type: "string" - minLength: 30 - maxLength: 30 - ElectronicCertificateArticleCode: - description: "Код товара в вашей системе. Максимум 128 символов." - example: "432" - type: "string" - maxLength: 128 - ElectronicCertificate: - type: "object" - description: "Описание используемого электронного сертификата." - properties: - certificate_id: - type: "string" - description: "Идентификатор сертификата. От 20 до 30 символов." - minLength: 20 - maxLength: 30 - tru_quantity: - type: "integer" - description: "Количество единиц товара, которое одобрили для оплаты по этому электронному сертификату." - available_compensation: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Максимально допустимая сумма, которую может покрыть электронный сертификат для оплаты одной единицы товара. Пример: сертификат может компенсировать максимум 1000 рублей для оплаты этого товара." - applied_compensation: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, которую одобрили для оплаты по сертификату за одну единицу товара. Пример: из 1000 рублей одобрили 500 рублей для оплаты по сертификату." - required: - - "certificate_id" - - "tru_quantity" - - "available_compensation" - - "applied_compensation" - Rrn: - type: "string" - description: "Retrieval Reference Number is a identifier of a bank transaction." - example: "603668680243" - ThreeDSecureDetails: - type: "object" - description: "Information about user’s 3‑D Secure authentication for confirming the payment." - properties: - applied: - type: "boolean" - description: "Information on whether the 3-D Secure authentication form is displayed to the user for confirming the payment or not. Possible values: true: YooMoney displayed the form to the user, so that they could complete 3-D Secure authentication; false: payment was processed without 3-D Secure authentication." - example: true - required: - - "applied" - AccountId: - description: "Идентификатор магазина в ЮKassa." - type: "string" - example: "123" - TransferStatus: - description: "Status of the money distribution between stores. Possible values: pending, waiting_for_capture, succeeded, canceled." - type: "string" - enum: - - "pending" - - "waiting_for_capture" - - "succeeded" - - "canceled" - example: "succeeded" - Metadata: - type: "object" - description: "Любые дополнительные данные, которые нужны вам для работы (например, ваш внутренний идентификатор заказа). Передаются в виде набора пар «ключ-значение» и возвращаются в ответе от ЮKassa. Ограничения: максимум 16 ключей, имя ключа не больше 32 символов, значение ключа не больше 512 символов, тип данных — строка в формате UTF-8." - maxProperties: 16 - additionalProperties: - type: "string" - nullable: true - DealId: - description: "Идентификатор сделки." - minLength: 36 - maxLength: 50 - type: "string" - example: "dl-d68d2fe4-2abb-47e5-8112-32e28f87fb52" - SettlementPaymentArray: - type: "array" - description: "Данные о распределении денег." - items: - oneOf: - - $ref: "#/components/schemas/SettlementPayoutPayment" - discriminator: - propertyName: "type" - SettlementPayoutPayment: - allOf: - - $ref: "#/components/schemas/SettlementPaymentItem" - - type: "object" - SettlementPaymentItem: - type: "object" - description: "Данные о распределении денег." - properties: - type: - $ref: "#/components/schemas/SettlementItemType" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма вознаграждения продавца." - discriminator: - propertyName: "type" - mapping: - payout: "#/components/schemas/SettlementPayoutPayment" - required: - - "type" - - "amount" - SettlementItemType: - description: "Transaction type." - type: "string" - enum: - - "payout" - example: "payout" - PaymentStatus: - description: "Payment status. Possible values: pending, waiting_for_capture, succeeded, and canceled. More about the life cycle of a payment: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#lifecycle" - type: "string" - enum: - - "pending" - - "waiting_for_capture" - - "succeeded" - - "canceled" - example: "succeeded" - PaymentMethodBankCard: - description: "Оплата банковской картой." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - card: - $ref: "#/components/schemas/BankCardData" - PaymentMethodCash: - description: "Payments in cash via payment kiosks." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodQiwi: - description: "Оплата из кошелька QIWI Wallet." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodAlfabank: - description: "Оплата через Альфа-Клик." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - login: - description: "Логин пользователя в Альфа-Клике (привязанный телефон или дополнительный логин)." - type: "string" - PaymentMethodWebmoney: - description: "Оплата из кошелька WebMoney." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodSberbank: - description: "Оплата через SberPay." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - phone: - description: "Телефон пользователя, на который зарегистрирован аккаунт в SberPay. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - type: "string" - pattern: "[0-9]{4,15}" - example: "79000000000" - card: - $ref: "#/components/schemas/InvoicingBankCardData" - PaymentMethodTinkoffBank: - description: "Оплата через T-Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - card: - $ref: "#/components/schemas/InvoicingBankCardData" - PaymentMethodYooMoney: - description: "Оплата из кошелька ЮMoney." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - account_number: - description: "Номер кошелька ЮMoney, из которого заплатил пользователь." - type: "string" - pattern: "[0-9]{11,33}" - example: "41001184120504" - PaymentMethodApplePay: - description: "Оплата через Apple Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodGooglePay: - description: "Оплата через Google Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodMobileBalance: - description: "Оплата с баланса мобильного телефона." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodInstallments: - description: "Оплата через сервис «Заплатить по частям» (в кредит или рассрочку)." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodB2bSberbank: - description: "Оплата через Сбербанк Бизнес Онлайн." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - payment_purpose: - $ref: "#/components/schemas/PaymentPurpose" - vat_data: - oneOf: - - $ref: "#/components/schemas/B2bSberbankCalculatedVatData" - - $ref: "#/components/schemas/B2bSberbankUntaxedVatData" - - $ref: "#/components/schemas/B2bSberbankMixedVatData" - discriminator: - propertyName: "type" - payer_bank_details: - $ref: "#/components/schemas/B2bSberbankPayerBankDetails" - required: - - "payment_purpose" - - "vat_data" - PaymentMethodWeChat: - description: "Оплата через WeChat." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodSbp: - description: "Оплата через СБП (Система быстрых платежей ЦБ РФ)." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - sbp_operation_id: - allOf: - - $ref: "#/components/schemas/SbpOperationId" - - description: "Идентификатор операции в СБП (НСПК). Пример: 1027088AE4CB48CB81287833347A8777 Обязательный параметр для платежей в статусе succeeded. В остальных случаях может отсутствовать." - payer_bank_details: - $ref: "#/components/schemas/SbpPayerBankDetails" - PaymentMethodSberLoan: - description: "Оплата в кредит или рассрочку от СберБанка." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - loan_option: - description: "Тариф кредита, который пользователь выбрал при оплате. Возможные значения: loan — кредит; installments_XX — рассрочка, где XX — количество месяцев для выплаты рассрочки. Например, installments_3 — рассрочка на 3 месяца. Присутствует для платежей в статусе waiting_for_capture и succeeded." - type: "string" - example: "installments_3" - minLength: 1 - discount_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма скидки для рассрочки. Присутствует для платежей в статусе waiting_for_capture и succeeded, если пользователь выбрал рассрочку." - suspended_until: - description: "Время, когда заканчивается период охлаждения: https://yookassa.ru/docs/support/payments/credit-purchases-by-sberbank-with-cooling-off кредита или рассрочки. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Присутствует для платежей в статусе pending, которые по закону: https://www.consultant.ru/document/cons_doc_LAW_498604/ попадают под процедуру охлаждения." - type: "string" - format: "date-time" - example: "2017-11-03T11:52:31.827Z" - PaymentMethodElectronicCertificate: - description: "Оплата по электронному сертификату." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - card: - allOf: - - $ref: "#/components/schemas/BankCardData" - - description: "Данные банковской карты «Мир»." - electronic_certificate: - $ref: "#/components/schemas/ElectronicCertificatePayment" - articles: - type: "array" - description: "Одобренная корзина покупки — список товаров, одобренных к оплате по электронному сертификату. Присутствует только при оплате на готовой странице ЮKassa: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/ready-made-payment-form." - items: - $ref: "#/components/schemas/ElectronicCertificateApprovedPaymentArticle" - PaymentMethodSberBnpl: - description: "Оплата через сервис «Плати частями»." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - PaymentMethodAlfaPay: - description: "Payment via Alfa Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethod" - - type: "object" - properties: - card: - $ref: "#/components/schemas/InvoicingBankCardData" - ConfirmationRedirect: - allOf: - - $ref: "#/components/schemas/Confirmation" - - type: "object" - properties: - enforce: - $ref: "#/components/schemas/Enforce" - return_url: - $ref: "#/components/schemas/ReturnUrl" - confirmation_url: - $ref: "#/components/schemas/ConfirmationUrl" - required: - - "confirmation_url" - ConfirmationExternal: - type: "object" - allOf: - - $ref: "#/components/schemas/Confirmation" - ConfirmationQr: - allOf: - - $ref: "#/components/schemas/Confirmation" - - type: "object" - properties: - confirmation_data: - description: "Данные для генерации QR-кода." - type: "string" - required: - - "confirmation_data" - ConfirmationEmbedded: - allOf: - - $ref: "#/components/schemas/Confirmation" - - type: "object" - properties: - confirmation_token: - type: "string" - description: "Токен для инициализации платежного виджета ЮKassa: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/widget/basics." - example: "ct-22e12f66-000f-5000-8000-18db351245c7" - required: - - "confirmation_token" - ConfirmationMobileApplication: - allOf: - - $ref: "#/components/schemas/Confirmation" - - type: "object" - properties: - confirmation_url: - allOf: - - $ref: "#/components/schemas/ConfirmationUrl" - - description: "Диплинк на мобильное приложение, в котором пользователь подтверждает платеж." - type: "string" - required: - - "confirmation_url" - Test: - description: "Признак тестовой операции." - type: "boolean" - example: false - ReceiptRegistrationStatus: - type: "string" - enum: - - "pending" - - "succeeded" - - "canceled" - example: "succeeded" - PaymentCancellationDetails: - type: "object" - description: "Commentary to the canceled status: who and why canceled the payment. More about canceled payments: https://yookassa.ru/developers/payment-acceptance/after-the-payment/declined-payments" - properties: - party: - type: "string" - description: "The participant of the payment process that made the decision to cancel the payment. Possible values are yoo_money, payment_network, and merchant. More about initiators of payment cancelation: https://yookassa.ru/developers/payment-acceptance/after-the-payment/declined-payments#cancellation-details-party" - enum: - - "yoo_money" - - "payment_network" - - "merchant" - reason: - type: "string" - description: "Reason behind the cancelation. The list and descriptions of possible values: https://yookassa.ru/developers/payment-acceptance/after-the-payment/declined-payments#cancellation-details-reason" - example: "insufficient_funds" - enum: - - "3d_secure_failed" - - "call_issuer" - - "card_expired" - - "payment_method_limit_exceeded" - - "payment_method_restricted" - - "country_forbidden" - - "general_decline" - - "fraud_suspected" - - "identification_required" - - "insufficient_funds" - - "invalid_card_number" - - "invalid_csc" - - "issuer_unavailable" - - "canceled_by_merchant" - - "permission_revoked" - - "internal_timeout" - - "expired_on_confirmation" - - "expired_on_capture" - - "unsupported_mobile_operator" - - "deal_expired" - required: - - "party" - - "reason" - AuthorizationDetails: - type: "object" - description: "Payment authorization details when paying by a bank card. Available only for following payment methods: bank card, Mir Pay, SberPay, T-Pay." - properties: - rrn: - $ref: "#/components/schemas/Rrn" - auth_code: - type: "string" - description: "Authorization code. Provided by the issuer to confirm authorization." - example: "062467" - three_d_secure: - $ref: "#/components/schemas/ThreeDSecureDetails" - required: - - "three_d_secure" - Transfer: - type: "object" - description: "Information about money distribution: the amounts of transfers and the stores to be transferred to. Specified if you use Split payments: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - properties: - account_id: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "ID of the store in favor of which you're accepting the receipt. Provided by YooMoney, displayed in the Sellers: https://yookassa.ru/my/marketplace/sellers section of your Merchant Profile (shopId column)." - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Amount to be transferred to the store." - - type: "object" - status: - $ref: "#/components/schemas/TransferStatus" - platform_fee_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Commission for sold products or services charged in your favor." - - type: "object" - description: - description: "Transaction description (up to 128 characters), which the seller will see in the YooMoney Merchant Profile. Example: \"Marketplace order No. 72\"." - type: "string" - maxLength: 128 - example: "Marketplace order No. 72" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "account_id" - - "amount" - - "status" - PaymentDealInfo: - type: "object" - properties: - id: - $ref: "#/components/schemas/DealId" - settlements: - $ref: "#/components/schemas/SettlementPaymentArray" - required: - - "id" - - "settlements" - MerchantCustomerId: - description: "Идентификатор покупателя в вашей системе, например электронная почта или номер телефона. Не более 200 символов." - type: "string" - maxLength: 200 - example: "user@test.merchant" - InvoiceId: - description: "Invoice ID in YooMoney." - type: "string" - minLength: 39 - maxLength: 39 - example: "in-e44e8088-bd73-43b1-959a-954f3a7d0c54" - PaymentMethodId: - description: "Saved payment method: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/basics's ID." - type: "string" - example: "1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - PaymentMethodDataBankCard: - description: "Данные для оплаты банковской картой." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - card: - $ref: "#/components/schemas/CardRequestDataWithCsc" - PaymentMethodDataCash: - description: "Данные для оплаты наличными в терминалах России или СНГ." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - phone: - description: "Телефон пользователя, на который придет смс с кодом платежа (для внесения наличных). Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000. Поле можно оставить пустым: пользователь сможет заполнить его при оплате на стороне ЮKassa." - type: "string" - pattern: "[0-9]{4,15}" - example: "79000000000" - PaymentMethodDataSberbank: - description: "Данные для оплаты через SberPay." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - phone: - description: "Телефон пользователя, на который зарегистрирован аккаунт в SberPay. Необходим для подтверждения оплаты по смс (сценарий подтверждения external). Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - type: "string" - pattern: "[0-9]{4,15}" - example: "79000000000" - PaymentMethodDataTinkoffBank: - description: "Данные для оплаты через T-Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - PaymentMethodDataYooMoney: - description: "Data for processing a payment made via the YooMoney wallet." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - PaymentMethodDataMobileBalance: - description: "Данные для оплаты с баланса мобильного телефона." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - phone: - description: "Телефон, с баланса которого осуществляется платеж. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - type: "string" - pattern: "[0-9]{4,15}" - example: "79000000000" - required: - - "phone" - PaymentMethodDataB2bSberbank: - description: "Данные для оплаты через СберБанк Бизнес Онлайн." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - payment_purpose: - $ref: "#/components/schemas/PaymentPurpose" - vat_data: - oneOf: - - $ref: "#/components/schemas/B2bSberbankCalculatedVatData" - - $ref: "#/components/schemas/B2bSberbankUntaxedVatData" - - $ref: "#/components/schemas/B2bSberbankMixedVatData" - discriminator: - propertyName: "type" - required: - - "payment_purpose" - - "vat_data" - PaymentMethodDataSbp: - description: "Данные для оплаты через СБП" - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - PaymentMethodDataSberLoan: - description: "Данные для оплаты в кредит или рассрочку от СберБанка." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - PaymentMethodDataElectronicCertificate: - description: "Данные для оплаты по электронному сертификату." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - card: - $ref: "#/components/schemas/CardRequestDataWithCsc" - electronic_certificate: - $ref: "#/components/schemas/ElectronicCertificatePaymentData" - articles: - description: "Корзина покупки (в терминах НСПК) — список товаров, которые можно оплатить по сертификату. Необходимо передавать только при оплате на готовой странице ЮKassa: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/ready-made-payment-form." - type: "array" - items: - $ref: "#/components/schemas/ElectronicCertificateArticle" - PaymentMethodDataSberBnpl: - description: "Данные для оплаты через сервис «Плати частями»." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - properties: - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "The user's phone number. Sent to the partner and used for authorization in the \"Pay in installments\" service. Maximum 15 characters. Specified in the ITU-T E.164: https://ru.wikipedia.org/wiki/E.164 format. Example: 79000000000." - PaymentMethodDataAlfaPay: - description: "Data for payments via Alfa Pay." - allOf: - - $ref: "#/components/schemas/PaymentMethodData" - - type: "object" - ConfirmationDataRedirect: - allOf: - - $ref: "#/components/schemas/ConfirmationData" - - type: "object" - properties: - enforce: - $ref: "#/components/schemas/Enforce" - return_url: - $ref: "#/components/schemas/ReturnUrl" - required: - - "return_url" - ConfirmationDataExternal: - type: "object" - allOf: - - $ref: "#/components/schemas/ConfirmationData" - - type: "object" - ConfirmationDataQr: - allOf: - - $ref: "#/components/schemas/ConfirmationData" - - type: "object" - properties: - return_url: - allOf: - - $ref: "#/components/schemas/ReturnUrl" - - description: "The address of the page that will be open to the user when they've confirmed or cancelled the payment in the bank app. For example, if you need to return the user to the website, you may set the URL, or the deeplink for redirecting to the mobile app. The URL should conform to the RFC-3986: https://www.ietf.org/rfc/rfc3986.txt standard. Maximum 2048 characters. Available only for payments via the Faster Payments System: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/sbp." - ConfirmationDataEmbedded: - allOf: - - $ref: "#/components/schemas/ConfirmationData" - - type: "object" - ConfirmationDataMobileApplication: - allOf: - - $ref: "#/components/schemas/ConfirmationData" - - type: "object" - properties: - return_url: - allOf: - - $ref: "#/components/schemas/ReturnUrl" - - description: "URL or deep link, to which user will return after confirming or canceling the payment in the app. Send the URL if the payment was made via the mobile version of the website, or send the deep link if the payment was made via mobile app. Maximum 255 characters for payments made via SberPay: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/sberpay#create-payment-mobile-application. Maximum 2,048 characters for other payment methods: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-methods#all." - required: - - "return_url" - SavePaymentMethodAttribute: - description: "Сохранение платежных данных для проведения автоплатежей: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/basics. Возможные значения: * true — сохранить способ оплаты (сохранить платежные данные); * false — провести платеж без сохранения способа оплаты. Доступно только после согласования с менеджером ЮKassa." - type: "boolean" - default: false - example: true - Capture: - description: "Автоматический прием: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#capture-true поступившего платежа. Возможные значения: * true — оплата списывается сразу (платеж в одну стадию); * false — оплата холдируется и списывается по вашему запросу (платеж в две стадии: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#capture-and-cancel). По умолчанию false." - type: "boolean" - default: false - example: true - ClientIp: - description: "IPv4 или IPv6-адрес пользователя. Если не указан, используется IP-адрес TCP-подключения." - type: "string" - Airline: - description: "Объект с данными для продажи авиабилетов: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/airline-tickets. Используется только для платежей банковской картой." - type: "object" - properties: - ticket_number: - description: "Unique ticket number. If you already know the ticket number during payment creation, ticket_number is a required parameter. If you don't, specify booking_reference instead of ticket_number." - type: "string" - minLength: 1 - maxLength: 150 - pattern: "[0-9]{1,150}" - example: "5554916004417" - booking_reference: - description: "Booking reference number, required if ticket_number is not specified." - type: "string" - minLength: 1 - maxLength: 20 - example: "IIIKRV" - passengers: - description: "List of passengers." - type: "array" - minItems: 0 - maxItems: 500 - items: - $ref: "#/components/schemas/AirlinePassenger" - legs: - description: "List of flight legs." - type: "array" - minItems: 0 - maxItems: 4 - items: - $ref: "#/components/schemas/AirlineLeg" - TransferDataPayment: - allOf: - - $ref: "#/components/schemas/TransferData" - - type: "object" - properties: - description: - description: "Transaction description (up to 128 characters), which the seller will see in the YooMoney Merchant Profile. Example: \"Marketplace order No. 72\"." - type: "string" - maxLength: 128 - example: "Marketplace order No. 72" - metadata: - $ref: "#/components/schemas/Metadata" - PaymentOrderDataUtilities: - description: "Платежное поручение — распоряжение на перевод банку для оплаты жилищно-коммунальных услуг (ЖКУ), сведения о платеже для регистрации в ГИС ЖКХ. Необходимо передавать при оплате ЖКУ: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/utility-payments. Кроме параметров, отмеченных как обязательные, должен быть передан как минимум один параметр из этого списка: payment_document_id, payment_document_number, account_number, unified_account_number или service_id." - allOf: - - $ref: "#/components/schemas/PaymentOrderData" - - type: "object" - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма платежного поручения — сумма, которую пользователь переводит получателю платежа. Равна общей сумме платежа." - payment_purpose: - allOf: - - $ref: "#/components/schemas/PaymentPurpose" - - description: "Payment purpose (no more than 210 characters). The payment purpose should be specified according to the recommendations from Letter of the Bank of Russia No. IN-04-45|12 dated 22.02.2018: https://my.dom.gosuslugi.ru/filestore/publicDownloadServlet?context=contentmanagement&uid=ef9a477a-2beb-4212-be30-aed231160db1&mode=view. Example: Payment for housing and utilities;ELS (Single Personal Account) 80KX478547;PRD (Payment Period) 12.2024;Ivanov Ivan;Moscow, 1 Flotskaya ulitsa, apartment 1" - recipient: - allOf: - - $ref: "#/components/schemas/PaymentOrderRecipientUtilities" - - description: "Получатель платежа — государственная или коммерческая организация, которая предоставляет услуги или является информационным посредником, который собирает и обрабатывает начисления от других поставщиков услуг." - kbk: - $ref: "#/components/schemas/Kbk" - oktmo: - $ref: "#/components/schemas/Oktmo" - payment_period: - $ref: "#/components/schemas/PaymentPeriod" - payment_document_id: - type: "string" - description: "Идентификатор платежного документа. Обязательный параметр, если не передан payment_document_number, account_number, unified_account_number или service_id." - minLength: 18 - maxLength: 18 - example: "34СТ185329-01-2352" - payment_document_number: - type: "string" - description: "Номер платежного документа на стороне поставщика ЖКУ. Обязательный параметр, если не передан payment_document_id, account_number, unified_account_number или service_id." - minLength: 1 - maxLength: 30 - pattern: "(.)([0-9а-яА-Яa-zA-Z]+)(.)" - account_number: - type: "string" - description: "Номер лицевого счета на стороне поставщика ЖКУ. Обязательный параметр, если не передан payment_document_id, payment_document_number, unified_account_number или service_id." - minLength: 1 - maxLength: 30 - pattern: "(.)([0-9а-яА-Яa-zA-Z]+)(.)" - unified_account_number: - type: "string" - description: "Единый лицевой счет. Уникальный идентификатор в ГИС ЖКХ, который характеризует связку «собственник-помещение». Обязательный параметр, если не передан payment_document_id, payment_document_number, account_number или service_id." - minLength: 10 - maxLength: 10 - example: "60АА000593" - service_id: - type: "string" - description: "Идентификатор жилищно-коммунальной услуги (ЖКУ). Обязательный параметр, если не передан payment_document_id, payment_document_number, account_number или unified_account_number." - minLength: 13 - maxLength: 13 - example: "34СТ185329-01" - required: - - "amount" - - "payment_purpose" - - "recipient" - ReceiverMobileBalance: - description: "Реквизиты для пополнения баланса телефона." - allOf: - - $ref: "#/components/schemas/Receiver" - - type: "object" - properties: - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - {} - - description: "Номер телефона для пополнения. Максимум 15 символов. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164. Пример: 79000000000." - required: - - "phone" - ReceiverDigitalWallet: - description: "Реквизиты для пополнения баланса электронного кошелька." - allOf: - - $ref: "#/components/schemas/Receiver" - - type: "object" - properties: - account_number: - description: "Идентификатор электронного кошелька для пополнения. Максимум 20 символов." - type: "string" - maxLength: 20 - example: "N41001184120504" - required: - - "account_number" - ReceiverBankAccount: - description: "Реквизиты для пополнения банковского счета." - allOf: - - $ref: "#/components/schemas/Receiver" - - type: "object" - properties: - account_number: - description: "Номер банковского счета. Формат — 20 символов." - type: "string" - maxLength: 20 - pattern: "\\d{20}" - example: "40817810099910004312" - bic: - description: "Банковский идентификационный код (БИК) банка, в котором открыт счет. Формат — 9 символов." - type: "string" - maxLength: 9 - pattern: "\\d{9}" - example: "044525974" - required: - - "account_number" - - "bic" - PaymentOverviewStatementData: - description: "Квитанция по платежу." - allOf: - - $ref: "#/components/schemas/Statement" - - type: "object" - properties: - delivery_method: - oneOf: - - $ref: "#/components/schemas/PaymentOverviewStatementEmailDeliveryMethod" - required: - - "delivery_method" - Payment: - type: "object" - description: "Payment object (Payment) contains the relevant information about the payment." - properties: - id: - $ref: "#/components/schemas/PaymentId" - status: - $ref: "#/components/schemas/PaymentStatus" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Payment amount. Sometimes YooMoney's partners charge additional commission from the users that is not included in this amount. The amount is specified with the currency code. It should match the currency of your subaccount (recipient.gateway_id) if you separate payment flows, or the currency of the account (shopId in the Merchant Profile) if you don't." - income_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма платежа, которую получит магазин, — значение amount за вычетом комиссии ЮKassa и суммы НДС с этой комиссии. Если вы партнер: https://yookassa.ru/developers/solutions-for-platforms/partners-api/basics и для аутентификации запросов используете OAuth-токен, запросите у магазина право: https://yookassa.ru/developers/solutions-for-platforms/partners-api/oauth/basics на получение информации о комиссиях при платежах." - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание транзакции (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а пользователь — при оплате. Например: «Оплата заказа № 72 для user@yoomoney.ru»." - recipient: - description: "Payment recipient." - type: "object" - properties: - account_id: - $ref: "#/components/schemas/AccountId" - gateway_id: - $ref: "#/components/schemas/GatewayId" - required: - - "account_id" - - "gateway_id" - payment_method: - oneOf: - - $ref: "#/components/schemas/PaymentMethodBankCard" - - $ref: "#/components/schemas/PaymentMethodCash" - - $ref: "#/components/schemas/PaymentMethodQiwi" - - $ref: "#/components/schemas/PaymentMethodAlfabank" - - $ref: "#/components/schemas/PaymentMethodWebmoney" - - $ref: "#/components/schemas/PaymentMethodSberbank" - - $ref: "#/components/schemas/PaymentMethodTinkoffBank" - - $ref: "#/components/schemas/PaymentMethodYooMoney" - - $ref: "#/components/schemas/PaymentMethodApplePay" - - $ref: "#/components/schemas/PaymentMethodGooglePay" - - $ref: "#/components/schemas/PaymentMethodMobileBalance" - - $ref: "#/components/schemas/PaymentMethodInstallments" - - $ref: "#/components/schemas/PaymentMethodB2bSberbank" - - $ref: "#/components/schemas/PaymentMethodWeChat" - - $ref: "#/components/schemas/PaymentMethodSbp" - - $ref: "#/components/schemas/PaymentMethodSberLoan" - - $ref: "#/components/schemas/PaymentMethodElectronicCertificate" - - $ref: "#/components/schemas/PaymentMethodSberBnpl" - - $ref: "#/components/schemas/PaymentMethodAlfaPay" - discriminator: - propertyName: "type" - captured_at: - description: "Time of payment capture, based on UTC: https://en.wikipedia.org/wiki/Coordinated_Universal_Time and specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format." - type: "string" - format: "date-time" - example: "2017-11-03T11:52:31.827Z" - created_at: - description: "Time of order creation, based on UTC: https://en.wikipedia.org/wiki/Coordinated_Universal_Time and specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2017-11-03T11:52:31.827Z" - expires_at: - description: "The period during which you can cancel or capture a payment for free. The payment with the waiting_for_capture status will be automatically canceled at the specified time. Based on UTC: https://en.wikipedia.org/wiki/Coordinated_Universal_Time and specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2017-11-03T11:52:31.827Z" - confirmation: - oneOf: - - $ref: "#/components/schemas/ConfirmationRedirect" - - $ref: "#/components/schemas/ConfirmationExternal" - - $ref: "#/components/schemas/ConfirmationQr" - - $ref: "#/components/schemas/ConfirmationEmbedded" - - $ref: "#/components/schemas/ConfirmationMobileApplication" - discriminator: - propertyName: "type" - test: - $ref: "#/components/schemas/Test" - refunded_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "The amount refunded to the user. Specified if the payment has successful refunds." - paid: - description: "The attribute of a paid order." - type: "boolean" - example: true - refundable: - description: "Availability of the option to make a refund via API." - type: "boolean" - example: true - receipt_registration: - allOf: - - $ref: "#/components/schemas/ReceiptRegistrationStatus" - - description: "Статус регистрации чека. Возможные значения: pending — данные в обработке; succeeded — чек успешно зарегистрирован; canceled — чек зарегистрировать не удалось; если используете Чеки от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics, обратитесь в техническую поддержку, в остальных случаях сформируйте чек вручную. Присутствует, если вы используете решения ЮKassa для отправки чеков в налоговую: https://yookassa.ru/developers/payment-acceptance/receipts/basics." - metadata: - $ref: "#/components/schemas/Metadata" - cancellation_details: - $ref: "#/components/schemas/PaymentCancellationDetails" - authorization_details: - $ref: "#/components/schemas/AuthorizationDetails" - transfers: - description: "Information about money distribution: the amounts of transfers and the stores to be transferred to. Specified if you use Split payments: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - type: "array" - items: - $ref: "#/components/schemas/Transfer" - deal: - allOf: - - $ref: "#/components/schemas/PaymentDealInfo" - - description: "The deal within which the payment is being carried out. Specified if you use Safe deal: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics." - merchant_customer_id: - allOf: - - $ref: "#/components/schemas/MerchantCustomerId" - - description: "The identifier of the customer in your system, such as email address or phone number. No more than 200 characters. Specified if you want to save a bank card and offer it for a recurring payment in the YooMoney payment widget: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/widget/basics." - invoice_details: - type: "object" - description: "Данные о выставленном счете, в рамках которого проведен платеж." - properties: - id: - $ref: "#/components/schemas/InvoiceId" - required: - - "id" - - "status" - - "amount" - - "created_at" - - "paid" - - "test" - - "refundable" - - "recipient" - Error: - description: "Объект ошибки." - type: "object" - properties: - type: - type: "string" - description: "Тип объекта." - enum: - - "error" - id: - type: "string" - description: "Идентификатор ошибки. Используйте его, если возникла необходимость обратиться в техническую поддержку." - example: "ecf255db-cce8-4f15-8fc2-3d7a4678c867" - description: - type: "string" - description: "Подробное описание ошибки." - example: "Invalid API key provided" - parameter: - type: "string" - description: "Название параметра, из-за которого произошла ошибка." - example: "payment_method" - retry_after: - type: "integer" - description: "Рекомендуемое количество миллисекунд, спустя которое следует повторить запрос." - example: 1800 - BadRequest: - description: "Запрос не может быть обработан. Причиной может быть неправильный синтаксис запроса, ошибка в обязательных параметрах запроса, их отсутствие или неподдерживаемый метод." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки" - type: "string" - enum: - - "invalid_request" - InvalidCredentials: - description: "В заголовке Authorization указан неверный ключ." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки" - type: "string" - enum: - - "invalid_credentials" - Forbidden: - description: "Секретный ключ указан верно, но не хватает прав для совершения операции." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки." - type: "string" - enum: - - "forbidden" - NotFound: - description: "Сущность не найдена." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки." - type: "string" - enum: - - "not_found" - Gone: - description: "Сущность была раньше, но была умышленно удалена и теперь недоступна." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки." - type: "string" - enum: - - "gone" - TooManyRequests: - description: "Слишком много запросов одновременно отправляется в API. Повторите запрос позже." - type: "object" - allOf: - - $ref: "#/components/schemas/Error" - - type: "object" - properties: - code: - description: "Код ошибки." - type: "string" - enum: - - "too_many_requests" - PaymentList: - type: "object" - description: "Список платежей. Платежи отсортированы по времени создания в порядке убывания (от новых к старым). Если результатов больше, чем задано в limit, список будет выводиться фрагментами. В этом случае в ответе на запрос вернется фрагмент списка и параметр next_cursor с указателем на следующий фрагмент." - properties: - type: - type: "string" - description: "Формат выдачи результатов запроса. Возможное значение: list (список)." - enum: - - "list" - items: - type: "array" - items: - $ref: "#/components/schemas/Payment" - next_cursor: - $ref: "#/components/schemas/NextCursor" - required: - - "type" - - "items" - TransferDataCapture: - allOf: - - $ref: "#/components/schemas/TransferData" - PaymentMethodData: - type: "object" - description: "Data for making payments using a certain method: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/basics#integration-options (payment_method). You can send the request without this object. If you do so, the user will be able to select the payment method on the YooMoney's side." - properties: - type: - type: "string" - enum: - - "bank_card" - - "cash" - - "sberbank" - - "tinkoff_bank" - - "yoo_money" - - "mobile_balance" - - "b2b_sberbank" - - "sbp" - - "sber_loan" - - "electronic_certificate" - - "sber_bnpl" - - "alfa_pay" - discriminator: - propertyName: "type" - mapping: - bank_card: "#/components/schemas/PaymentMethodDataBankCard" - cash: "#/components/schemas/PaymentMethodDataCash" - sberbank: "#/components/schemas/PaymentMethodDataSberbank" - tinkoff_bank: "#/components/schemas/PaymentMethodDataTinkoffBank" - yoo_money: "#/components/schemas/PaymentMethodDataYooMoney" - mobile_balance: "#/components/schemas/PaymentMethodDataMobileBalance" - b2b_sberbank: "#/components/schemas/PaymentMethodDataB2bSberbank" - sbp: "#/components/schemas/PaymentMethodDataSbp" - sber_loan: "#/components/schemas/PaymentMethodDataSberLoan" - electronic_certificate: "#/components/schemas/PaymentMethodDataElectronicCertificate" - sber_bnpl: "#/components/schemas/PaymentMethodDataSberBnpl" - alfa_pay: "#/components/schemas/PaymentMethodDataAlfaPay" - required: - - "type" - CardRequestDataWithCsc: - allOf: - - $ref: "#/components/schemas/CardRequestData" - type: "object" - properties: - csc: - description: "Код CVC2 или CVV2, 3 или 4 символа, печатается на обратной стороне карты." - type: "string" - pattern: "[0-9]{3,4}" - example: "012" - required: - - "number" - - "expiry_year" - - "expiry_month" - ElectronicCertificatePaymentData: - type: "object" - description: "Данные от ФЭС НСПК для оплаты по электронному сертификату. Неоходимо передавать только при оплате со сбором данных на вашей стороне: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/merchant-payment-form." - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, которую необходимо использовать по электронному сертификату, — значение totalCertAmount, которое вы получили в ФЭС НСПК в запросе на предварительное одобрение использования сертификата (Pre-Auth): https://www.nspk.ru/developer/api-fes#operation/preAuthPurchase. Сумма должна быть не больше общей суммы платежа (amount)." - basket_id: - allOf: - - $ref: "#/components/schemas/BasketId" - - description: "Идентификатор корзины покупки, сформированной в НСПК, — значение purchaseBasketId, которое вы получили в ФЭС НСПК в запросе на предварительное одобрение использования сертификата (Pre-Auth): https://www.nspk.ru/developer/api-fes#operation/preAuthPurchase." - required: - - "amount" - - "basket_id" - ElectronicCertificateArticle: - type: "object" - description: "Товарная позиция в корзине покупки при оплате по электронному сертификату." - properties: - article_number: - $ref: "#/components/schemas/ElectronicCertificateArticleNumber" - tru_code: - $ref: "#/components/schemas/ElectronicCertificateTruCode" - article_code: - $ref: "#/components/schemas/ElectronicCertificateArticleCode" - article_name: - description: "Название товара в вашей системе. Отображается на готовой платежной форме ЮKassa. Максимум 128 символов." - example: "Item #432" - type: "string" - maxLength: 128 - quantity: - $ref: "#/components/schemas/ElectronicCertificateArticleQuantity" - price: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Цена за единицу товара." - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "article_number" - - "tru_code" - - "article_name" - - "quantity" - - "price" - ElectronicCertificateArticleQuantity: - description: "Количество единиц товара. Формат: целое положительное число." - example: 4 - type: "integer" - format: "int32" - TransferData: - type: "object" - description: "Information about money distribution: the amounts of transfers and the stores to be transferred to. Specified if you use Split payments: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - properties: - account_id: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "ID of the store in favor of which you're accepting the receipt. Provided by YooMoney, displayed in the Sellers: https://yookassa.ru/my/marketplace/sellers section of your Merchant Profile (shopId column)." - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Amount to be transferred to the store." - - type: "object" - platform_fee_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Commission for sold products or services charged in your favor." - - type: "object" - required: - - "account_id" - - "amount" - AirlinePassenger: - description: "Информация о пассажире." - type: "object" - properties: - first_name: - description: "Passenger's first name. Only use Latin characters, for example, SERGEI." - type: "string" - minLength: 1 - maxLength: 64 - example: "SERGEI" - last_name: - description: "Passenger's last name. Only use Latin characters, for example, IVANOV." - type: "string" - minLength: 1 - maxLength: 64 - example: "IVANOV" - required: - - "first_name" - - "last_name" - AirlineLeg: - description: "Информация о перелете." - type: "object" - properties: - departure_airport: - description: "Code of the departure airport according to IATA: https://www.iata.org/publications/Pages/code-search.aspx, for example, LED." - type: "string" - minLength: 3 - maxLength: 3 - pattern: "[A-Z]{3}" - example: "LED" - destination_airport: - description: "Code of the arrival airport according to IATA: https://www.iata.org/publications/Pages/code-search.aspx, for example, AMS." - type: "string" - minLength: 3 - maxLength: 3 - pattern: "[A-Z]{3}" - example: "AMS" - departure_date: - description: "Departure date in the YYYY-MM-DD ISO 8601:2004: http://www.iso.org/iso/catalogue_detail?csnumber=40874 format." - type: "string" - format: "date" - example: "2018-06-20" - carrier_code: - description: "Airline code according to IATA: https://www.iata.org/publications/Pages/code-search.aspx." - type: "string" - minLength: 2 - maxLength: 3 - example: "SU" - required: - - "departure_airport" - - "destination_airport" - - "departure_date" - PaymentOrderData: - type: "object" - description: "Платежное поручение — распоряжение на перевод банку для оплаты жилищно-коммунальных услуг (ЖКУ), сведения о платеже для регистрации в ГИС ЖКХ. Необходимо передавать при оплате ЖКУ: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/utility-payments." - properties: - type: - type: "string" - enum: - - "utilities" - discriminator: - propertyName: "type" - mapping: - utilities: "#/components/schemas/PaymentOrderDataUtilities" - required: - - "type" - PaymentOrderRecipientUtilities: - type: "object" - description: "Получатель платежа" - properties: - name: - type: "string" - description: "Название получателя." - inn: - type: "string" - description: "ИНН получателя." - pattern: "[0-9]{10}" - kpp: - type: "string" - description: "КПП получателя." - pattern: "[0-9]{9}" - bank: - allOf: - - $ref: "#/components/schemas/PaymentOrderBankUtilities" - - description: "Банк получателя." - required: - - "name" - - "inn" - - "kpp" - - "bank" - Kbk: - type: "string" - description: "Код бюджетной классификации (КБК)." - minLength: 1 - maxLength: 20 - pattern: "([\\d]{20})|(0)" - example: "70311105013130000120" - Oktmo: - type: "string" - description: "Код ОКТМО (Общероссийский классификатор территорий муниципальных образований)." - minLength: 1 - maxLength: 8 - pattern: "([\\d]{8})|(0)" - example: "98627153" - PaymentPeriod: - type: "object" - description: "Период оплаты, за который выставлены начисления и за который вносится оплата." - properties: - month: - type: "integer" - description: "Месяц периода. Например, 1 — январь." - minimum: 1 - maximum: 12 - year: - type: "integer" - description: "Payment period year. The value must be within the range 1920–2050. For example, 2025." - minimum: 1920 - maximum: 2050 - required: - - "month" - - "year" - PaymentOrderBankUtilities: - type: "object" - description: "Банк получателя платежа." - properties: - name: - type: "string" - description: "Name of the recipient's bank. Maximum of 45 characters." - maxLength: 45 - bic: - type: "string" - description: "БИК банка получателя." - pattern: "[0-9]{9}" - account: - type: "string" - description: "Счет получателя в банке." - correspondent_account: - type: "string" - description: "Корреспондентский счет банка получателя." - required: - - "name" - - "bic" - - "account" - - "correspondent_account" - ReceiverType: - description: "Payment receiver code." - type: "string" - enum: - - "mobile_balance" - - "digital_wallet" - - "bank_account" - example: "mobile_balance" - Receiver: - discriminator: - propertyName: "type" - mapping: - mobile_balance: "#/components/schemas/ReceiverMobileBalance" - digital_wallet: "#/components/schemas/ReceiverDigitalWallet" - bank_account: "#/components/schemas/ReceiverBankAccount" - description: "Payment receiver's details specified when you want to add money to e-wallet, bank account, or phone balance: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/receiver-data." - type: "object" - properties: - type: - $ref: "#/components/schemas/ReceiverType" - required: - - "type" - Statement: - type: "object" - description: "Data for sending statements. Required if you want the user to receive a statement after they make a payment. Only one type of statement is currently available: payment overview. This is the information about a successful payment that YooMoney sends to the user's email address. An overview may be sent if the payment was made via bank cards, SberPay, or FPS. The option to send overviews is available for all integration scenarios: https://yookassa.ru/developers/payment-acceptance/getting-started/selecting-integration-scenario." - discriminator: - propertyName: "type" - mapping: - payment_overview: "#/components/schemas/PaymentOverviewStatementData" - properties: - type: - type: "string" - enum: - - "payment_overview" - required: - - "type" - PaymentOverviewStatementEmailDeliveryMethod: - description: "Cпособ доставки справки." - allOf: - - $ref: "#/components/schemas/PaymentOverviewStatementDeliveryMethod" - - type: "object" - properties: - email: - allOf: - - $ref: "#/components/schemas/Email" - - description: "Электронная почта пользователя для отправки справки. Адрес электронной почты должен соответствовать стандарту RFC 5322: https://www.ietf.org/rfc/rfc5322.txt. Пример: user@example.com." - required: - - "email" - PaymentOverviewStatementDeliveryMethodType: - type: "string" - enum: - - "email" - example: "email" - PaymentOverviewStatementDeliveryMethod: - description: "Данные о выбранном способе доставки справки." - type: "object" - discriminator: - propertyName: "type" - mapping: - email: "#/components/schemas/PaymentOverviewStatementEmailDeliveryMethod" - properties: - type: - $ref: "#/components/schemas/PaymentOverviewStatementDeliveryMethodType" - required: - - "type" - NextCursor: - description: "Указатель на следующий фрагмент списка. Обязательный параметр, если размер списка больше размера выдачи (limit) и конец выдачи не достигнут." - type: "string" - example: "37a5c87d-3984-51e8-a7f3-8de646d39ec15" - SavePaymentMethodDataBankCard: - description: "Данные для проверки и сохранения банковской карты." - allOf: - - $ref: "#/components/schemas/SavePaymentMethodData" - - type: "object" - properties: - card: - $ref: "#/components/schemas/CardRequestDataWithCsc" - SavePaymentMethodBankCard: - description: "Сохраненная банковская карта." - allOf: - - $ref: "#/components/schemas/SavePaymentMethod" - - type: "object" - properties: - card: - $ref: "#/components/schemas/BankCardData" - PaymentMethodsConfirmationDataRedirect: - description: "Перенаправление пользователя на сайт ЮKassa для подтверждения привязки или страницу банка-эмитента для аутентификации по 3-D Secure." - allOf: - - $ref: "#/components/schemas/PaymentMethodsConfirmationData" - - type: "object" - properties: - enforce: - allOf: - - $ref: "#/components/schemas/Enforce" - - description: "Запрос на проведение привязки с аутентификацией по 3-D Secure. Будет работать, если оплату банковской картой вы по умолчанию принимаете без подтверждения платежа пользователем. В остальных случаях аутентификацией по 3-D Secure будет управлять ЮKassa. Если хотите принимать платежи и создавать привязки без дополнительного подтверждения пользователем, напишите вашему менеджеру ЮKassa." - return_url: - allOf: - - $ref: "#/components/schemas/ReturnUrl" - - description: "URL, на который вернется пользователь после подтверждения или отмены привязки на веб-странице. Не более 2048 символов." - locale: - $ref: "#/components/schemas/Locale" - required: - - "return_url" - PaymentMethodsConfirmationType: - description: "Код сценария подтверждения пользователем привязки платежного средства к вашему магазину в ЮKassa." - type: "string" - enum: - - "redirect" - example: "redirect" - PaymentMethodsConfirmationData: - description: "Данные, необходимые для инициирования сценария подтверждения привязки." - type: "object" - discriminator: - propertyName: "type" - mapping: - redirect: "#/components/schemas/PaymentMethodsConfirmationDataRedirect" - properties: - type: - $ref: "#/components/schemas/PaymentMethodsConfirmationType" - required: - - "type" - PaymentMethodsConfirmation: - description: "Выбранный сценарий подтверждения привязки. Присутствует, когда привязка ожидает подтверждения от пользователя." - type: "object" - discriminator: - propertyName: "type" - mapping: - redirect: "#/components/schemas/PaymentMethodsConfirmationRedirect" - properties: - type: - $ref: "#/components/schemas/PaymentMethodsConfirmationType" - required: - - "type" - SavePaymentMethodData: - type: "object" - description: "Данные для проверки и сохранения способа оплаты." - properties: - type: - type: "string" - enum: - - "bank_card" - holder: - allOf: - - $ref: "#/components/schemas/Recipient" - - description: "Данные магазина, для которого сохраняется способ оплаты." - client_ip: - $ref: "#/components/schemas/ClientIp" - confirmation: - oneOf: - - $ref: "#/components/schemas/PaymentMethodsConfirmationDataRedirect" - discriminator: - propertyName: "type" - mapping: - bank_card: "#/components/schemas/SavePaymentMethodDataBankCard" - required: - - "type" - SavePaymentMethodType: - description: "Тип способа оплаты." - type: "string" - enum: - - "bank_card" - example: "bank_card" - PaymentMethodsConfirmationRedirect: - description: "Перенаправление пользователя на сайт ЮKassa для подтверждения привязки или страницу банка-эмитента для аутентификации по 3-D Secure." - allOf: - - $ref: "#/components/schemas/PaymentMethodsConfirmation" - - type: "object" - properties: - confirmation_url: - allOf: - - $ref: "#/components/schemas/ConfirmationUrl" - - description: "URL, на который необходимо перенаправить пользователя для подтверждения привязки." - enforce: - allOf: - - $ref: "#/components/schemas/Enforce" - - description: "Запрос на проведение привязки с аутентификацией по 3-D Secure. Будет работать, если оплату банковской картой вы по умолчанию принимаете без подтверждения платежа пользователем. В остальных случаях аутентификацией по 3-D Secure будет управлять ЮKassa. Если хотите принимать платежи и создавать привязки без дополнительного подтверждения пользователем, напишите вашему менеджеру ЮKassa." - return_url: - allOf: - - $ref: "#/components/schemas/ReturnUrl" - - description: "URL, на который вернется пользователь после подтверждения или отмены привязки на веб-странице. Не более 2048 символов." - required: - - "confirmation_url" - SavePaymentMethod: - type: "object" - description: "Сохраненный способ оплаты." - discriminator: - propertyName: "type" - mapping: - bank_card: "#/components/schemas/SavePaymentMethodBankCard" - properties: - type: - $ref: "#/components/schemas/SavePaymentMethodType" - id: - description: "Идентификатор сохраненного способа оплаты." - type: "string" - example: "1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - saved: - description: "Признак сохранения способа оплаты для автоплатежей: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/pay-with-saved. Возможные значения: * true — способ оплаты сохранен для автоплатежей и выплат; * false — способ оплаты не сохранен." - type: "boolean" - example: true - status: - $ref: "#/components/schemas/PaymentMethodStatus" - holder: - description: "Данные магазина, для которого сохраняется способ оплаты." - type: "object" - properties: - account_id: - $ref: "#/components/schemas/AccountId" - gateway_id: - $ref: "#/components/schemas/GatewayId" - required: - - "account_id" - title: - $ref: "#/components/schemas/PaymentMethodTitle" - confirmation: - oneOf: - - $ref: "#/components/schemas/PaymentMethodsConfirmationRedirect" - discriminator: - propertyName: "type" - mapping: - redirect: "#/components/schemas/PaymentMethodsConfirmationRedirect" - required: - - "id" - - "type" - - "saved" - - "status" - - "holder" - PaymentData: - type: "object" - description: "Данные для проведения платежа по выставленному счету." - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Payment amount. It must be within limits: https://yookassa.ru/docs/support/payments/limits. The amount is specified with the currency code. It should match the currency of your subaccount (recipient.gateway_id) if you separate payment flows, or the currency of the account (shopId in the Merchant Profile) if you don't." - receipt: - $ref: "#/components/schemas/ReceiptData" - recipient: - $ref: "#/components/schemas/Recipient" - save_payment_method: - $ref: "#/components/schemas/SavePaymentMethodAttribute" - capture: - $ref: "#/components/schemas/Capture" - client_ip: - $ref: "#/components/schemas/ClientIp" - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание транзакции (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а пользователь — при оплате. Например: «Оплата заказа № 72 для user@yoomoney.ru»." - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "amount" - Cart: - description: "Корзина заказа — список товаров или услуг, который отобразится на странице счета перед оплатой." - type: "array" - items: - $ref: "#/components/schemas/LineItem" - DeliveryMethodDataSelf: - description: "Данные для выставления счета с самостоятельной доставкой ссылки на счет." - allOf: - - $ref: "#/components/schemas/DeliveryMethodData" - - type: "object" - DeliveryMethodDataSms: - description: "Данные для выставления счета с доставкой ссылки на счет в смс." - allOf: - - $ref: "#/components/schemas/DeliveryMethodData" - - type: "object" - properties: - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "Номер телефона, на который ЮKassa отправит смс со ссылкой на счет. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - required: - - "phone" - DeliveryMethodDataEmail: - description: "Данные для выставления счета с отправкой по электронной почте." - allOf: - - $ref: "#/components/schemas/DeliveryMethodData" - - type: "object" - properties: - email: - allOf: - - $ref: "#/components/schemas/Email" - - description: "Адрес электронной почты, на который ЮKassa отправит письмо со ссылкой на счет." - required: - - "email" - InvoiceExpirationDate: - type: "string" - format: "date-time" - description: "Срок действия счета — дата и время, до которых можно оплатить выставленный счет. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2024-10-18T10:51:18.139Z" - example: "2024-10-18T10:51:18.139Z" - Invoice: - type: "object" - description: "Invoice object (Invoice) contains all the relevant information about the invoice." - properties: - id: - $ref: "#/components/schemas/InvoiceId" - status: - $ref: "#/components/schemas/InvoiceStatus" - cart: - $ref: "#/components/schemas/Cart" - delivery_method: - oneOf: - - $ref: "#/components/schemas/DeliveryMethodSelf" - - $ref: "#/components/schemas/DeliveryMethodSms" - - $ref: "#/components/schemas/DeliveryMethodEmail" - discriminator: - propertyName: "type" - payment_details: - $ref: "#/components/schemas/PaymentDetails" - created_at: - type: "string" - format: "date-time" - description: "Дата и время создания счета на оплату. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - example: "2017-11-03T11:52:31.827Z" - expires_at: - allOf: - - $ref: "#/components/schemas/InvoiceExpirationDate" - - description: "Срок действия счета — дата и время, до которых можно оплатить выставленный счет. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2024-10-18T10:51:18.139Z Присутствует только для счетов в статусе pending." - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание выставленного счета (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а пользователь на странице счета. Например: «Счет на оплату по договору 37»." - cancellation_details: - $ref: "#/components/schemas/InvoiceCancellationDetails" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "id" - - "status" - - "cart" - - "created_at" - InvoiceStatus: - description: "Статус счета. Возможные значения: pending — счет создан и ожидает успешной оплаты; succeeded — счет успешно оплачен, есть связанный платеж в статусе succeeded (финальный и неизменяемый статус для платежей в одну стадию); canceled — вы отменили счет, успешный платеж по нему не поступил или был отменен (при оплате в две стадии) либо истек срок действия счета (финальный и неизменяемый статус). Подробнее про жизненный цикл счета: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/invoices/basics#invoice-status" - type: "string" - enum: - - "pending" - - "succeeded" - - "canceled" - example: "succeeded" - DeliveryMethodSelf: - description: "Данные для самостоятельной доставки пользователю ссылки на счет." - allOf: - - $ref: "#/components/schemas/DeliveryMethod" - - type: "object" - properties: - url: - description: "URL страницы счета, который необходимо передать пользователю для оплаты. Не более 2048 символов." - type: "string" - maxLength: 2048 - DeliveryMethodSms: - description: "Данные способа отправки счета по смс." - allOf: - - $ref: "#/components/schemas/DeliveryMethod" - DeliveryMethodEmail: - description: "Данные способа отправки счета по по электронной почте." - allOf: - - $ref: "#/components/schemas/DeliveryMethod" - PaymentDetails: - type: "object" - description: "Данные о платеже по выставленному счету. Присутствуют, только если платеж успешно подтвержден пользователем: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#user-confirmation." - properties: - id: - $ref: "#/components/schemas/PaymentId" - status: - allOf: - - $ref: "#/components/schemas/PaymentStatus" - - description: "Статус платежа. Возможные значения: * waiting_for_capture — для платежей в две стадии: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#capture-and-cancel: платеж оплачен, деньги авторизованы, вам необходимо списать оплату или отменить платеж; * succeeded — платеж успешно завершен, деньги будут перечислены на ваш расчетный счет в соответствии с вашим договором с ЮKassa (финальный и неизменяемый статус); * canceled — для платежей в две стадии: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#capture-and-cancel: вы отменили платеж по API (финальный и неизменяемый статус)." - required: - - "id" - - "status" - InvoiceCancellationDetails: - type: "object" - description: "Commentary for the canceled status: who canceled the invoice and for what reason." - properties: - party: - type: "string" - description: "The participant of the process who made the decision to cancel the invoice. Possible values: merchant — a seller of products and services (you); yoo_money — YooMoney." - enum: - - "yoo_money" - - "merchant" - reason: - type: "string" - description: "Reason for canceling the invoice. Possible values: invoice_canceled: invoice was canceled manually: https://yookassa.rudocs/support/merchant/invoices-to-clients/invoicing#invoicing__cancel from the Merchant Profile; invoice_expired: the invoice validity period, which you set in the expires_at parameter when creating request, has expired and there are no successful payments associated with the invoice; general_decline: the reason is not detailed, so the user should contact the initiator of cancellation for details; payment_canceled: two-stage payment was canceled via API: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#cancel; payment_expired_on_capture: debit period: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-process#hold for a two-stage payment has expired." - example: "invoice_expired" - enum: - - "invoice_canceled" - - "invoice_expired" - - "general_decline" - - "payment_canceled" - - "payment_expired_on_capture" - required: - - "party" - - "reason" - LineItem: - type: "object" - description: "Данные о товаре или услуге в корзине." - properties: - description: - description: "Название товара или услуги (от 1 до 128 символов). Пользователь увидит его на странице счета перед оплатой." - type: "string" - price: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Полная цена товара или услуги. Пользователь увидит ее на странице счета перед оплатой." - discount_price: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Итоговая цена товара с учетом скидки. Если передана, то на странице счета цена отобразится с учетом скидки. Не нужно передавать, если пользователь оплачивает полную стоимость товара или услуги." - quantity: - description: "Количество товара. Можно передать целое или дробное число. Разделитель дробной части — точка, разделитель тысяч отсутствует, максимум три знака после точки. Пример: 5.000" - type: "number" - example: 1 - required: - - "description" - - "price" - - "quantity" - DeliveryMethodData: - type: "object" - description: "The details of the invoice delivery method. Learn more about invoice delivery methods: https://yookassa.ru/developers/payment-acceptance/scenario-extensions/invoices/basics#send-invoice" - properties: - type: - description: "The code of the invoice delivery method." - type: "string" - enum: - - "self" - - "sms" - - "email" - discriminator: - propertyName: "type" - mapping: - self: "#/components/schemas/DeliveryMethodDataSelf" - sms: "#/components/schemas/DeliveryMethodDataSms" - email: "#/components/schemas/DeliveryMethodDataEmail" - required: - - "type" - DeliveryMethod: - type: "object" - description: "Данные о выбранном способе доставки счета. Присутствует только для счетов в статусе pending." - properties: - type: - type: "string" - enum: - - "self" - - "sms" - - "email" - discriminator: - propertyName: "type" - mapping: - self: "#/components/schemas/DeliveryMethodSelf" - sms: "#/components/schemas/DeliveryMethodSms" - email: "#/components/schemas/DeliveryMethodEmail" - required: - - "type" - RefundSourcesData: - type: "object" - description: "Данные о том, с какого магазина и какую сумму нужно удержать для проведения возврата. Сейчас в этом параметре можно передать данные только одного магазина." - properties: - account_id: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "Идентификатор магазина, для которого вы хотите провести возврат. Выдается ЮKassa, отображается в разделе Продавцы: https://yookassa.ru/my/marketplace/sellers личного кабинета (столбец shopId)." - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма возврата." - - type: "object" - platform_fee_amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Комиссия, которую вы удержали при оплате, и хотите вернуть." - - type: "object" - required: - - "account_id" - - "amount" - RefundDealData: - type: "object" - description: "Данные о сделке, в составе которой проходит возврат. Необходимо передавать, если вы проводите Безопасную сделку: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics." - properties: - refund_settlements: - $ref: "#/components/schemas/SettlementRefundArray" - required: - - "refund_settlements" - ElectronicCertificateRefundMethodData: - description: "Данные для возврата платежа по электронному сертификату." - allOf: - - $ref: "#/components/schemas/RefundMethodData" - - type: "object" - properties: - electronic_certificate: - $ref: "#/components/schemas/ElectronicCertificateRefundDataRequest" - articles: - type: "array" - description: "Корзина возврата (в терминах НСПК) — список возвращаемых товаров, для оплаты которых использовался электронный сертификат. Данные должны соответствовать товарам из одобренной корзины покупки (articles в объекте платежа: https://yookassa.ru/developers/api#payment_object). Необходимо передавать только при оплате на готовой странице ЮKassa: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/ready-made-payment-form." - items: - $ref: "#/components/schemas/ElectronicCertificateRefundArticle" - Refund: - description: "Refund object (Refund) contains all the relevant information about the payment refund." - type: "object" - properties: - id: - $ref: "#/components/schemas/RefundId" - payment_id: - $ref: "#/components/schemas/PaymentId" - status: - $ref: "#/components/schemas/RefundStatus" - cancellation_details: - $ref: "#/components/schemas/RefundCancellationDetails" - receipt_registration: - allOf: - - $ref: "#/components/schemas/ReceiptRegistrationStatus" - - description: "Статус регистрации чека. Возможные значения: pending — данные в обработке; succeeded — чек успешно зарегистрирован; canceled — чек зарегистрировать не удалось; если используете Чеки от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics, обратитесь в техническую поддержку, в остальных случаях сформируйте чек вручную. Присутствует, если вы используете решения ЮKassa для отправки чеков в налоговую: https://yookassa.ru/developers/payment-acceptance/receipts/basics." - created_at: - description: "Время создания возврата. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601, например 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2017-11-03T11:52:31.827Z" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, возвращенная пользователю." - description: - description: "Основание для возврата денег пользователю." - type: "string" - maxLength: 250 - sources: - description: "Данные о том, с какого магазина и какую сумму нужно удержать для проведения возврата. Присутствует, если вы используете Сплитование платежей: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - type: "array" - items: - $ref: "#/components/schemas/RefundSourcesData" - deal: - $ref: "#/components/schemas/RefundDealInfo" - refund_method: - oneOf: - - $ref: "#/components/schemas/SbpRefundMethod" - - $ref: "#/components/schemas/ElectronicCertificateRefundMethod" - discriminator: - propertyName: "type" - refund_authorization_details: - $ref: "#/components/schemas/RefundAuthorizationDetails" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "id" - - "payment_id" - - "amount" - - "status" - - "created_at" - RefundStatus: - description: "Статус возврата платежа. Возможные значения: pending — возврат создан, но пока еще обрабатывается; succeeded — возврат успешно завершен, указанная в запросе сумма переведена на платежное средство пользователя (финальный и неизменяемый статус); canceled — возврат отменен, инициатор и причина отмены указаны в объекте cancellation_details (финальный и неизменяемый статус)." - type: "string" - enum: - - "pending" - - "succeeded" - - "canceled" - example: "succeeded" - RefundList: - type: "object" - description: "Список возвратов. Возвраты отсортированы по времени создания в порядке убывания (от новых к старым). Если результатов больше, чем задано в limit, список будет выводиться фрагментами. В этом случае в ответе на запрос вернется фрагмент списка и параметр next_cursor с указателем на следующий фрагмент." - properties: - type: - type: "string" - description: "Формат выдачи результатов запроса. Возможное значение: list (список)." - enum: - - "list" - items: - type: "array" - items: - $ref: "#/components/schemas/Refund" - next_cursor: - $ref: "#/components/schemas/NextCursor" - required: - - "type" - - "items" - RefundId: - description: "Идентификатор возврата платежа в ЮKassa." - type: "string" - minLength: 36 - maxLength: 36 - example: "1ddd77af-0bd7-500d-895b-c475c55fdefc" - RefundCancellationDetails: - type: "object" - description: "Комментарий к статусу canceled: кто отменил возврат и по какой причине." - properties: - party: - type: "string" - description: "Участник процесса возврата, который принял решение отменить транзакцию. Перечень и описание возможных значений: https://yookassa.ru/developers/payment-acceptance/after-the-payment/refunds#declined-refunds-cancellation-details-party" - example: "yoo_money" - enum: - - "yoo_money" - - "refund_network" - reason: - type: "string" - description: "Причина отмены возврата. Перечень и описание возможных значений: https://yookassa.ru/developers/payment-acceptance/after-the-payment/refunds#declined-refunds-cancellation-details-reason" - example: "yoo_money_account_closed" - enum: - - "yoo_money_account_closed" - - "insufficient_funds" - - "general_decline" - - "rejected_by_payee" - - "rejected_by_timeout" - - "payment_basket_id_not_found" - - "payment_article_number_not_found" - - "payment_tru_code_not_found" - - "too_many_refunding_articles" - - "some_articles_already_refunded" - required: - - "reason" - - "party" - RefundDealInfo: - type: "object" - description: "Данные о сделке, в составе которой проходит возврат. Присутствует, если вы проводите Безопасную сделку: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics." - properties: - id: - allOf: - - $ref: "#/components/schemas/DealId" - - description: "Идентификатор сделки. Берется из возвращаемого платежа." - refund_settlements: - $ref: "#/components/schemas/SettlementRefundArray" - required: - - "id" - - "refund_settlements" - SbpRefundMethod: - description: "Данные для возврата платежа через СБП (НСПК)." - allOf: - - $ref: "#/components/schemas/RefundMethod" - - type: "object" - properties: - sbp_operation_id: - allOf: - - $ref: "#/components/schemas/SbpOperationId" - - description: "Идентификатор операции в СБП (НСПК). Пример: 1027088AE4CB48CB81287833347A8777. Обязательный параметр для возвратов в статусе succeeded. В остальных случаях может отсутствовать." - ElectronicCertificateRefundMethod: - description: "Возврат платежа по электронному сертификату." - allOf: - - $ref: "#/components/schemas/RefundMethod" - - type: "object" - properties: - electronic_certificate: - $ref: "#/components/schemas/ElectronicCertificateRefundDataResponse" - articles: - type: "array" - description: "Корзина возврата — список возвращаемых товаров, для оплаты которых использовался электронный сертификат. Присутствует, если оплата была на готовой странице ЮKassa: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/ready-made-payment-form." - items: - $ref: "#/components/schemas/ElectronicCertificateRefundArticle" - RefundAuthorizationDetails: - type: "object" - description: "Refund authorization details. Presented only for refunds made by these payment methods: bank card, Mir Pay." - properties: - rrn: - $ref: "#/components/schemas/Rrn" - SettlementRefundArray: - type: "array" - description: "Данные о распределении денег." - items: - oneOf: - - $ref: "#/components/schemas/SettlementPayoutRefund" - discriminator: - propertyName: "type" - RefundMethodData: - type: "object" - description: "Детали возврата. Зависят от способа оплаты, который использовался при проведении платежа." - properties: - type: - $ref: "#/components/schemas/RefundMethodType" - discriminator: - propertyName: "type" - mapping: - electronic_certificate: "#/components/schemas/ElectronicCertificateRefundMethodData" - required: - - "type" - ElectronicCertificateRefundDataRequest: - type: "object" - description: "Данные от ФЭС НСПК для возврата на электронный сертификат. Неоходимо передавать только при оплате со сбором данных на вашей стороне: https://yookassa.ru/developers/payment-acceptance/integration-scenarios/manual-integration/other/electronic-certificate/merchant-payment-form." - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, которая вернется на электронный сертификат, — значение totalCertAmount, которое вы получили в ФЭС НСПК в запросе на предварительное одобрение возврата (Refund Pre-Auth): https://www.nspk.ru/developer/api-fes#tag/Protokol-FES-NSPK-v1/operation/preAuthReturn." - basket_id: - allOf: - - $ref: "#/components/schemas/BasketId" - - description: "Идентификатор корзины возврата, сформированной в НСПК, — значение returnBasketId, которое вы получили в ФЭС НСПК в запросе на предварительное одобрение возврата (Refund Pre-Auth): https://www.nspk.ru/developer/api-fes#tag/Protokol-FES-NSPK-v1/operation/preAuthReturn." - required: - - "amount" - - "basket_id" - ElectronicCertificateRefundArticle: - type: "object" - description: "Товарная позиция в корзине возврата при возврате на электронный сертификат." - properties: - article_number: - allOf: - - $ref: "#/components/schemas/ElectronicCertificateArticleNumber" - - description: "Порядковый номер товара в корзине возврата. От 1 до 999 включительно." - payment_article_number: - allOf: - - $ref: "#/components/schemas/ElectronicCertificateArticleNumber" - - description: "Порядковый номер товара в одобренной корзине покупки (article_number в объекте платежа: https://yookassa.ru/developers/api#payment_object). От 1 до 999 включительно." - tru_code: - $ref: "#/components/schemas/ElectronicCertificateTruCode" - quantity: - type: "integer" - format: "int32" - minimum: 1 - description: "Количество возвращаемых единиц товара. Формат: целое положительное число." - example: 10 - required: - - "article_number" - - "payment_article_number" - - "tru_code" - - "quantity" - RefundMethodType: - description: "Код способа оплаты, который использовался при проведении платежа." - type: "string" - enum: - - "sbp" - - "electronic_certificate" - example: "sbp" - RefundMethod: - type: "object" - description: "Детали возврата. Зависят от способа оплаты, который использовался при проведении платежа." - properties: - type: - $ref: "#/components/schemas/RefundMethodType" - discriminator: - propertyName: "type" - mapping: - sbp: "#/components/schemas/SbpRefundMethod" - electronic_certificate: "#/components/schemas/ElectronicCertificateRefundMethod" - required: - - "type" - ElectronicCertificateRefundDataResponse: - type: "object" - description: "Данные от ФЭС НСПК для возврата на электронный сертификат." - properties: - basket_id: - allOf: - - $ref: "#/components/schemas/BasketId" - - description: "Идентификатор корзины возврата, сформированной в НСПК." - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, которая вернется на электронный сертификат." - required: - - "basket_id" - - "amount" - SettlementRefundItem: - type: "object" - description: "Данные о распределении денег." - properties: - type: - $ref: "#/components/schemas/SettlementItemType" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Amount by which the seller’s remuneration must be reduced. Must be less than or equal to the refund amount." - discriminator: - propertyName: "type" - mapping: - payout: "#/components/schemas/SettlementPayoutRefund" - required: - - "type" - - "amount" - SettlementPayoutRefund: - allOf: - - $ref: "#/components/schemas/SettlementRefundItem" - - type: "object" - PostReceiptData: - description: "Данные для формирования чека в онлайн-кассе (для коллекции чеков)." - properties: - type: - allOf: - - $ref: "#/components/schemas/ReceiptType" - - description: "Тип чека в онлайн-кассе. Возможные значения: payment (приход), refund (возврат прихода)." - payment_id: - allOf: - - $ref: "#/components/schemas/PaymentId" - - description: "Payment ID in YooMoney for displaying the receipt information in Merchant Profile: https://yookassa.ru/my/payments, doesn’t affect the payment. The parameter is required for creating a payment receipt: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/payments#create-receipt (type of receipt: payment, payment status: waiting_for_capture or succeeded) and for creating a refund receipt: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/payments#payment-receipt-part-capture for cancelled or partially captured payments (type of receipt: refund, payment status: canceled or succeeded). You can create up to 50 receipts for one payment." - refund_id: - allOf: - - $ref: "#/components/schemas/RefundId" - - description: "Refund ID in YooMoney for displaying the receipt information in Merchant Profile: https://yookassa.ru/my. The parameter is required for creating a refund receipt: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/refunds#after-refund (type of receipt: refund, payment status: succeeded). You can create up to 50 receipts for one refund." - customer: - $ref: "#/components/schemas/ReceiptDataCustomer" - items: - type: "array" - description: "List of products in the receipt: no more than 80 items for Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics, no more than 100 items for third-party online sales registers: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics." - items: - $ref: "#/components/schemas/PostReceiptDataItem" - internet: - description: "Признак проведения платежа в интернете (тег в 54 ФЗ — 1125) — указывает на оплату через интернет. Возможные значения: true — оплата прошла онлайн, через интернет (например, на вашем сайте или в приложении); false — оплата прошла офлайн, при личном взаимодействии (например, в торговой точке или при встрече с курьером). По умолчанию true. Если вы принимаете платежи офлайн, передайте в запросе значение false." - type: "boolean" - send: - description: "Формирование чека в онлайн-кассе сразу после создания объекта чека. Сейчас можно передать только значение true." - type: "boolean" - default: true - tax_system_code: - $ref: "#/components/schemas/TaxSystemCode" - timezone: - description: "Номер часовой зоны для адреса, по которому вы принимаете платежи (тег в 54 ФЗ — 1011). Указывается, только если в чеке есть товары, которые подлежат обязательной маркировке (в items.mark_code_info передается параметр gs_1m, short или fur). Перечень возможных значений: для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#timezone; для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#timezone." - type: "integer" - minimum: 1 - maximum: 11 - additional_user_props: - $ref: "#/components/schemas/ReceiptAdditionalUserProps" - receipt_industry_details: - description: "Отраслевой реквизит чека (тег в 54 ФЗ — 1261). Нужно передавать, если используете ФФД 1.2." - type: "array" - items: - $ref: "#/components/schemas/IndustryDetails" - receipt_operational_details: - allOf: - - $ref: "#/components/schemas/OperationalDetails" - - description: "Операционный реквизит чека (тег в 54 ФЗ — 1270). Нужно передавать, если используете ФФД 1.2." - settlements: - $ref: "#/components/schemas/SettlementArray" - on_behalf_of: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "Идентификатор магазина, от имени которого нужно отправить чек. Выдается ЮKassa, отображается в разделе Продавцы: https://yookassa.ru/my/marketplace/sellers личного кабинета (столбец shopId). Необходимо передавать, если вы используете Сплитование платежей: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - required: - - "customer" - - "type" - - "send" - - "settlements" - - "items" - Receipt: - type: "object" - description: "Receipt object (Receipt) contains all the relevant information about the receipt." - properties: - id: - $ref: "#/components/schemas/ReceiptId" - type: - $ref: "#/components/schemas/ReceiptType" - payment_id: - type: "string" - description: "Идентификатор платежа: https://yookassa.ru/developers/api#payment_object, для которого был сформирован чек." - example: "215d8da0-000f-50be-b000-0003308c89be" - refund_id: - type: "string" - description: "Идентификатор возврата: https://yookassa.ru/developers/api#refund_object, для которого был сформирован чек. Отсутствует в чеке платежа." - example: "215d8da0-000f-50be-b000-0003308c89be" - status: - allOf: - - $ref: "#/components/schemas/ReceiptRegistrationStatus" - - description: "Статус доставки данных для чека в онлайн-кассу. Возможные значения: pending — данные в обработке; succeeded — чек успешно зарегистрирован; canceled — чек зарегистрировать не удалось; если используете Чеки от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics, обратитесь в техническую поддержку, в остальных случаях сформируйте чек вручную." - fiscal_document_number: - type: "string" - description: "Номер фискального документа." - example: "3986" - fiscal_storage_number: - type: "string" - description: "Номер фискального накопителя в кассовом аппарате." - example: "9288000100115785" - fiscal_attribute: - type: "string" - description: "Фискальный признак чека. Формируется фискальным накопителем на основе данных, переданных для регистрации чека." - example: "2617603921" - registered_at: - type: "string" - format: "date-time" - description: "Дата и время формирования чека в фискальном накопителе. Указывается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601." - example: "2019-05-13T17:56:00.000+03:00" - fiscal_provider_id: - type: "string" - description: "Идентификатор чека в онлайн-кассе. Присутствует, если чек удалось зарегистрировать." - example: "fd9e9404-eaca-4000-8ec9-dc228ead2345" - items: - description: "List of products in the receipt: no more than 80 items for Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics, no more than 100 items for third-party online sales registers: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics." - type: "array" - items: - $ref: "#/components/schemas/ReceiptItem" - internet: - description: "Признак проведения платежа в интернете (тег в 54 ФЗ — 1125) — указывает на оплату через интернет. Возможные значения: true — оплата прошла онлайн, через интернет (например, на вашем сайте или в приложении); false — оплата прошла офлайн, при личном взаимодействии (например, в торговой точке или при встрече с курьером). По умолчанию true. Если вы принимаете платежи офлайн, передайте в запросе значение false." - type: "boolean" - settlements: - type: "array" - description: "Перечень совершенных расчетов." - minItems: 1 - items: - $ref: "#/components/schemas/Settlement" - on_behalf_of: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "Идентификатор магазина, от имени которого нужно отправить чек. Выдается ЮKassa. Присутствует, если вы используете Сплитование платежей: https://yookassa.ru/developers/solutions-for-platforms/split-payments/basics." - tax_system_code: - allOf: - - $ref: "#/components/schemas/TaxSystemCode" - - description: "Система налогообложения магазина (тег в 54 ФЗ — 1055). Для сторонних онлайн-касс: обязательный параметр, если вы используете онлайн-кассу Атол Онлайн, обновленную до ФФД 1.2, или у вас несколько систем налогообложения, в остальных случаях не передается. Перечень возможных значений: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#tax-systems Для Чеков от ЮKassa: параметр передавать не нужно, ЮKassa его проигнорирует." - timezone: - description: "Номер часовой зоны для адреса, по которому вы принимаете платежи (тег в 54 ФЗ — 1011). Указывается, только если в чеке есть товары, которые подлежат обязательной маркировке (в items.mark_code_info передается параметр gs_1m, short или fur). Перечень возможных значений: для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#timezone; для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#timezone." - type: "integer" - minimum: 1 - maximum: 11 - receipt_industry_details: - description: "Отраслевой реквизит предмета расчета (тег в 54 ФЗ — 1260)." - type: "array" - items: - $ref: "#/components/schemas/IndustryDetails" - receipt_operational_details: - allOf: - - $ref: "#/components/schemas/OperationalDetails" - - description: "Операционный реквизит чека (тег в 54 ФЗ — 1270)." - required: - - "id" - - "type" - - "status" - - "items" - ReceiptId: - type: "string" - minLength: 39 - maxLength: 39 - description: "Идентификатор чека в ЮKassa." - example: "rt-1da5c87d-0984-50e8-a7f3-8de646dd9ec9" - ReceiptType: - description: "Тип чека в онлайн-кассе: приход (payment) или возврат прихода (refund)." - type: "string" - enum: - - "payment" - - "refund" - PostReceiptDataItem: - type: "object" - description: "Информация о товарной позиции в заказе (для формирования чека)." - properties: - description: - $ref: "#/components/schemas/ReceiptItemDescription" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Цена товара (тег в 54 ФЗ — 1079)." - vat_code: - allOf: - - $ref: "#/components/schemas/ReceiptItemVatCode" - - description: "Ставка НДС (тег в 54 ФЗ — 1199). Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#vat-codes * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#vat-codes" - quantity: - allOf: - - $ref: "#/components/schemas/ReceiptItemQuantity" - - description: "Количество товара (тег в 54 ФЗ — 1023). Можно передать целое или дробное число. Разделитель дробной части — точка, разделитель тысяч отсутствует. Пример: 5.000 Максимально возможное значение и максимальное количество знаков после точки (для дробных значений) зависят от модели вашей онлайн-кассы. Для чеков от ЮKassa максимально возможное значение — 99999.999, не более 3 знаков после точки." - measure: - $ref: "#/components/schemas/ReceiptItemMeasure" - mark_quantity: - $ref: "#/components/schemas/MarkQuantity" - payment_subject: - $ref: "#/components/schemas/ReceiptItemPaymentSubject" - payment_mode: - $ref: "#/components/schemas/ReceiptItemPaymentMode" - country_of_origin_code: - $ref: "#/components/schemas/ReceiptItemCountryOfOriginCode" - customs_declaration_number: - $ref: "#/components/schemas/ReceiptItemCustomsDeclarationNumber" - excise: - $ref: "#/components/schemas/ReceiptItemExcise" - product_code: - $ref: "#/components/schemas/ReceiptItemProductCode" - planned_status: - $ref: "#/components/schemas/ReceiptItemPlannedStatus" - mark_code_info: - $ref: "#/components/schemas/MarkCodeInfo" - mark_mode: - $ref: "#/components/schemas/MarkMode" - payment_subject_industry_details: - $ref: "#/components/schemas/ReceiptItemPaymentSubjectIndustryDetails" - additional_payment_subject_props: - description: "Дополнительный реквизит предмета расчета (тег в 54 ФЗ — 1191). Не более 64 символов. Можно передавать, если вы отправляете данные для формирования чека по сценарию Сначала платеж, потом чек: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#receipt-after-payment" - type: "string" - maxLength: 64 - example: "mdlp2/12&" - supplier: - $ref: "#/components/schemas/PostReceiptItemSupplierWithInn" - agent_type: - $ref: "#/components/schemas/ReceiptItemAgentType" - required: - - "description" - - "quantity" - - "amount" - - "vat_code" - ReceiptAdditionalUserProps: - type: "object" - description: "Дополнительный реквизит пользователя (тег в 54 ФЗ — 1084). Можно передавать, если вы отправляете данные для формирования чека по сценарию Сначала платеж, потом чек: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#receipt-after-payment" - properties: - name: - description: "Наименование дополнительного реквизита пользователя (тег в 54 ФЗ — 1085). Не более 64 символов." - type: "string" - maxLength: 64 - example: "mdlp3108805" - value: - description: "Значение дополнительного реквизита пользователя (тег в 54 ФЗ — 1086). Не более 234 символов." - type: "string" - maxLength: 234 - example: "ps45102&dnАБV492&&781&dd181110&sid71752852194630&" - required: - - "name" - - "value" - SettlementArray: - type: "array" - description: "Перечень совершенных расчетов." - items: - $ref: "#/components/schemas/Settlement" - Settlement: - type: "object" - description: "Информация о совершенных расчетах." - properties: - type: - description: "Тип расчета. Перечень возможных значений * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#settlement-type * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#settlement-type" - type: "string" - enum: - - "cashless" - - "prepayment" - - "postpayment" - - "consideration" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма расчета." - required: - - "type" - - "amount" - PostReceiptItemSupplierWithInn: - allOf: - - $ref: "#/components/schemas/ReceiptItemSupplier" - - type: "object" - properties: - inn: - allOf: - - $ref: "#/components/schemas/RussianItn" - - description: "ИНН поставщика (10 или 12 цифр). Тег в 54 ФЗ — 1226. Параметр предусмотрен форматом фискальных документов (ФФД) и является обязательным, начиная с версии 1.05." - ReceiptItemAgentType: - description: "Тип посредника, реализующего товар или услугу. Параметр предусмотрен форматом фискальных документов (ФФД) и является обязательным, начиная с версии 1.1. Перечень возможных значений: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#agent-type. Можно передавать, если ваша онлайн-касса обновлена до ФФД 1.1 и вы отправляете данные для формирования чека по сценарию Сначала платеж, потом чек: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#receipt-after-payment" - type: "string" - enum: - - "banking_payment_agent" - - "banking_payment_subagent" - - "payment_agent" - - "payment_subagent" - - "attorney" - - "commissioner" - - "agent" - ReceiptItemSupplier: - type: "object" - description: "Информация о поставщике товара или услуги (тег в 54 ФЗ — 1224). Можно передавать, если вы отправляете данные для формирования чека по сценарию Сначала платеж, потом чек: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/basics#receipt-after-payment." - properties: - name: - description: "Наименование поставщика (тег в 54 ФЗ — 1225). Параметр предусмотрен форматом фискальных документов (ФФД) и является обязательным, начиная с версии 1.1." - type: "string" - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "Телефон поставщика (тег в 54 ФЗ — 1171). Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000. Параметр предусмотрен форматом фискальных документов (ФФД) и является обязательным, начиная с версии 1.1." - ReceiptItem: - type: "object" - description: "Информация о товарной позиции в заказе (для формирования чека)." - properties: - description: - description: "Название товара (не более 128 символов). Тег в 54 ФЗ — 1030)." - type: "string" - quantity: - description: "Количество товара (тег в 54 ФЗ — 1023). Формат: десятичное число, дробная часть — три знака или больше (количество знаков зависит от quantity в запросе). Разделитель дробной части — точка, разделитель тысяч отсутствует. Пример: 5.000" - type: "number" - example: 1 - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Цена товара (тег в 54 ФЗ — 1079)." - vat_code: - allOf: - - $ref: "#/components/schemas/ReceiptItemVatCode" - - description: "Ставка НДС (тег в 54 ФЗ — 1199). Перечень возможных значений: * для Чеков от ЮKassa: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/parameters-values#vat-codes * для сторонних онлайн-касс: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/parameters-values#vat-codes" - payment_subject: - $ref: "#/components/schemas/ReceiptItemPaymentSubject" - payment_mode: - $ref: "#/components/schemas/ReceiptItemPaymentMode" - country_of_origin_code: - type: "string" - description: "Код страны происхождения товара по общероссийскому классификатору стран мира (OК (MК (ИСО 3166) 004-97) 025-2001: http://docs.cntd.ru/document/842501280). Тег в 54 ФЗ — 1230. Пример: RU. Онлайн-кассы, которые поддерживают этот параметр: Orange Data, Кит Инвест." - example: "RU" - customs_declaration_number: - type: "string" - description: "Номер таможенной декларации (от 1 до 32 символов). Тег в 54 ФЗ — 1231. Онлайн-кассы, которые поддерживают этот параметр: Orange Data, Кит Инвест." - minLength: 1 - maxLength: 32 - example: "10714040/140917/0090376" - excise: - type: "string" - description: "Сумма акциза товара с учетом копеек (тег в 54 ФЗ — 1229). Десятичное число с точностью до 2 символов после точки. Онлайн-кассы, которые поддерживают этот параметр: Orange Data, Кит Инвест." - example: "20.00" - supplier: - $ref: "#/components/schemas/ReceiptItemSupplierWithInn" - agent_type: - $ref: "#/components/schemas/ReceiptItemAgentType" - mark_code_info: - $ref: "#/components/schemas/MarkCodeInfo" - measure: - $ref: "#/components/schemas/ReceiptItemMeasure" - payment_subject_industry_details: - description: "Отраслевой реквизит предмета расчета (тег в 54 ФЗ — 1260). Обязателен при использовании ФФД 1.2." - type: "array" - items: - $ref: "#/components/schemas/IndustryDetails" - product_code: - type: "string" - description: "Product code (tag 1162 in 54-FZ) is a unique number assigned to a unit of product during marking process. Format: hexadecimal number with spaces. Maximum length is 32 bytes. Example: 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00. This parameter is required if both conditions apply: your online sales register is updated to FFD 1.05 or 1.1; the product is subject to mandatory marking: http://docs.cntd.ru/document/902192509. The parameter must not be included in the request if you are using Receipts from YooMoney: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/yoomoney/basics or an online sales register updated to FFD 1.2: https://yookassa.ru/developers/payment-acceptance/receipts/54fz/other-services/marking." - example: "00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00" - planned_status: - $ref: "#/components/schemas/ReceiptItemPlannedStatus" - mark_mode: - $ref: "#/components/schemas/MarkMode" - mark_quantity: - $ref: "#/components/schemas/MarkQuantity" - required: - - "description" - - "quantity" - - "amount" - - "vat_code" - ReceiptItemSupplierWithInn: - allOf: - - $ref: "#/components/schemas/ReceiptItemSupplier" - - type: "object" - properties: - inn: - allOf: - - $ref: "#/components/schemas/RussianItn" - - description: "ИНН поставщика в маскированном виде (тег в 54 ФЗ — 1226). Пример: ***. Параметр предусмотрен форматом фискальных документов (ФФД) и является обязательным, начиная с версии 1.05." - SafeDealRequest: - description: "Данные для создания сделки." - type: "object" - properties: - type: - $ref: "#/components/schemas/DealType" - fee_moment: - $ref: "#/components/schemas/FeeMoment" - metadata: - $ref: "#/components/schemas/Metadata" - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание сделки (не более 128 символов). Используется для фильтрации при получении списка сделок: https://yookassa.ru/developers/api#get_deals_list." - required: - - "type" - - "fee_moment" - SafeDeal: - allOf: - - $ref: "#/components/schemas/BaseDeal" - - type: "object" - properties: - id: - $ref: "#/components/schemas/DealId" - fee_moment: - $ref: "#/components/schemas/FeeMoment" - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание сделки (не более 128 символов). Используется для фильтрации при получении списка сделок: https://yookassa.ru/developers/api#get_deals_list." - balance: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Баланс сделки." - payout_balance: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма вознаграждения продавца." - status: - $ref: "#/components/schemas/DealStatus" - created_at: - description: "Время создания сделки. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2020-07-03T11:52:31.827Z" - expires_at: - description: "Время автоматического закрытия сделки. Если в указанное время сделка всё еще в статусе opened, ЮKassa вернет деньги покупателю и закроет сделку. По умолчанию время жизни сделки составляет 90 дней. Время указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2021-01-03T18:31:22.532Z" - metadata: - $ref: "#/components/schemas/Metadata" - test: - $ref: "#/components/schemas/Test" - required: - - "id" - - "balance" - - "payout_balance" - - "status" - - "created_at" - - "expires_at" - - "test" - - "fee_moment" - DealStatus: - description: "Статус сделки. Возможные значения: * opened — сделка открыта; можно выполнять платежи, возвраты и выплаты в составе сделки; * closed — сделка закрыта — вознаграждение перечислено продавцу и платформе или оплата возвращена покупателю; нельзя выполнять платежи, возвраты и выплаты в составе сделки." - type: "string" - enum: - - "opened" - - "closed" - example: "closed" - DealType: - description: "Тип сделки. Фиксированное значение: safe_deal — Безопасная сделка." - type: "string" - enum: - - "safe_deal" - example: "safe_deal" - FeeMoment: - description: "Момент перечисления вам вознаграждения платформы. Возможные значения: payment_succeeded — после успешной оплаты; deal_closed — при закрытии сделки после успешной выплаты." - type: "string" - default: "payment_succeeded" - enum: - - "payment_succeeded" - - "deal_closed" - example: "payment_succeeded" - BaseDeal: - description: "Deal object (Deal) contains all the relevant information about the deal." - type: "object" - discriminator: - propertyName: "type" - mapping: - safe_deal: "#/components/schemas/SafeDeal" - properties: - type: - $ref: "#/components/schemas/DealType" - required: - - "type" - PayoutRequest: - description: "Данные для создания выплаты." - type: "object" - properties: - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма выплаты. Есть ограничения на минимальный и максимальный размер выплаты и сумму выплат за месяц. Подробнее о лимитах обычных выплат: https://yookassa.ru/developers/payouts/getting-started/payout-types-and-limits и выплат в рамках Безопасной сделки: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/integration/payouts#specifics" - payout_destination_data: - oneOf: - - $ref: "#/components/schemas/PayoutToYooMoneyDestinationData" - - $ref: "#/components/schemas/PayoutToBankCardDestinationData" - - $ref: "#/components/schemas/PayoutToSbpDestinationData" - discriminator: - propertyName: "type" - payout_token: - type: "string" - description: "Токенизированные данные для выплаты. Например, синоним банковской карты. Обязательный параметр, если не передан payout_destination_data или payment_method_id." - example: "hoiCz_UVAdi_eKEthqhjRIJp.SC.001.202101" - payment_method_id: - allOf: - - $ref: "#/components/schemas/PaymentMethodId" - - description: "Идентификатор сохраненного способа оплаты, данные которого нужно использовать для проведения выплаты. Подробнее о выплатах с использованием идентификатора сохраненного способа оплаты: https://yookassa.ru/developers/payouts/scenario-extensions/multipurpose-token Обязательный параметр, если не передан payout_destination_data или payout_token." - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание транзакции (не более 128 символов). Например: «Выплата по договору 37»." - deal: - $ref: "#/components/schemas/PayoutDealInfo" - personal_data: - type: "array" - description: "Персональные данные получателя выплаты. Только для обычных выплат. Необходимо передавать в этих сценариях: * выплаты с проверкой получателя: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-check (только для выплат через СБП); * выплаты с передачей данных получателя для выписок из реестра: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-data-send. В массиве можно одновременно передать несколько идентификаторов, но только для разных типов данных." - minItems: 1 - maxItems: 2 - items: - $ref: "#/components/schemas/PayoutsPersonalData" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "amount" - Payout: - description: "Payout object (Payout) contains all the relevant information about the payout." - type: "object" - properties: - id: - $ref: "#/components/schemas/PayoutId" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма выплаты." - status: - $ref: "#/components/schemas/PayoutStatus" - payout_destination: - oneOf: - - $ref: "#/components/schemas/PayoutToCardDestination" - - $ref: "#/components/schemas/PayoutToYooMoneyDestination" - - $ref: "#/components/schemas/PayoutToSbpDestination" - discriminator: - propertyName: "type" - description: - allOf: - - $ref: "#/components/schemas/Description" - - description: "Описание транзакции (не более 128 символов). Например: «Выплата по договору 37»." - created_at: - description: "Время создания выплаты. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - type: "string" - format: "date-time" - example: "2020-07-03T11:52:31.827Z" - succeeded_at: - description: "Time of a successful payout processing. Based on UTC: https://en.wikipedia.org/wiki/Coordinated_Universal_Time and specified in the ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 format. Example: 2017-11-03T11:52:42.312Z Mandatory parameter for payouts with the succeeded status." - type: "string" - format: "date-time" - example: "2020-07-03T11:52:42.312Z" - deal: - allOf: - - $ref: "#/components/schemas/PayoutDealInfo" - - description: "Сделка, в рамках которой нужно провести выплату. Присутствует, если вы проводите Безопасную сделку: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics." - - type: "object" - self_employed: - allOf: - - $ref: "#/components/schemas/PayoutSelfEmployedInfo" - - description: "Details of the self-employed individual who will receive the payout. Deprecated parameter. It was previously returned when making payouts to self-employed individuals. This option is currently unavailable. The parameter is kept for backward compatibility and may be removed in future API versions." - - type: "object" - receipt: - $ref: "#/components/schemas/IncomeReceipt" - cancellation_details: - $ref: "#/components/schemas/PayoutCancellationDetails" - metadata: - $ref: "#/components/schemas/Metadata" - test: - $ref: "#/components/schemas/Test" - required: - - "id" - - "amount" - - "status" - - "payout_destination" - - "created_at" - - "test" - PayoutStatus: - type: "string" - description: "Статус выплаты. Возможные значения: pending — выплата создана, но деньги еще не поступили на указанное платежное средство пользователя (например, ЮKassa ждет подтверждения от эквайера, что перевод успешен); succeeded — выплата успешно завершена, деньги переведены на платежное средство пользователя (финальный и неизменяемый статус); canceled — выплата отменена, инициатор и причина отмены указаны в объекте cancellation_details (финальный и неизменяемый статус)." - enum: - - "pending" - - "succeeded" - - "canceled" - PayoutsList: - type: "object" - description: "Список выплат. Выплаты отсортированы по времени создания в порядке убывания (от новых к старым). Если результатов больше, чем задано в limit, список будет выводиться фрагментами. В этом случае в ответе на запрос вернется фрагмент списка и параметр next_cursor с указателем на следующий фрагмент." - properties: - type: - type: "string" - description: "Формат выдачи результатов запроса. Возможное значение: list (список)." - enum: - - "list" - items: - type: "array" - items: - $ref: "#/components/schemas/Payout" - next_cursor: - $ref: "#/components/schemas/NextCursor" - required: - - "type" - - "items" - PayoutToYooMoneyDestinationData: - description: "Данные для выплаты на кошелек ЮMoney." - allOf: - - $ref: "#/components/schemas/PayoutDestinationData" - - type: "object" - properties: - account_number: - allOf: - - $ref: "#/components/schemas/YooMoneyAccountNumber" - - description: "Номер кошелька ЮMoney, например 41001614575714. Длина от 11 до 33 цифр. Статус кошелька: https://yoomoney.ru/page?id=536140: для обычных выплат: https://yookassa.ru/developers/payouts/overview — любой, для выплат в рамках Безопасной сделки: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics — именной или идентифицированный." - - type: "string" - required: - - "account_number" - PayoutToBankCardDestinationData: - description: "Данные для выплаты на банковскую карту." - allOf: - - $ref: "#/components/schemas/PayoutDestinationData" - - type: "object" - properties: - card: - $ref: "#/components/schemas/CardDataForPayoutDestination" - required: - - "card" - PayoutToSbpDestinationData: - description: "Данные для выплаты на счет в банке через систему быстрых платежей." - allOf: - - $ref: "#/components/schemas/PayoutDestinationData" - - type: "object" - properties: - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "Телефон, к которому привязан счет получателя выплаты в системе участника СБП. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - bank_id: - allOf: - - $ref: "#/components/schemas/SbpBankId" - - description: "FPS participant ID, a bank or payment service connected to the service. Maximum 12 characters. How to get an FPS participant ID: https://yookassa.ru/developers/payouts/making-payouts/sbp" - required: - - "phone" - - "bank_id" - PayoutDealInfo: - type: "object" - description: "Сделка, в рамках которой нужно провести выплату. Необходимо передавать, если вы проводите Безопасную сделку: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/basics" - properties: - id: - $ref: "#/components/schemas/DealId" - required: - - "id" - PayoutsPersonalData: - type: "object" - description: "Персональные данные получателя выплаты. Только для обычных выплат. Необходимо передавать в этих сценариях: * выплаты с проверкой получателя: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-check; * выплаты с передачей данных получателя для выписок из реестра: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-data-send." - properties: - id: - $ref: "#/components/schemas/PersonalDataId" - required: - - "id" - PayoutDestinationType: - description: "Способ получения выплаты: * bank_card – выплата на банковскую карту; * yoo_money – выплата на кошелек ЮMoney; * sbp – выплата через СБП на счет в банке или платежном сервисе." - type: "string" - enum: - - "bank_card" - - "yoo_money" - - "sbp" - PayoutDestination: - type: "object" - description: "The means of payment that YooMoney sends the payout to." - discriminator: - propertyName: "type" - mapping: - bank_card: "#/components/schemas/PayoutToCardDestination" - yoo_money: "#/components/schemas/PayoutToYooMoneyDestination" - sbp: "#/components/schemas/PayoutToSbpDestination" - properties: - type: - $ref: "#/components/schemas/PayoutDestinationType" - required: - - "type" - PayoutCardData: - type: "object" - description: "Данные банковской карты." - properties: - first6: - allOf: - - $ref: "#/components/schemas/BankCardFirst6" - - description: "Первые 6 цифр номера карты (BIN)." - last4: - $ref: "#/components/schemas/BankCardLast4" - card_type: - $ref: "#/components/schemas/BankCardType" - issuer_country: - $ref: "#/components/schemas/BankCardIssuerCountry" - issuer_name: - $ref: "#/components/schemas/BankCardIssuerName" - required: - - "first6" - - "last4" - - "card_type" - PayoutToCardDestination: - description: "Выплаты на банковскую карту" - allOf: - - $ref: "#/components/schemas/PayoutDestination" - - type: "object" - properties: - card: - $ref: "#/components/schemas/PayoutCardData" - PayoutToYooMoneyDestination: - description: "Выплаты на кошелек ЮMoney." - allOf: - - $ref: "#/components/schemas/PayoutDestination" - - type: "object" - properties: - account_number: - $ref: "#/components/schemas/YooMoneyAccountNumber" - required: - - "account_number" - PayoutToSbpDestination: - description: "Данные для выплаты через СБП на счет в банке или платежном сервисе." - allOf: - - $ref: "#/components/schemas/PayoutDestination" - - type: "object" - properties: - phone: - allOf: - - $ref: "#/components/schemas/Phone" - - description: "Телефон, к которому привязан счет получателя выплаты в системе участника СБП. Указывается в формате ITU-T E.164: https://ru.wikipedia.org/wiki/E.164, например 79000000000." - bank_id: - type: "string" - description: "Идентификатор участника СБП — банка или платежного сервиса, подключенного к сервису." - example: "100000000111" - maxLength: 12 - sbp_operation_id: - allOf: - - $ref: "#/components/schemas/SbpOperationId" - - description: "ID of the transaction in FPS (NSPK). Example: 1027088AE4CB48CB81287833347A8777. Required parameter for payments with the succeeded status. In other cases, it might be missing." - recipient_checked: - type: "boolean" - description: "Проверка получателя выплаты: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-check: true — выплата проходила с проверкой получателя, false — выплата проходила без проверки получателя." - example: false - required: - - "phone" - - "bank_id" - - "recipient_checked" - PayoutSelfEmployedInfo: - type: "object" - description: "Данные самозанятого, который получит выплату. Только для обычных выплат. Устаревший параметр. Раньше использовался для выплат самозанятым. Сейчас функциональность недоступна. Параметр сохранен для поддержки обратной совместимости, в новых версиях API может быть удален." - properties: - id: - $ref: "#/components/schemas/SelfEmployedId" - required: - - "id" - IncomeReceipt: - type: "object" - description: "Details of the receipt recorded at the Tax Service. Deprecated parameter. It was previously returned when making payouts to self-employed individuals. This option is currently unavailable. The parameter is kept for backward compatibility and may be removed in future API versions." - properties: - service_name: - $ref: "#/components/schemas/IncomeReceiptServiceName" - npd_receipt_id: - $ref: "#/components/schemas/NpdIncomeReceiptId" - url: - $ref: "#/components/schemas/IncomeReceiptUrl" - amount: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Сумма, указанная в чеке. Присутствует, если в запросе передавалась сумма для печати в чеке." - required: - - "service_name" - PayoutCancellationDetails: - type: "object" - description: "Комментарий к статусу canceled: кто отменил выплату и по какой причине." - properties: - party: - type: "string" - description: "Участник процесса выплаты, который принял решение об отмене транзакции. Перечень инициаторов отмены выплаты: для обычных выплат: https://yookassa.ru/developers/payouts/after-the-payout/declined-payouts#cancellation-details-party, для выплат в рамках Безопасной сделки: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/integration/payouts#declined-payouts-cancellation-details-party." - enum: - - "yoo_money" - - "payout_network" - reason: - type: "string" - description: "Причина отмены выплаты. Перечень и описание возможных значений: для обычных выплат: https://yookassa.ru/developers/payouts/after-the-payout/declined-payouts#cancellation-details-reason, для выплат в рамках Безопасной сделки: https://yookassa.ru/developers/solutions-for-platforms/safe-deal/integration/payouts#declined-payouts-cancellation-details-reason." - example: "insufficient_funds" - enum: - - "insufficient_funds" - - "fraud_suspected" - - "one_time_limit_exceeded" - - "periodic_limit_exceeded" - - "rejected_by_payee" - - "general_decline" - - "issuer_unavailable" - - "recipient_not_found" - - "recipient_check_failed" - - "identification_required" - - "self_employed_annual_limit_exceeded" - required: - - "party" - - "reason" - SelfEmployedId: - type: "string" - description: "Идентификатор самозанятого в ЮKassa." - minLength: 36 - maxLength: 50 - example: "se-7474a846-a965-498d-bbf9-1c3c8907cbbd" - PersonalDataId: - description: "Идентификатор персональных данных, сохраненных в ЮKassa." - minLength: 36 - maxLength: 50 - type: "string" - example: "pd-22e12f66-000f-5000-8000-18db351245c7" - IncomeReceiptServiceName: - type: "string" - description: "Описание услуги, оказанной получателем выплаты. Не более 50 символов." - minLength: 1 - maxLength: 50 - example: "Оказание услуг по доставке товара" - NpdIncomeReceiptId: - type: "string" - description: "Идентификатор чека в сервисе. Пример: 208jd98zqe" - example: "208jd98zqe" - IncomeReceiptUrl: - type: "string" - description: "Ссылка на зарегистрированный чек. Пример: https://www.nalog.gov.ru/api/v1/receipt/<Идентификатор чека>/print" - example: "https://www.nalog.gov.ru/api/v1/receipt/208jd98zqe/print" - SbpParticipantBank: - type: "object" - description: "FPS (Faster Payment System of the Russian Federation) participant object contains all the relevant information about the bank or payment service connected to the FPS." - properties: - bank_id: - $ref: "#/components/schemas/SbpBankId" - name: - type: "string" - description: "Название банка или платежного сервиса в СБП." - maxLength: 128 - example: "Сбербанк" - bic: - $ref: "#/components/schemas/SbpBankBic" - required: - - "bank_id" - - "name" - - "bic" - SbpPayoutRecipientPersonalDataRequest: - allOf: - - $ref: "#/components/schemas/PersonalDataRequest" - - type: "object" - properties: - last_name: - $ref: "#/components/schemas/LastName" - first_name: - $ref: "#/components/schemas/FirstName" - middle_name: - $ref: "#/components/schemas/MiddleName" - required: - - "last_name" - - "first_name" - PayoutStatementRecipientPersonalDataRequest: - allOf: - - $ref: "#/components/schemas/PersonalDataRequest" - - type: "object" - properties: - last_name: - $ref: "#/components/schemas/LastName" - first_name: - $ref: "#/components/schemas/FirstName" - middle_name: - $ref: "#/components/schemas/MiddleName" - birthdate: - description: "Дата рождения. Передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601" - type: "string" - format: "date" - example: "2020-11-18" - required: - - "last_name" - - "first_name" - - "birthdate" - PersonalData: - description: "Personal data object (PersonalData) contains all the relevant information about the personal information of the user saved in YooMoney." - type: "object" - properties: - id: - $ref: "#/components/schemas/PersonalDataId" - type: - $ref: "#/components/schemas/PersonalDataType" - status: - type: "string" - description: "Статус персональных данных. Возможные значения: waiting_for_operation — данные сохранены, но не использованы при проведении выплаты; active — данные сохранены и использованы при проведении выплаты; данные можно использовать повторно до срока, указанного в параметре expires_at; canceled — хранение данных отменено, данные удалены, инициатор и причина отмены указаны в объекте cancellation_details (финальный и неизменяемый статус). Жизненный цикл персональных данных зависит от назначения данных: передача данных получателя выплаты: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-data-send#lifecircle для выписки из реестра или проверка получателя: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-check#lifecircle при выплатах через СБП." - enum: - - "waiting_for_operation" - - "active" - - "canceled" - cancellation_details: - $ref: "#/components/schemas/PersonalDataCancellationDetails" - created_at: - type: "string" - description: "Время создания персональных данных. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - format: "date-time" - expires_at: - type: "string" - description: "Срок жизни объекта персональных данных — время, до которого вы можете использовать персональные данные при проведении операций. Указывается только для объекта в статусе active. Указывается по UTC: https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8%D1%80%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F и передается в формате ISO 8601: https://en.wikipedia.org/wiki/ISO_8601. Пример: 2017-11-03T11:52:31.827Z" - format: "date-time" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "id" - - "status" - - "type" - - "created_at" - PersonalDataType: - description: "Тип персональных данных — цель, для которой вы будете использовать данные. Возможные значение: sbp_payout_recipient — выплаты с проверкой получателя: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-check(только для выплат через СБП); payout_statement_recipient — выплаты с передачей данных получателя выплаты для выписок из реестра: https://yookassa.ru/developers/payouts/scenario-extensions/recipient-data-send." - type: "string" - enum: - - "payout_statement_recipient" - - "sbp_payout_recipient" - example: "sbp_payout_recipient" - PersonalDataRequest: - description: "Данные для запроса сохранения персональных данных." - type: "object" - discriminator: - propertyName: "type" - mapping: - payout_statement_recipient: "#/components/schemas/PayoutStatementRecipientPersonalDataRequest" - sbp_payout_recipient: "#/components/schemas/SbpPayoutRecipientPersonalDataRequest" - properties: - type: - $ref: "#/components/schemas/PersonalDataType" - metadata: - $ref: "#/components/schemas/Metadata" - required: - - "type" - LastName: - description: "Фамилия пользователя." - type: "string" - pattern: "^[—–‐-a-zA-Zа-яёА-ЯЁ ]*$" - example: "Иванов" - minLength: 1 - maxLength: 200 - FirstName: - description: "Имя пользователя." - type: "string" - pattern: "^[—–‐-a-zA-Zа-яёА-ЯЁ ]*$" - example: "Иван" - minLength: 1 - maxLength: 100 - MiddleName: - description: "Отчество пользователя. Обязательный параметр, если есть в паспорте." - type: "string" - pattern: "^[—–‐-a-zA-Zа-яёА-ЯЁ ]*$" - example: "Иванович" - minLength: 1 - maxLength: 200 - PersonalDataCancellationDetails: - type: "object" - description: "Комментарий к статусу canceled: кто и по какой причине аннулировал хранение данных." - properties: - party: - type: "string" - description: "Участник процесса, который принял решение о прекращении хранения персональных данных. Возможное значение: yoo_money — ЮKassa." - enum: - - "yoo_money" - reason: - type: "string" - description: "Причина прекращения хранения персональных данных. Возможное значение: expired_by_timeout — истек срок хранения или использования персональных данных." - example: "expired_by_timeout" - enum: - - "expired_by_timeout" - required: - - "party" - - "reason" - NotificationEventType: - type: "string" - enum: - - "payment.waiting_for_capture" - - "payment.succeeded" - - "payment.canceled" - - "refund.succeeded" - - "payment_method.active" - example: "payment.succeeded" - Webhook: - type: "object" - description: "Данные о webhook." - properties: - id: - description: "Идентификатор webhook." - type: "string" - example: "wh-e44e8088-bd73-43b1-959a-954f3a7d0c54" - event: - allOf: - - $ref: "#/components/schemas/NotificationEventType" - - description: "Событие: https://yookassa.ru/developers/using-api/webhooks#events, о котором уведомляет ЮKassa." - url: - description: "URL, на который ЮKassa отправляет уведомления." - type: "string" - example: "https://www.example.com/notification_url" - required: - - "id" - - "event" - - "url" - WebhookList: - type: "object" - description: "Список webhook." - properties: - type: - type: "string" - description: "Формат выдачи результатов запроса. Возможное значение: list (список)." - enum: - - "list" - items: - type: "array" - items: - $ref: "#/components/schemas/Webhook" - required: - - "type" - - "items" - Me: - type: "object" - description: "Store or gateway settings object (Me) contains all the relevant information about the settings of a store or gateway." - properties: - account_id: - allOf: - - $ref: "#/components/schemas/AccountId" - - description: "Идентификатор магазина или шлюза." - status: - type: "string" - description: "Статус магазина или шлюза. Возможные значения: * enabled — подключен к ЮKassa, может проводить платежи или выплаты; * disabled — не может проводить платежи или выплаты (еще не подключен, закрыт или временно не работает)." - enum: - - "enabled" - - "disabled" - test: - description: "Это тестовый магазин или шлюз." - type: "boolean" - example: true - fiscalization: - $ref: "#/components/schemas/FiscalizationData" - fiscalization_enabled: - description: "Устаревший параметр, который раньше использовался для определения настроек отправки чеков в налоговую. Сохранен для поддержки обратной совместимости, в новых версиях API может быть удален. Используйте объект fiscalization, чтобы определить, какие у магазина настройки отправки чеков." - type: "boolean" - example: true - payment_methods: - type: "array" - description: "Список способов оплаты: https://yookassa.ru/developers/payment-acceptance/getting-started/payment-methods#all, доступных магазину. Присутствует, если вы запрашивали настройки магазина." - items: - $ref: "#/components/schemas/PaymentMethodType" - itn: - allOf: - - $ref: "#/components/schemas/GlobalItn" - - description: "ИНН магазина (от 1 до 20 цифр). Присутствует, если вы запрашивали настройки магазина." - payout_methods: - type: "array" - description: "Список способов получения выплат, доступных шлюзу. Возможные значения: * bank_card — выплаты на банковские карты; * yoo_money — выплаты на кошельки ЮMoney; * sbp — выплаты через СБП. Присутствует, если вы запрашивали настройки шлюза." - items: - $ref: "#/components/schemas/PayoutMethodType" - name: - description: "Название шлюза, которое отображается в личном кабинете ЮKassa. Присутствует, если вы запрашивали настройки шлюза." - type: "string" - example: "TestName" - payout_balance: - allOf: - - $ref: "#/components/schemas/MonetaryAmount" - - description: "Баланс вашего шлюза. Присутствует, если вы запрашивали настройки шлюза." - required: - - "account_id" - - "test" - - "status" - FiscalizationData: - description: "Настройки магазина для отправки чеков в налоговую: https://yookassa.ru/developers/payment-acceptance/receipts/basics. Присутствует, если вы запрашивали настройки магазина и этот магазин использует решения ЮKassa для отправки чеков. Отсутствует, если магазин еще не включал отправку чеков через ЮKassa." - type: "object" - properties: - enabled: - description: "В настройках магазина включена отправка чеков. Возможные значения: * true — магазин отправляет данные для чеков через ЮKassa; * false — магазин выключил отправку чеков через ЮKassa." - type: "boolean" - example: true - provider: - $ref: "#/components/schemas/FiscalizationProvider" - required: - - "provider" - - "enabled" - GlobalItn: - description: "ИНН пользователя (от 1 до 20 цифр)." - type: "string" - example: "632134181463213" - pattern: "\\d{1,20}" - PayoutMethodType: - description: "Способ получения выплаты." - type: "string" - enum: - - "bank_card" - - "yoo_money" - - "sbp" - example: "bank_card" - responses: - BadRequest: - description: "Запрос не может быть обработан. Причиной может быть неправильный синтаксис запроса, ошибка в обязательных параметрах запроса, их отсутствие или неподдерживаемый метод." - content: - application/json: - schema: - $ref: "#/components/schemas/BadRequest" - InvalidCredentials: - description: "В заголовке Authorization указан неверный ключ." - content: - application/json: - schema: - $ref: "#/components/schemas/InvalidCredentials" - Forbidden: - description: "Секретный ключ указан верно, но не хватает прав для совершения операции." - content: - application/json: - schema: - $ref: "#/components/schemas/Forbidden" - InternalServerError: - description: "Внутренняя ошибка сервера ЮKassa." - content: - application/json: - schema: - $ref: "#/components/schemas/TooManyRequests" - NotFound: - description: "Сущность не найдена." - content: - application/json: - schema: - $ref: "#/components/schemas/NotFound" - TooManyRequests: - description: "Слишком много запросов одновременно отправляется в API. Повторите запрос позже." - content: - application/json: - schema: - $ref: "#/components/schemas/TooManyRequests" diff --git a/Требования Роскомнадзора к сайтам 2026_ чек-лист для бизнеса copy.md b/Требования Роскомнадзора к сайтам 2026_ чек-лист для бизнеса copy.md deleted file mode 100644 index 78f16b4..0000000 --- a/Требования Роскомнадзора к сайтам 2026_ чек-лист для бизнеса copy.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: "Требования Роскомнадзора к сайтам 2026: чек-лист для бизнеса" -source: "https://www.klerk.ru/blogs/roskom24/650389/#chapter--4-cookie-uvedomlenie-i-politika" -author: - - "[[Закон и бизнес | Онлайн услуги 24]]" -published: 2025-06-10 -created: 2026-05-23 -description: "С 30 мая 2025 года в России вступили в силу изменения в законодательство о персональных данных. Для бизнеса — это не просто очередная «формальность», а вопрос безопасности и выживания." -tags: - - "clippings" ---- -Роскомнадзор усилил контроль за сайтами, включая автоматическую проверку с использованием ИИ. Теперь даже незначительные, по мнению бизнеса, нарушения могут привести **к штрафам до 18 миллионов рублей или блокировке сайта**. - -Если у вас есть сайт, вы — оператор персональных данных. А значит, обязаны соблюдать [ФЗ-152 «О персональных данных»](https://www.klerk.ru/cdoc/view/federalnyj-zakon-ot-27072006-no-152-fz-o-personalnyh-dannyh/). Даже если вы ИП, самозанятый или оказываете услуги онлайн. Ниже — актуальный чек-лист на 2026 год, который поможет не попасть под штраф и не дать конкурентам «закопать» ваш бизнес через жалобу в Роскомнадзор. - -## ✅ 1. Политика обработки персональных данных на сайте - -### Что это - -Официальный документ, размещенный на сайте (*обычно в подвале*), который описывает: - -- какие данные вы собираете; -- как их обрабатываете; -- кому передаете и на каких основаниях. - -### Требования 2026 - -- Обязательно актуальная редакция. -- Полный перечень обрабатываемых данных (*имя, email, телефон, cookies и т.д.*). -- Указание целей и оснований обработки. -- Контактные данные оператора. -- Ссылки на формы согласия и порядок отзыва. - -📌 **Ошибка №1** — скачать шаблон и забыть про него. Политика должна соответствовать именно вашему бизнесу и интеграциям на сайте. - -## ✅ 2. Согласие на обработку персональных данных - -### Где должно быть - -- во всех формах на сайте: заявки, обратная связь, регистрация, квизы, покупка, консультации; -- при подписке на рассылку; -- в онлайн-чате, если сохраняются данные. - -### Требования 2026 - -- Согласие должно быть **добровольным, конкретным, информированным и однозначным**. -- Включает: ФИО, перечень данных, цель обработки, срок хранения, право отзыва. -- Отдельное согласие на передачу данных третьим лицам (*например, CRM-системам*). -- Техническая реализация: **отдельный чекбокс с обязательной активацией**, а не просто фраза «нажимая кнопку, вы соглашаетесь». - -📌 **Ошибка №2** — отсутствие чекбокса или невидимый текст, отсутствие Log файлов позволяющих доказать получение согласия на обработку персональных данных от пользователя сайта. - -## ✅ 3. Уведомление Роскомнадзора о начале обработки персональных данных - -### Кто обязан - -Любой, кто собирает ПДн через сайт — даже ИП и самозанятые. - -### Требования 2026 - -- До начала обработки нужно подать уведомление через портал Роскомнадзора. -- Указать все сведения: цели, способы обработки, меры безопасности, перечень используемых информационных систем. -- Отдельно — факт трансграничной передачи, если используете иностранные сервисы. - -📌 **Ошибка №3** — не уведомили Роскомнадзор, потому что «сайт только визитка». Даже форма обратной связи — уже обработка ПДн. - -## ✅ 5. Юридическая информация в подвале сайта - -Что должно быть ([*ч. 2 ст. 10 ФЗ № 149-ФЗ «Об информации, информационных технологиях и о защите информации»*](https://www.klerk.ru/cdoc/view/federalnyj-zakon-ot-27072006-no-149-fz-ob-informacii-informacionnyh-tehnologiah-i-o-zasite-informacii/stata-10-rasprostranenie-informacii-ili-predostavlenie-informacii/#p_64595)): - -- Полное наименование владельца сайта. -- Адрес места нахождения. -- Актуальные контактные данные. - -### Почему это важно - -Размещение недостоверных сведений может привести к привлечению к административной ответственности по [статье 14.4 КоАП](https://www.klerk.ru/cdoc/view/kodeks-ob-administrativnyh-pravonaruseniah-koap-rf/stata-144-prodaza-tovarov-vypolnenie-rabot-libo-okazanie-naseleniu-uslug-nenadlezasego-kacestva-ili-s-naruseniem-ustanovlennyh-zakonodatelstvom-rossijskoj-federacii-trebovanij/) (*нарушение законодательства о рекламе*), а также к гражданско-правовой ответственности за причиненный ущерб. - -📌 **Ошибка №5** — указание только бренда или торговой марки без юр. лица. - -## ✅ 6. Российский хостинг и запрет трансграничной передачи - -### Суть - -Использование **иностранных серверов и облаков** приравнивается к трансграничной передаче ПДн. - -### Требования - -- Хостинг сайта — только на серверах, физически размещенных в России. -- Подтверждение от хостинг-провайдера. -- Запрет на хранение ПДн в Google Drive, Notion, Dropbox и т.д. -- Meta 1 Pixel, Google Analytics, сайты размещенные на иностранных хостингах — повод для штрафа, если не отражены в документах. - -📌 **Ошибка №7** — сайт на Tilda или REG.RU, но физически размещен в Европе. Это нарушение. - -Материалы по теме[Топ вопросов и ответов про работу с персональными данными в 2025 году](https://www.klerk.ru/buh/articles/660617/?utm_source=klerk&utm_medium=article&utm_campaign=recommendation&utm_content=blocklinks&utm_term=650389) - -[ - -Главные изменения в законе о персональных данных с 1 сентября 2025 - -](https://www.klerk.ru/buh/articles/660820/?utm_source=klerk&utm_medium=article&utm_campaign=recommendation&utm_content=blocklinks&utm_term=650389)[ - -152-ФЗ о персональных данных: требования закона для бизнеса в 2026 году - -](https://www.klerk.ru/blogs/roskom24/674017/?utm_source=klerk&utm_medium=article&utm_campaign=recommendation&utm_content=blocklinks&utm_term=650389) - -## ✅ 8. Проверка Роскомнадзора: автоматизированная, быстрая, без предупреждения - -### Как работает - -- Искусственный интеллект сканирует сайт 24/7. -- Проверяет не только текст, но и **код сайта, скрытые скрипты, cookie, формы**. -- Не требует предварительного уведомления. -- Фиксация нарушений → **предписание или моментальный штраф**. - -📌 **Важно**: проверить сайт глазами — недостаточно. Нарушения могут быть «внутри» — в интеграциях, скриптах и DOM-структуре. - -## ⚠️ Жалобы конкурентов — новый инструмент давления - -- Предприниматели уже используют жалобы в Роскомнадзор как способ атаковать конкурентов. -- Роскомнадзор обязан реагировать на любую жалобу, даже анонимную. -- Уже есть случаи блокировки сайтов и штрафов по жалобе «доброжелателей». - -📌 **Вывод** — не дать конкурентам повода. Даже мелкая недоработка — риск для бизнеса. - -## 🛠 Что делать бизнесу уже сейчас - -### Шаги - -1. Провести аудит сайта (*юридический + технический*). -2. Проверить наличие и актуальность всех обязательных документов. -3. Зарегистрироваться в Роскомнадзоре как оператор ПДн. -4. Обновить Политику ПДн и Cookie-согласие. -5. Убедиться, что сайт размещен на российских серверах. -6. Устранить трансграничные риски (*зарубежные сервисы, скрипты*). -7. Назначить ответственного за ПДн внутри компании. - -## 💼 Как мы можем помочь - -Сервис [«Роском 24»](https://roskom24.ru/?utm_source=klerkru-blog&utm_medium=trebovaniya_roskomnadzora_k_saitam) — это команда юристов и технических специалистов, которые: - -- Проводят аудит сайта на соответствие [ФЗ-152](https://www.klerk.ru/cdoc/view/federalnyj-zakon-ot-27072006-no-152-fz-o-personalnyh-dannyh/). -- Подготавливают полный комплект документов. -- Помогают зарегистрироваться в Роскомнадзоре. -- Настраивают cookie-уведомления и формы согласия. -- Защищают бизнес от штрафов и блокировок. - -## 📌 Итог - -В 2026 году **невозможно заниматься бизнесом онлайн и игнорировать закон о персональных данных**. Сайт — это уже зона юридической ответственности. И чем раньше вы проведете аудит и приведете все в порядок, тем больше шансов избежать штрафов, блокировок и атак конкурентов. - -👉 Проверьте свой сайт прямо сейчас. Или [доверьтесь профессионалам](https://roskom24.ru/?utm_source=klerkru-blog&utm_medium=trebovaniya_roskomnadzora_k_saitam). - -*Реклама: ООО «ОНЛАЙН УСЛУГИ 24», ИНН 7751227590, erid: 2W5zFJLb1J8* - -1. Деятельность компании Meta Platforms Inc. (Facebook и Instagram) на территории РФ запрещена \ No newline at end of file