yookassa-sdk-node
Version:
YooKassa TypeScript SDK
1,284 lines (1,280 loc) • 58 kB
TypeScript
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 };