@lmapp/react-native-cloudpayments
Version:
🚀 Мощный SDK для интеграции платежей CloudPayments в React Native. Поддержка Apple Pay, Google Pay, СБП, банковских карт. Полная типизация TypeScript. iOS 12+ и Android 21+
462 lines (448 loc) • 18.6 kB
JavaScript
"use strict";
/**
* Периоды повторения для рекурентных платежей
* @description Определяет доступные интервалы для автоматического списания средств
* при настройке подписок и регулярных платежей через CloudPayments.
*
* @example Настройка различных типов подписок
* ```typescript
* // Ежедневная подписка (например, доступ к контенту)
* const dailySubscription = {
* interval: RECURENT_PERIOD.DAY,
* period: 1
* };
*
* // Еженедельная подписка (например, доставка продуктов)
* const weeklySubscription = {
* interval: RECURENT_PERIOD.WEEK,
* period: 1
* };
*
* // Ежемесячная подписка (самый популярный вариант)
* const monthlySubscription = {
* interval: RECURENT_PERIOD.MONTH,
* period: 1
* };
* ```
*
* @see {@link https://docs.cloudpayments.ru/#rekurrentnye-platezhi} Документация по рекурентным платежам
*/
export let RECURENT_PERIOD = /*#__PURE__*/function (RECURENT_PERIOD) {
/**
* Ежедневное повторение
* @description Платеж будет списываться каждый день или через указанное количество дней.
* Подходит для ежедневных сервисов, контента, доступа к ресурсам.
* @example Ежедневная подписка на новости, доступ к премиум контенту
*/
RECURENT_PERIOD["DAY"] = "Day";
/**
* Еженедельное повторение
* @description Платеж будет списываться каждую неделю или через указанное количество недель.
* Популярно для услуг доставки, еженедельных сервисов.
* @example Еженедельная доставка продуктов, подписка на журналы
*/
RECURENT_PERIOD["WEEK"] = "Week";
/**
* Ежемесячное повторение
* @description Платеж будет списываться каждый месяц или через указанное количество месяцев.
* Самый распространенный тип подписок для большинства сервисов.
* @example Подписка на SaaS, стриминговые сервисы, мобильные приложения
*/
RECURENT_PERIOD["MONTH"] = "Month";
return RECURENT_PERIOD;
}({});
/**
* Настройки рекурентного (регулярного) платежа
* @description Конфигурация для автоматического списания средств через определенные интервалы.
* Позволяет настроить подписки, регулярные платежи и автоматическое продление услуг.
* После первого успешного платежа система будет автоматически списывать указанную сумму
* с сохраненной карты покупателя согласно заданному расписанию.
*
* @example Настройка месячной подписки с чеком
* ```typescript
* const monthlySubscription: Recurrent = {
* interval: RECURENT_PERIOD.MONTH,
* period: 1, // каждый месяц
* customerReceipt: {
* items: [{
* label: 'Подписка Premium на месяц',
* price: 999,
* quantity: 1,
* amount: 999,
* vat: 20,
* method: 4, // полная предоплата
* object: 4 // услуга
* }],
* taxationSystem: 1,
* email: 'user@example.com'
* }
* };
* ```
*
* @example Настройка квартальной подписки (каждые 3 месяца)
* ```typescript
* const quarterlySubscription: Recurrent = {
* interval: RECURENT_PERIOD.MONTH,
* period: 3, // каждые 3 месяца
* customerReceipt: {
* items: [{
* label: 'Квартальная подписка',
* price: 2700,
* quantity: 1,
* amount: 2700,
* method: 4,
* object: 4
* }],
* taxationSystem: 1,
* email: 'user@example.com'
* }
* };
* ```
*
* @example Еженедельная доставка
* ```typescript
* const weeklyDelivery: Recurrent = {
* interval: RECURENT_PERIOD.WEEK,
* period: 1, // каждую неделю
* customerReceipt: {
* items: [{
* label: 'Еженедельная доставка продуктов',
* price: 1500,
* quantity: 1,
* amount: 1500,
* method: 4,
* object: 4
* }],
* taxationSystem: 1
* }
* };
* ```
*
* @see {@link https://docs.cloudpayments.ru/#rekurrentnye-platezhi} Документация CloudPayments по рекурентным платежам
* @see {@link https://docs.cloudpayments.ru/#rekvizitimy-dlya-onlayn-cheka} Требования к чекам для рекурентных платежей
*/
/**
* Элемент чека (товар/услуга)
* @description Представляет одну позицию в чеке онлайн-кассы согласно 54-ФЗ.
* Содержит всю необходимую информацию о товаре или услуге для формирования фискального документа.
*
* @example Создание товара для чека
* ```typescript
* const item: ReceiptItem = {
* label: 'Подписка Premium на 1 месяц',
* price: 999.00,
* quantity: 1,
* amount: 999.00,
* vat: 20, // НДС 20%
* method: 4, // Полная предварительная оплата
* object: 4 // Услуга
* };
* ```
*
* @see {@link https://docs.cloudpayments.ru/#rekvizitimy-dlya-onlayn-cheka} Документация CloudPayments
* @see {@link https://www.nalog.ru/rn77/taxation/reference_work/conception_vnp/4687249/} 54-ФЗ на сайте ФНС
*/
/**
* Суммы платежа по способам оплаты
* @description Детализация общей суммы платежа по различным способам оплаты
* согласно требованиям 54-ФЗ. Сумма всех полей должна равняться общей сумме платежа.
*
* @example Полная оплата электронными деньгами
* ```typescript
* const amounts: Amounts = {
* electronic: 1000.00, // Вся сумма электронно
* advancePayment: 0, // Без предоплаты
* credit: 0, // Без кредита
* provision: 0 // Без задатка
* };
* ```
*
* @example Смешанная оплата с предоплатой
* ```typescript
* const amounts: Amounts = {
* electronic: 800.00, // 800 руб электронно
* advancePayment: 200.00, // 200 руб предоплата
* credit: 0,
* provision: 0
* };
* ```
*/
/**
* Структура чека онлайн-кассы
* @description Полная информация для формирования фискального документа согласно 54-ФЗ.
* Содержит все необходимые данные для отправки в ОФД (Оператор Фискальных Данных)
* и соответствует требованиям российского законодательства об онлайн-кассах.
*
* @example Создание чека для интернет-магазина
* ```typescript
* const receipt: Receipt = {
* items: [
* {
* label: 'Смартфон iPhone 15',
* price: 89990,
* quantity: 1,
* amount: 89990,
* vat: 20,
* method: 4,
* object: 1
* }
* ],
* taxationSystem: 1, // ОСН
* email: 'buyer@email.com',
* isBso: false,
* amounts: {
* electronic: 89990,
* advancePayment: 0,
* credit: 0,
* provision: 0
* }
* };
* ```
*
* @see {@link https://docs.cloudpayments.ru/#rekvizitimy-dlya-onlayn-cheka} CloudPayments документация
* @see {@link https://www.consultant.ru/document/cons_doc_LAW_200383/} Федеральный закон 54-ФЗ
*/
/**
* Информация о плательщике (покупателе)
* @description Персональные данные покупателя для формирования чека и выполнения
* требований законодательства. Все поля опциональны, но рекомендуется заполнять
* максимально полно для соответствия требованиям валютного законодательства
* и для улучшения процессинга платежей.
*
* @example Полная информация о физическом лице
* ```typescript
* const payer: IPayer = {
* firstName: 'Иван',
* lastName: 'Петров',
* middleName: 'Сидорович',
* birth: '1985-03-15',
* address: 'г. Москва, ул. Тверская, д. 10, кв. 25',
* street: 'ул. Тверская',
* city: 'Москва',
* country: 'RU',
* phone: '+79991234567',
* postcode: '101000'
* };
* ```
*
* @example Минимальная информация
* ```typescript
* const payer: IPayer = {
* firstName: 'Иван',
* lastName: 'Петров',
* phone: '+79991234567'
* };
* ```
*
* @see {@link https://docs.cloudpayments.ru/#parametry-zaprosa} CloudPayments параметры
*/
/**
* @fileoverview Интерфейсы данных платежей для CloudPayments SDK
* @description Содержит типы данных для настройки и выполнения платежей
* @author Leonid Molchanov
* @since 1.0.0
*/
// ============================================================================
// PAYMENT DATA INTERFACES
// ============================================================================
/**
* Базовые данные платежа, обязательные для всех операций
*
* @description Содержит минимально необходимую информацию для проведения платежа
* через CloudPayments. Все поля кроме publicId, amount и currency являются опциональными.
*
* @example Создание базовых данных платежа
* ```typescript
* import { IBasePaymentData } from '@lmapp/react-native-cloudpayments';
*
* const paymentData: IBasePaymentData = {
* publicId: 'pk_test_1234567890abcdef', // Ваш Public ID из личного кабинета
* amount: '1000.00', // Сумма в рублях
* currency: 'RUB', // Валюта платежа
* description: 'Оплата заказа №12345', // Описание платежа
* email: 'user@example.com', // Email покупателя
* accountId: 'user_123', // ID пользователя в вашей системе
* jsonData: JSON.stringify({ // Дополнительные данные
* orderId: 12345,
* source: 'mobile_app'
* })
* };
* ```
*
* @see {@link https://developers.cloudpayments.ru/#parametry-zaprosa} Документация по параметрам
* @since 1.0.0
*/
/**
* Конфигурация платежной формы и дополнительных возможностей
*
* @description Настройки поведения платежной формы, включая требования к email,
* настройки Apple Pay, URL для редиректов и другие опции.
*
* @example Настройка платежной формы
* ```typescript
* import { IPaymentConfigurationData } from '@lmapp/react-native-cloudpayments';
*
* const config: IPaymentConfigurationData = {
* requireEmail: true, // Обязательный ввод email
* useDualMessagePayment: false, // Одностадийный платеж
* disableApplePay: false, // Apple Pay включен
* applePayMerchantId: 'merchant.com.example.app', // ID для Apple Pay
* successRedirectUrl: 'https://example.com/success', // URL успеха
* failRedirectUrl: 'https://example.com/fail', // URL ошибки
* saveCardSinglePaymentMode: true, // Сохранение карт
* showResultScreen: true // Показ экрана результата
* };
* ```
*
* @since 1.0.0
*/
/**
* Полные данные платежа, объединяющие базовую информацию и конфигурацию
*
* @description Основной интерфейс для передачи данных в методы платежной формы.
* Содержит всю необходимую информацию для проведения платежа и настройки UI.
*
* @example Создание полных данных платежа
* ```typescript
* import { IPaymentData, PaymentService } from '@lmapp/react-native-cloudpayments';
*
* const paymentData: IPaymentData = {
* // Базовые данные платежа
* publicId: 'pk_test_1234567890abcdef',
* amount: '1500.00',
* currency: 'RUB',
* description: 'Подписка Premium на 1 месяц',
* email: 'user@example.com',
* accountId: 'user_456',
*
* // Конфигурация формы
* requireEmail: true,
* disableApplePay: false,
* applePayMerchantId: 'merchant.com.myapp.payments',
* showResultScreen: true,
* saveCardSinglePaymentMode: true
* };
*
* // Запуск платежной формы
* try {
* const result = await PaymentService.presentPaymentForm(paymentData);
* console.log('Платеж успешен:', result.transactionId);
* } catch (error) {
* console.log('Ошибка платежа:', error.message);
* }
* ```
*
* @since 1.0.0
*/
/**
* Данные для создания платежного намерения (Intent)
*
* @description Специальный тип данных для создания Intent - предварительного
* платежного намерения, которое используется для альтернативных способов оплаты
* (TPay, СБП, SberPay). Intent создается до начала платежа и содержит всю
* необходимую информацию для его завершения.
*
* @example Создание Intent для TPay
* ```typescript
* import { ICreateIntentPaymentData, PaymentService, EPaymentMethodType } from '@lmapp/react-native-cloudpayments';
*
* const intentData: ICreateIntentPaymentData = {
* publicId: 'pk_test_1234567890abcdef',
* amount: '2500.00',
* currency: 'RUB',
* description: 'Оплата через Tinkoff Pay',
* email: 'customer@example.com',
* accountId: 'customer_789'
* };
*
* try {
* // Создаем Intent
* const intent = await PaymentService.createIntent(intentData);
* console.log('Intent создан:', intent.id);
*
* // Запускаем оплату через TPay
* const result = await PaymentService.getIntentWaitStatus(
* intentData,
* EPaymentMethodType.TPAY
* );
* console.log('Статус платежа:', result.status);
* } catch (error) {
* console.log('Ошибка создания Intent:', error.message);
* }
* ```
*
* @example Создание Intent для СБП
* ```typescript
* const sbpIntentData: ICreateIntentPaymentData = {
* publicId: 'pk_test_1234567890abcdef',
* amount: '750.50',
* currency: 'RUB',
* description: 'Быстрая оплата через СБП',
* email: 'user@domain.ru'
* };
*
* const sbpResult = await PaymentService.getIntentWaitStatus(
* sbpIntentData,
* EPaymentMethodType.SBP
* );
* ```
*
* @see {@link https://developers.cloudpayments.ru/#intent} Документация по Intent API
* @since 1.0.0
*/
// ============================================================================
// CARDIO CONFIGURATION INTERFACE
// ============================================================================
/**
* Конфигурация CardIO сканера банковских карт
*
* @description Детальные настройки поведения и внешнего вида CardIO сканера.
* Позволяет настроить требования к полям карты, цветовую схему, локализацию
* и дополнительные параметры интерфейса.
*
* @example Базовая конфигурация
* ```typescript
* import { ECardIOLanguage, ECardIOColorScheme } from '@lmapp/react-native-cloudpayments';
*
* const cardScannerConfig: ICardIOConfig = {
* requireExpiry: true,
* requireCVV: false,
* hideCardIOLogo: true,
* actionBarColor: ECardIOColorScheme.MATERIAL_BLUE,
* guideColor: ECardIOColorScheme.MATERIAL_GREEN,
* language: ECardIOLanguage.RUSSIAN
* };
* ```
*
* @example Расширенная конфигурация
* ```typescript
* const advancedConfig: ICardIOConfig = {
* // Поля карты
* requireExpiry: true,
* requireCVV: false,
* requirePostalCode: false,
* requireCardholderName: true,
*
* // Интерфейс
* hideCardIOLogo: true,
* usePayPalLogo: false,
* suppressManualEntry: false,
*
* // Цвета
* actionBarColor: '#1976D2',
* guideColor: ECardIOColorScheme.MATERIAL_GREEN,
*
* // Локализация
* language: ECardIOLanguage.RUSSIAN,
*
* // Дополнительно
* suppressConfirmation: false,
* suppressScan: false,
* keepApplicationTheme: true
* };
* ```
*
* @since 1.0.0
* @platform android
*/
//# sourceMappingURL=paymentData.js.map