UNPKG

nestjs-yookassa

Version:

A NestJS library for integrating with YooKassa API

202 lines (201 loc) 7.57 kB
import type { Amount } from '../../../../common/interfaces'; import type { TaxSystemCodesEnum, VatCodesEnum } from '../../../receipt/enums'; import type { Customer } from '../../../receipt/interfaces/requests'; import type { YookassaMetadata } from '../../../../common/types/metadata.type'; import type { PaymentMethod } from '../payment-method.interface'; import type { ConfirmationRequest } from './confirmation.request'; /** * Данные о получателе платежа */ export interface Recipient { /** Идентификатор получателя в платежной системе */ gateway_id: string; } /** * Дробное количество маркированного товара (mark_quantity). */ export interface MarkQuantity { /** Числитель — продаваемое количество. */ numerator: number; /** Знаменатель — общее количество в упаковке. */ denominator: number; } /** * Товар/услуга в чеке. */ interface ReceiptItem { /** Название товара (1–128 символов). */ description: string; /** Цена единицы товара. */ amount: Amount; /** Количество товара. */ quantity: number; /** Ставка НДС. Для самозанятых всегда 1. */ vat_code: VatCodesEnum; /** Мера количества (тег 2108, напр. "piece"). */ measure?: string; /** Дробное количество маркированного товара. */ mark_quantity?: MarkQuantity; /** Признак предмета расчета (товар, услуга и т.д.). */ payment_subject?: string; /** Признак способа расчета (full_payment и т.п.). */ payment_mode?: string; /** Код страны происхождения (ISO 3166-1 alpha-2). */ country_of_origin_code?: string; /** Номер таможенной декларации. */ customs_declaration_number?: string; /** Сумма акциза. */ excise?: string; /** Код товара (hex, макс 32 байта). */ product_code?: string; /** Информация о коде маркировки. */ mark_code_info?: object; /** Режим обработки кода маркировки (обычно "0"). */ mark_mode?: string; /** Отраслевой реквизит предмета расчета. */ payment_subject_industry_details?: object[]; } /** * Данные для формирования чека. */ export interface Receipt { /** Данные о пользователе (email или phone обязательны). */ customer?: Customer; /** Список товаров (обязателен). */ items: ReceiptItem[]; /** Код системы налогообложения (если нужно). */ tax_system_code?: TaxSystemCodesEnum; } /** * Информация о пассажире авиабилета */ export interface AirlinePassenger { /** * Имя пассажира. Используются только латинские буквы, например SERGEI. */ first_name: string; /** * Фамилия пассажира. Используются только латинские буквы, например IVANOV. */ last_name: string; } /** * Информация о перелёте */ export interface AirlineLeg { /** * Код аэропорта вылета по справочнику IATA, например LED. */ departure_airport: string; /** * Код аэропорта прибытия по справочнику IATA, например AMS. */ destination_airport: string; /** * Дата вылета в формате YYYY-MM-DD (ISO 8601). */ departure_date: string; /** * Код авиакомпании по справочнику IATA. Необязательное поле. */ carrier_code?: string; } /** * Объект с данными для продажи авиабилетов. * Используется только для платежей банковской картой. */ export interface AirlineInfo { /** * Уникальный номер билета. Обязателен, если известен при создании платежа. */ ticket_number?: string; /** * Номер бронирования. Обязателен, если не передан ticket_number. */ booking_reference?: string; /** * Список пассажиров. Необязательное поле. */ passengers?: AirlinePassenger[]; /** * Список перелётов. Необязательное поле. */ legs?: AirlineLeg[]; } /** * Тип, представляющий запрос на создание платежа. */ export interface CreatePaymentRequest<T extends YookassaMetadata = YookassaMetadata> { /** * Сумма платежа. */ amount: Amount; /** * Описание платежа. * Необязательное поле. */ description?: string; /** * Чек, который будет прикреплен к платежу. * Необязательное поле. */ receipt?: { customer: Customer; items: ReceiptItem[]; }; /** * Информация о получателе платежа. * Необязательное поле. */ recipient?: Recipient; /** * Одноразовый токен для проведения оплаты, сформированный с помощью Checkout.js или мобильного SDK * Необязательное поле. */ payment_token?: string; /** * Идентификатор сохраненного способа оплаты * Необязательное поле. */ payment_method_id?: string; /** * Метод платежа. * Необязательное поле. */ payment_method_data?: PaymentMethod; /** * Тип подтверждения для платежа. */ confirmation?: ConfirmationRequest; /** * Нужно ли сохранять метод платежа для будущих платежей. * Необязательное поле. */ save_payment_method?: boolean; /** * Указывает, следует ли сразу захватывать платеж. * Необязательное поле, по умолчанию false. */ capture?: boolean; /** * IPv4 или IPv6-адрес пользователя. */ client_ip?: string; /** * Дополнительные метаданные, связанные с платежом. * Необязательное поле. */ metadata?: T; /** * Объект с данными для продажи авиабилетов. * Используется только для платежей банковской картой. * Необязательное поле. */ airline?: AirlineInfo; /** * Идентификатор клиента в системе продавца. * Необязательное поле. */ merchant_customer_id?: string; } export {};