UNPKG

yookassa-sdk-node

Version:
1,284 lines (1,280 loc) 58 kB
import createClient from 'openapi-fetch'; interface components { schemas: { /** Error response for invalid or failed requests. */ ErrorResponse: { /** @enum {string} */ type: 'error'; /** * Идентификатор ошибки. Используйте его, если вам необходимо обратиться в техническую * поддержку * * @example * 249e2cf0-000f-5000-a000-1df11df15d3c */ id: string; /** * Код ошибки * * - `invalid_request` — неправильный запрос, например ошибка в значении параметра или нарушение логики проведения операции (HTTP 400) * - `invalid_credentials` — некорректные данные для аутентификации запросов (HTTP 401) * - `forbidden` — не хватает прав для выполнения операции (HTTP 403) * - `not_found` — запрашиваемый ресурс не найден (HTTP 404) * - `too_many_requests` — превышен лимит запросов в единицу времени (HTTP 429) * - `internal_server_error` — технические неполадки на стороне ЮKassa (HTTP 500) * * @enum {string} */ code: | 'invalid_request' | 'invalid_credentials' | 'forbidden' | 'not_found' | 'too_many_requests' | 'internal_server_error'; /** Описание ошибки на английском языке */ description?: string; /** Название заголовка или параметра тела ответа, из-за которого произошла ошибка */ parameter?: string; }; /** * Запрос на создание платежа * * **FIXME**: Описать `airline`, `transfer`, `deal`, `receiver` */ CreatePaymentRequest: { amount: components['schemas']['Amount']; /** * Описание транзакции (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а * пользователь — при оплате * * @example * Оплата заказа № 72 для user@yoomoney.ru */ description?: string; receipt?: components['schemas']['Receipt']; recipient?: components['schemas']['Recipient']; /** * Одноразовый токен для проведения оплаты, сформированный с помощью Checkout.js или * мобильного SDK */ payment_token?: string; /** Идентификатор сохраненного способа оплаты */ payment_method_id?: string; /** FIXME */ payment_method_data?: Record<string, never>; /** FIXME */ confirmation?: Record<string, never>; /** * Сохранение платежных данных для проведения автоплатежей. Возможные значения: * * - `true` — сохранить способ оплаты (сохранить платежные данные); * - `false` — провести платеж без сохранения способа оплаты. * * Доступно только после согласования с менеджером ЮKassa. */ save_payment_method?: boolean; /** * Автоматический прием поступившего платежа. Возможные значения: * * - `true` — оплата списывается сразу (платеж в одну стадию); * - `false` — оплата холдируется и списывается по вашему запросу (платеж в две стадии). * * @default false */ capture: boolean; /** IPv4 или IPv6-адрес пользователя. Если не указан, используется IP-адрес TCP-подключения */ client_ip?: string; /** * Любые дополнительные данные, которые нужны вам для работы (например, ваш внутренний * идентификатор заказа). Передаются в виде набора пар «ключ-значение» и возвращаются в ответе * от ЮKassa. Ограничения: максимум 16 ключей, имя ключа не больше 32 символов, значение ключа * не больше 512 символов, тип данных — строка в формате UTF-8. */ metadata?: { [key: string]: string; }; /** * Идентификатор покупателя в вашей системе, например электронная почта или номер телефона. Не * более 200 символов. Присутствует, если вы хотите запомнить банковскую карту и отобразить ее * при повторном платеже в виджете ЮKassa. */ merchant_customer_id?: string; }; /** Запрос на создание инвойса. */ CreateInvoiceRequest: { payment_data: components['schemas']['CreateInvoicePaymentData']; /** * Корзина заказа — список товаров или услуг, который отобразится на странице счета перед * оплатой */ cart: components['schemas']['InvoiceCartItem'][]; /** * Format: date-time * * Срок действия счета — дата и время, до которых можно оплатить выставленный счет. * Указывается по UTC и передается в формате ISO 8601 * * @example * 2024-10-18T10:51:18.139Z */ expires_at: string; /** * Язык интерфейса, писем и смс, которые будет видеть или получать пользователь. Формат * соответствует ISO/IEC 15897 * * @enum {string} */ locale?: 'ru_RU' | 'en_US'; /** * Описание выставленного счета (не более 128 символов), которое вы увидите в личном кабинете * ЮKassa, а пользователь на странице счета * * @example * Счет на оплату по договору 37 */ description?: string; metadata?: components['schemas']['Metadata']; }; /** Данные для проведения платежа по выставленному счету */ CreateInvoicePaymentData: { amount: components['schemas']['Amount']; receipt?: components['schemas']['Receipt']; recipient?: components['schemas']['Recipient']; /** * Сохранение платежных данных для проведения автоплатежей. Возможные значения: * * - `true` — сохранить способ оплаты (сохранить платежные данные); * - `false` — провести платеж без сохранения способа оплаты. * * Доступно только после согласования с менеджером ЮKassa. */ save_payment_method?: boolean; /** * Автоматический прием поступившего платежа. Возможные значения: * * - `true` — оплата списывается сразу (платеж в одну стадию); * - `false` — оплата холдируется и списывается по вашему запросу (платеж в две стадии). */ capture?: boolean; /** IPv4 или IPv6-адрес пользователя. Если не указан, используется IP-адрес TCP-подключения */ client_ip?: string; /** * Описание транзакции (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а * пользователь — при оплате * * @example * Оплата заказа № 72 для user@yoomoney.ru */ description?: string; metadata?: components['schemas']['Metadata']; }; /** * Любые дополнительные данные, которые нужны вам для работы (например, ваш внутренний * идентификатор заказа). Передаются в виде набора пар «ключ-значение» и возвращаются в ответе * от ЮKassa. Ограничения: максимум 16 ключей, имя ключа не больше 32 символов, значение ключа * не больше 512 символов, тип данных — строка в формате UTF-8. */ Metadata: { [key: string]: string; }; DateFilter: { /** * Время должно быть больше указанного значения или равно ему («с такого-то момента * включительно») * * @example * 2018-07-18T10:51:18.139Z */ gte?: string; /** * Время должно быть больше указанного значения * * @example * 2018-07-18T10:51:18.139Z */ gt?: string; /** * Время должно быть меньше указанного значения или равно ему * * @example * 2018-07-18T10:51:18.139Z */ lte?: string; /** * Время должно быть меньше указанного значения * * @example * 2018-07-18T10:51:18.139Z */ lt?: string; }; /** * Данные для формирования чека * * **FIXME: Нужно описать недостающие необязательные поля** */ Receipt: { customer?: components['schemas']['Customer']; /** Список товаров или услуг, включенных в чек. */ items: components['schemas']['ReceiptItem'][]; }; /** * Информация о пользователе. Необходимо указать как минимум контактные данные: для Чеков от * ЮKassa — электронную почту (`customer.email`), в остальных случаях — электронную почту * (`customer.email`) или номер телефона (`customer.phone`). */ Customer: { /** * Для юрлица — название организации, для ИП и физического лица — ФИО. Если у физлица * отсутствует ИНН, в этом же параметре передаются паспортные данные. Не более 256 символов. * * Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу Orange Data, Атол Онлайн. */ full_name?: string; /** * ИНН пользователя (10 или 12 цифр). Если у физического лица отсутствует ИНН, необходимо * передать паспортные данные в параметре full_name. * * Можно передавать, если используете Чеки от ЮKassa или онлайн-кассу Orange Data, Атол Онлайн. */ inn?: string; /** * Электронная почта пользователя для отправки чека. Обязательный параметр, если используете * Чеки от ЮKassa или если используете другое решение (стороннюю онлайн-кассу, чеки * самозанятых) и не передаете phone. */ email?: string; /** * Телефон пользователя для отправки чека. Указывается в формате ITU-T E.164. Обязательный * параметр, если не передан email. * * @example * 79000000000; */ phone?: string; }; /** * Информация о товаре или услуге в чеке * * **FIXME: Нужно описать недостающие необязательные поля** */ ReceiptItem: { /** Название товара (от 1 до 128 символов). Тег в 54 ФЗ — 1030 */ description: string; amount: components['schemas']['Amount']; /** * Ставка НДС (тег в 54 ФЗ — 1199). * * Для чеков по 54-ФЗ — перечень возможных значений: * - для Чеков от Ю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 * * Для чеков самозанятых — фиксированное значение: `1` */ vat_code: number; /** * Format: float * * Количество товара (тег в 54 ФЗ — 1023). * * - Для чеков по 54-ФЗ: можно передать целое или дробное число. Разделитель дробной части — точка, разделитель тысяч отсутствует. Максимально возможное значение и максимальное количество знаков после точки (для дробных значений) зависят от модели вашей онлайн-кассы. Для чеков от ЮKassa максимально возможное значение — 99999.999, не более 3 знаков после точки. * - Для чеков самозанятых: только целые положительные числа (без точки и дробной части). Пример: 1. * * @example * 1; */ quantity: number; /** * Мера количества предмета расчета (тег в 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 * * @example * piece; */ measure?: string; }; /** Объект платежа содержит всю информацию о платеже, актуальную на текущий момент времени */ Payment: { /** Идентификатор платежа в ЮKassa */ id: string; /** * Статус платежа * * @enum {string} */ status: 'pending' | 'waiting_for_capture' | 'succeeded' | 'canceled'; amount: components['schemas']['Amount']; /** Сумма платежа, которую получит магазин, — значение `amount` за вычетом комиссии ЮKassa */ income_amount?: components['schemas']['Amount']; /** * Описание транзакции (не более 128 символов), которое вы увидите в личном кабинете ЮKassa, а * пользователь — при оплате * * @example * Оплата заказа № 72 для user@yoomoney.ru */ description?: unknown; recipient: components['schemas']['Recipient']; payment_method?: components['schemas']['PaymentMethod']; /** * Format: date-time * * Время подтверждения платежа. Указывается по UTC и передается в формате ISO 8601 * * @example * 2017-11-03T11:52:31.827Z */ captured_at?: string; /** * Format: date-time * * Время создания заказа. Указывается по UTC и передается в формате ISO 8601 * * @example * 2017-11-03T11:52:31.827Z */ created_at: string; /** * Format: date-time * * Время, до которого вы можете бесплатно отменить или подтвердить платеж. В указанное время * платеж в статусе waiting_for_capture будет автоматически отменен. Указывается по UTC и * передается в формате ISO 8601 * * @example * 2017-11-03T11:52:31.827Z */ expires_at?: string; confirmation?: components['schemas']['Confirmation']; /** Признак тестовой операции */ test?: boolean; refunded_amount?: components['schemas']['Amount']; /** Признак оплаты заказа */ paid: boolean; /** Возможность провести возврат по API */ refundable: boolean; /** * Статус регистрации чека. Возможные значения: - `pending` — данные в обработке; - * `succeeded` — чек успешно зарегистрирован; - `canceled` — чек зарегистрировать не удалось; * если используете Чеки от ЮKassa, обратитесь в техническую поддержку, в остальных случаях * сформируйте чек вручную. Присутствует, если вы используете решения ЮKassa для отправки * чеков в налоговую. * * @enum {string} */ receipt_registration?: 'pending' | 'succeeded' | 'canceled'; metadata?: components['schemas']['Metadata']; /** Комментарий к статусу canceled: кто отменил платеж и по какой причине */ cancellation_details?: { /** * Участник процесса платежа, который принял решение об отмене транзакции * * @enum {string} */ party: 'yoo_money' | 'payment_network' | 'merchant'; /** * https://yookassa.ru/developers/payment-acceptance/after-the-payment/declined-payments#cancellation-details-reason * * @enum {string} */ reason: | '3d_secure_failed' | 'call_issuer' | 'canceled_by_merchant' | 'card_expired' | 'country_forbidden' | 'deal_expired' | 'expired_on_capture' | 'expired_on_confirmation' | 'fraud_suspected' | 'general_decline' | 'identification_required' | 'insufficient_funds' | 'internal_timeout' | 'invalid_card_number' | 'invalid_csc' | 'issuer_unavailable' | 'payment_method_limit_exceeded' | 'payment_method_restricted' | 'permission_revoked' | 'unsupported_mobile_operator'; }; /** * Данные об авторизации платежа при оплате банковской картой. Присутствуют только для этих * способов оплаты: банковская карта, Mir Pay, SberPay, T-Pay. */ authorization_details?: { /** Retrieval Reference Number — уникальный идентификатор транзакции в системе эмитента */ rrn?: string; /** Код авторизации. Выдается эмитентом и подтверждает проведение авторизации */ auth_code?: string; three_d_secure: { /** Отображение пользователю формы для прохождения аутентификации по 3‑D Secure */ applied: boolean; }; }; /** * Данные о распределении денег — сколько и в какой магазин нужно перевести. Присутствует, * если вы используете Сплитование платежей */ transfers?: Record<string, never>[]; /** * Данные о сделке, в составе которой проходит платеж. Присутствует, если вы проводите * Безопасную сделку */ deal?: { id: string; settlements: { /** @enum {string} */ type: 'payout'; amount: components['schemas']['Amount']; }[]; }; /** * Идентификатор покупателя в вашей системе, например электронная почта или номер телефона. * Присутствует, если вы хотите запомнить банковскую карту и отобразить ее при повторном * платеже в виджете ЮKassa */ merchant_customer_id?: string; /** Данные о выставленном счете, в рамках которого проведен платеж */ invoice_details?: { /** Идентификатор счета в ЮКасса */ id?: string; }; }; PaymentMethod: | components['schemas']['PaymentMethodSberLoan'] | components['schemas']['PaymentMethodAlfabank'] | components['schemas']['PaymentMethodMobileBalance'] | components['schemas']['PaymentMethodBankCard'] | components['schemas']['PaymentMethodInstallments'] | components['schemas']['PaymentMethodCash'] | components['schemas']['PaymentMethodSBP'] | components['schemas']['PaymentMethodB2BSberbank'] | components['schemas']['PaymentMethodElectronicCertificate'] | components['schemas']['PaymentMethodYooMoney'] | components['schemas']['PaymentMethodApplePay'] | components['schemas']['PaymentMethodGooglePay'] | components['schemas']['PaymentMethodQiwi'] | components['schemas']['PaymentMethodSberbank'] | components['schemas']['PaymentMethodTinkoffBank'] | components['schemas']['PaymentMethodWeChat'] | components['schemas']['PaymentMethodWebMoney']; PaymentMethodBase: { id: string; saved: boolean; title?: string; }; PaymentMethodSberLoan: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'sber_loan'; login?: string; discount_amount?: components['schemas']['Amount']; /** @enum {string} */ loan_option?: 'loan' | 'installments_3' | 'installments_6' | 'installments_12'; }; PaymentMethodAlfabank: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'alfabank'; login?: string; }; PaymentMethodMobileBalance: { /** @enum {string} */ type: 'mobile_balance'; id: string; saved: boolean; title?: string; } & (WithRequired<components['schemas']['PaymentMethodBase'], 'id' | 'saved'> & { /** @enum {string} */ type: never; }); PaymentMethodBankCard: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'bank_card'; card?: components['schemas']['Card']; }; PaymentMethodInstallments: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'installments'; }; PaymentMethodCash: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'cash'; }; PaymentMethodSBP: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'sbp'; }; PaymentMethodB2BSberbank: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'b2b_sberbank'; }; PaymentMethodElectronicCertificate: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'electronic_certificate'; }; PaymentMethodYooMoney: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'yoo_money'; account_number?: string; }; PaymentMethodApplePay: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'apple_pay'; }; PaymentMethodGooglePay: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'google_pay'; }; PaymentMethodQiwi: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'qiwi'; }; PaymentMethodSberbank: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'sberbank'; card?: components['schemas']['Card']; /** * @example * 79000000000; */ phone?: string; }; PaymentMethodTinkoffBank: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'tinkoff_bank'; card?: components['schemas']['Card']; }; PaymentMethodWeChat: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'wechat'; }; PaymentMethodWebMoney: components['schemas']['PaymentMethodBase'] & { /** @enum {string} */ type: 'webmoney'; }; /** Данные банковской карты */ Card: { /** Первые 6 цифр номера карты (BIN) */ first6: string; /** Последние 4 цифры номера карты */ last4: string; /** Срок действия, год, YYYY */ expiry_year?: string; /** Срок действия, месяц, MM */ expiry_month?: string; /** @enum {string} */ card_type: | 'MasterCard' | 'Visa' | 'Mir' | 'UnionPay' | 'JCB' | 'AmericanExpress' | 'DinersClub' | 'DiscoverCard' | 'InstaPayment' | 'InstaPaymentTM' | 'Laser' | 'Dankort' | 'Solo' | 'Switch' | 'Unknown.'; }; /** * Объект счета (Invoice) содержит всю информацию о счете, актуальную на текущий момент времени. * Он формируется при создании счета и приходит в ответ на любой запрос, связанный с счетами. * * Набор возвращаемых параметров зависит от статуса объекта (значение параметра status) и того, какие параметры вы передали в запросе на создание счета. * * Объект может содержать параметры и значения, не описанные в этом Справочнике API. Их следует игнорировать. */ Invoice: { /** Идентификатор счета в ЮКасса */ id: string; /** * Статус счета. Возможные значения: * * - `pending` — счет создан и ожидает успешной оплаты; * - `succeeded` — счет успешно оплачен, есть связанный платеж в статусе succeeded (финальный и неизменяемый статус для платежей в одну стадию); * - `canceled` — вы отменили счет, успешный платеж по нему не поступил или был отменен (при оплате в две стадии) либо истек срок действия счета (финальный и неизменяемый статус). * * @enum {string} */ status: 'pending' | 'succeeded' | 'canceled'; /** * Корзина заказа — список товаров или услуг, который отобразится на странице счета перед * оплатой */ cart: components['schemas']['InvoiceCartItem'][]; delivery_method?: components['schemas']['InvoiceDeliveryMethod']; payment_details?: components['schemas']['InvoicePaymentDetails']; /** * Дата и время создания счета на оплату. Указывается по UTC и передается в формате ISO 8601 * * @example * 2017-11-03T11:52:31.827Z */ created_at: string; /** * Срок действия счета — дата и время, до которых можно оплатить выставленный счет. * Указывается по UTC и передается в формате ISO 8601 * * @example * 2017-11-03T11:52:31.827Z */ expires_at?: string; /** * Описание выставленного счета (не более 128 символов), которое вы увидите в личном кабинете * ЮKassa, а пользователь на странице счета * * @example * Счет на оплату по договору 37 */ description?: string; metadata?: components['schemas']['Metadata']; }; InvoiceCartItem: { /** * Название товара или услуги (от 1 до 128 символов). Пользователь увидит его на странице * счета перед оплатой */ description: string; /** Полная цена товара или услуги. Пользователь увидит ее на странице счета перед оплатой */ price: components['schemas']['Amount']; /** * Итоговая цена товара с учетом скидки. Если передана, то на странице счета цена отобразится * с учетом скидки. Не нужно передавать, если пользователь оплачивает полную стоимость товара * или услуги */ discount_price?: components['schemas']['Amount']; /** * Количество товара. Можно передать целое или дробное число. Разделитель дробной части — * точка, разделитель тысяч отсутствует, максимум три знака после точки. Пример: 5.000 * * @example * 5; */ quantity: number; }; /** Данные о выбранном способе доставки счета. Присутствует только для счетов в статусе `pending` */ InvoiceDeliveryMethod: { /** @enum {string} */ type: 'self'; /** URL страницы счета, который необходимо передать пользователю для оплаты */ url?: string; }; /** * Данные о платеже по выставленному счету. Присутствуют, только если платеж успешно подтвержден * пользователем */ InvoicePaymentDetails: { /** Идентификатор платежа в ЮKassa */ id: string; /** * Статус платежа. Возможные значения: * * - `waiting_for_capture` — для платежей в две стадии: платеж оплачен, деньги авторизованы, вам необходимо списать оплату или отменить платеж; * - `succeeded` — платеж успешно завершен, деньги будут перечислены на ваш расчетный счет в соответствии с вашим договором с ЮKassa (финальный и неизменяемый статус); * - `canceled` — для платежей в две стадии: вы отменили платеж по API (финальный и неизменяемый статус). * * @enum {string} */ status: 'waiting_for_capture' | 'succeeded' | 'canceled'; }; /** * Сумма платежа. Иногда партнеры ЮKassa берут с пользователя дополнительную комиссию, которая * не входит в эту сумму */ Amount: { /** * Сумма в выбранной валюте. Всегда дробное значение. Разделитель дробной части — точка, * разделитель тысяч отсутствует. Количество знаков после точки зависит от выбранной валюты * * @example * 1000.0; */ value: string; /** * Трехбуквенный код валюты в формате ISO-4217. Должен соответствовать валюте субаккаунта * (`recipient.gateway_id`), если вы разделяете потоки платежей, и валюте аккаунта (shopId в * личном кабинете), если не разделяете * * @example * RUB; */ currency: string; }; /** * Выбранный способ подтверждения платежа. Присутствует, когда платеж ожидает подтверждения от * пользователя */ Confirmation: | components['schemas']['ConfirmationEmbedded'] | components['schemas']['ConfirmationExternal'] | components['schemas']['ConfirmationMobileApplication'] | components['schemas']['ConfirmationQR'] | components['schemas']['ConfirmationRedirect']; /** * Действия, необходимые для подтверждения платежа, будут зависеть от способа оплаты, который * пользователь выберет в виджете ЮKassa. Подтверждение от пользователя получит ЮKassa — вам * необходимо только встроить виджет к себе на страницу */ ConfirmationEmbedded: { /** @enum {string} */ type: 'embedded'; /** Токен для инициализации платежного виджета ЮKassa */ confirmation_token: string; }; /** * Для подтверждения платежа пользователю необходимо совершить действия во внешней системе * (например, ответить на смс). От вас требуется только сообщить пользователю о дальнейших * шагах */ ConfirmationExternal: { /** @enum {string} */ type: 'external'; }; /** * Для подтверждения платежа пользователю необходимо совершить действия в мобильном приложении * (например, в приложении интернет-банка). Вам нужно перенаправить пользователя на * confirmation_url, полученный в платеже */ ConfirmationMobileApplication: { /** @enum {string} */ type: 'mobile_application'; /** Диплинк на мобильное приложение, в котором пользователь подтверждает платеж */ confirmation_url: string; }; /** * Для подтверждения платежа пользователю необходимо просканировать QR-код. От вас требуется * сгенерировать QR-код, используя любой доступный инструмент, и отобразить его на странице * оплаты */ ConfirmationQR: { /** @enum {string} */ type: 'qr'; /** Данные для генерации QR-кода */ confirmation_data: string; }; /** * Пользователю необходимо что-то сделать на странице ЮKassa или ее партнера (например, ввести * данные банковской карты или пройти аутентификацию по 3-D Secure). Вам нужно перенаправить * пользователя на confirmation_url, полученный в платеже . При успешной оплате (и если что-то * пойдет не так) ЮKassa вернет пользователя на return_url, который вы отправите в запросе на * создание платежа */ ConfirmationRedirect: { /** @enum {string} */ type: 'redirect'; /** URL, на который необходимо перенаправить пользователя для подтверждения оплаты */ confirmation_url: string; /** * Запрос на проведение платежа с аутентификацией по 3-D Secure. Будет работать, если оплату * банковской картой вы по умолчанию принимаете без подтверждения платежа пользователем. В * остальных случаях аутентификацией по 3-D Secure будет управлять ЮKassa. Если хотите * принимать платежи без дополнительного подтверждения пользователем, напишите вашему * менеджеру ЮKassa */ enforce?: string; /** * URL, на который вернется пользователь после подтверждения или отмены платежа на * веб-странице. Не более 2048 символов */ return_url?: string; }; /** * Получатель платежа * * **Для создания платежей** * Нужен, если вы разделяете потоки платежей в рамках одного аккаунта или создаете платеж в адрес другого аккаунта. */ Recipient: { /** Идентификатор магазина в ЮKassa */ account_id: string; /** * Идентификатор субаккаунта. Используется для разделения потоков платежей в рамках одного * аккаунта */ gateway_id: string; }; /** Входящее уведомление */ WebhookEvent: | components['schemas']['WebhookEventPaymentWaitingForCapture'] | components['schemas']['WebhookEventPaymentSucceeded'] | components['schemas']['WebhookEventPaymentCanceled']; WebhookEventPaymentWaitingForCapture: { /** @enum {string} */ type: 'notification'; /** @enum {string} */ event: 'payment.waiting_for_capture'; object: components['schemas']['Payment']; }; WebhookEventPaymentSucceeded: { /** @enum {string} */ type: 'notification'; /** @enum {string} */ event: 'payment.succeeded'; object: components['schemas']['Payment']; }; WebhookEventPaymentCanceled: { /** @enum {string} */ type: 'notification'; /** @enum {string} */ event: 'payment.canceled'; object: components['schemas']['Payment']; }; }; responses: { /** Тело ответа при ошибке */ ErrorResponse: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['ErrorResponse']; }; }; /** Объект платежа в актуальном статусе */ PaymentResponse: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['Payment']; }; }; /** Список платежей */ PaymentListResponse: { headers: { [name: string]: unknown; }; content: { 'application/json': { /** @enum {string} */ type: 'list'; items: components['schemas']['Payment'][]; next_cursor?: string; }; }; }; /** Объект счёта в актуальном статусе */ InvoiceResponse: { headers: { [name: string]: unknown; }; content: { 'application/json': components['schemas']['Invoice']; }; }; }; parameters: { IdempotenceKey: string; }; requestBodies: never; headers: never; pathItems: never; } interface operations { 'get-payment-list': { parameters: { query?: { /** * Фильтр по времени создания: время должно быть больше указанного значения или равно ему * («с такого-то момента включительно») */ 'created_at.gte'?: string; /** * Фильтр по времени создания: время должно быть больше указанного значения («с такого-то * момента, не включая его») */ 'created_at.gt'?: string; /** * Фильтр по времени создания: время должно быть меньше указанного значения или равно ему * («по такой-то момент включительно») */ 'created_at.lte'?: string; /** * Фильтр по времени создания: время должно быть меньше указанного значения («по такой-то * момент, не включая его») */ 'created_at.lt'?: string; /** * Фильтр по времени подтверждения: время должно быть больше указанного значения или равно * ему («с такого-то момента включительно») */ 'captured_at.gte'?: string; /** * Фильтр по времени подтверждения: время должно быть больше указанного значения («с * такого-то момента, не включая его») */ 'captured_at.gt'?: string; /** * Фильтр по времени подтверждения: время должно быть меньше указанного значения или равно * ему («по такой-то момент включительно») */ 'captured_at.lte'?: string; /** * Фильтр по времени подтверждения: время должно быть меньше указанного значения («по * такой-то момент, не включая его») */ 'captured_at.lt'?: string; /** Фильтр по коду способа оплаты */ payment_method?: string; /** Фильтр по статусу платежа */ status?: string; /** Размер выдачи результатов запроса — количество объектов, передаваемых в ответе */ limit?: number; /** Указатель на следующий фрагмент списка */ cursor?: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: components['responses']['PaymentListResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; 'create-payment': { parameters: { query?: never; header: { 'Idempotence-Key': components['parameters']['IdempotenceKey']; }; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['CreatePaymentRequest']; }; }; responses: { 200: components['responses']['PaymentResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; 'get-payment': { parameters: { query?: never; header?: never; path: { /** ID платежа */ payment_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: components['responses']['PaymentResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; 'cancel-payment': { parameters: { query?: never; header: { 'Idempotence-Key': components['parameters']['IdempotenceKey']; }; path: { /** ID платежа */ payment_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: components['responses']['PaymentResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; 'create-invoice': { parameters: { query?: never; header: { 'Idempotence-Key': components['parameters']['IdempotenceKey']; }; path?: never; cookie?: never; }; requestBody: { content: { 'application/json': components['schemas']['CreateInvoiceRequest']; }; }; responses: { 200: components['responses']['InvoiceResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; 'get-invoice': { parameters: { query?: never; header?: never; path: { /** ID счёта */ invoice_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: components['responses']['InvoiceResponse']; 400: components['responses']['ErrorResponse']; 401: components['responses']['ErrorResponse']; 403: components['responses']['ErrorResponse']; 404: components['responses']['ErrorResponse']; 429: components['responses']['ErrorResponse']; 500: components['responses']['ErrorResponse']; }; }; } type WithRequired<T, K extends keyof T> = T & { [P in K]-?: T[P]; }; type Schemas = components['schemas']; type CreatePaymentBody = components['schemas']['CreatePaymentRequest']; type GetPaymentListQuery = operations['get-payment-list']['parameters']['query']; type CreateInvoiceBody = components['schemas']['CreateInvoiceRequest']; type WebhookEvent = components['schemas']['WebhookEvent']; interface SDKOptions { shopId: string; secretKey: string; } declare class YooKassaSDK { constructor({ shopId, secretKey }: SDKOptions); private readonly client; createPayment({ body, idempotenceKey }: { body: CreatePaymentBody; idempotenceKey: string; }): Promise<createClient.FetchResponse<{ parameters: { query?: never; header: { "Idempotence-Key": components["parameters"]["IdempotenceKey"]; }; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["CreatePaymentRequest"]; }; }; responses: { 200: components["responses"]["PaymentResponse"]; 400: components["responses"]["ErrorResponse"]; 401: components["responses"]["ErrorResponse"]; 403: components["responses"]["ErrorResponse"]; 404: components["responses"]["ErrorResponse"]; 429: components["responses"]["ErrorResponse"]; 500: components["responses"]["ErrorResponse"]; }; }, { params: { header: { "Idempotence-Key": string; }; }; body: { amount: components["schemas"]["Amount"]; description?: string; receipt?: components["schemas"]["Receipt"]; recipient?: components["schemas"]["Recipient"]; payment_token?: string; payment_method_id?: string; payment_method_data?: Record<string, never>; confirmation?: Record<string, never>; save_payment_method?: boolean; capture: boolean; client_ip?: string; metadata?: { [key: string]: string; }; merchant_customer_id?: string; }; }, `${string}/${string}`>>; getPaymentList({ query }: { query: GetPaymentListQuery; }): Promise<createClient.FetchResponse<{ parameters: { query?: { "created_at.gte"?: string; "created_at.gt"?: string; "created_at.lte"?: string; "created_at.lt"?: string; "captured_at.gte"?: string; "captured_at.gt"?: string; "captured_at.lte"?: string; "captured_at.lt"?: string; payment_method?: string; status?: string; limit?: number; cursor?: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: components["responses"]["PaymentListResponse"]; 400: components["responses"]["ErrorResponse"]; 401: components["responses"]["ErrorResponse"]; 403: components["responses"]["ErrorResponse"]; 404: components["responses"]["ErrorResponse"]; 429: components["responses"]["ErrorResponse"]; 500: components["responses"]["ErrorResponse"]; }; }, { params: { query: { 'created_at.gte'?: string; 'created_at.gt'?: string; 'created_at.lte'?: string; 'created_at.lt'?: string; 'captured_at.gte'?: string; 'captured_at.gt'?: string; 'captured_at.lte'?: string; 'captured_at.lt'?: string; payment_method?: string; status?: string; limit?: number; cursor?: string; } | undefined; }; }, `${string}/${string}`>>; getPayment({ payment_id }: { payment_id: string; }): Promise<createClient.FetchResponse<{ parameters: { query?: never; header?: never; path: { payment_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: components["responses"]["PaymentResponse"]; 400: components["responses"]["ErrorResponse"]; 401: components["responses"]["ErrorResponse"]; 403: components["responses"]["ErrorResponse"]; 404: components["responses"]["ErrorResponse"]; 429: components["responses"]["ErrorResponse"]; 500: components["responses"]["ErrorResponse"]; }; }, { params: { path: { payment_id: string; }; }; }, `${string}/${string}`>>; createInvoice({ body, idempotenceKey }: { body: CreateInvoiceBody; idempotenceKey: string; }): Promise<createClient.FetchResponse<{ parameters: { query?: never; header: { "Idempotence-Key": components["parameters"]["IdempotenceKey"]; }; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["CreateInvoiceRequest"]; }; }; responses: { 200: components["responses"]["InvoiceResponse"]; 400: components["responses"]["ErrorResponse"]; 401: components["responses"]["ErrorResponse"]; 403: components["responses"]["ErrorResponse"]; 404: components["responses"]["ErrorResponse"]; 429: components["responses"]["ErrorResponse"]; 500: components["responses"]["ErrorResponse"]; }; }, { params: { header: { "Idempotence-Key": string; }; }; body: { payment_data: components["schemas"]["CreateInvoicePaymentData"]; cart: components["schemas"]["InvoiceCartItem"][]; expires_at: string; locale?: "ru_RU" | "en_US"; description?: string; metadata?: components["schemas"]["Metadata"]; }; }, `${string}/${string}`>>; getInvoice({ invoice_id }: { invoice_id: string; }): Promise<createClient.FetchResponse<{ parameters: { query?: never; header?: never; path: { invoice_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: components["responses"]["InvoiceResponse"]; 400: components["responses"]["ErrorResponse"]; 401: components["responses"]["ErrorResponse"]; 403: components["responses"]["ErrorResponse"]; 404: components["responses"]["ErrorResponse"]; 429: components["responses"]["ErrorResponse"]; 500: components["responses"]["ErrorResponse"]; }; }, { params: { path: { invoice_id: string; }; }; }, `${string}/${string}`>>; } export { type CreateInvoiceBody, type CreatePaymentBody, type GetPaymentListQuery, type Schemas, type WebhookEvent, YooKassaSDK };