UNPKG

@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
"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