/** * @fileoverview Интерфейсы сервисов CloudPayments SDK * @description Содержит типы для основных сервисов SDK: платежей и работы с картами * @author Leonid Molchanov * @since 1.0.0 */ import type { IPaymentData, ICreateIntentPaymentData, IPaymentFormResponse, IIntentResponse, IBankInfo, IPublicKeyResponse, EPaymentMethodType } from './index'; /** * Интерфейс сервиса для работы с банковскими картами * * @description Сервис для валидации карт, получения информации о банке-эмитенте * и работы с публичными ключами для шифрования данных карт. Используется * при создании собственных платежных форм или для дополнительной валидации. * * @example Базовое использование CardService * ```typescript * import { CardService } from '@lmapp/react-native-cloudpayments'; * * // Проверка корректности номера карты * const isValid = CardService.isValidCardNumber('4111111111111111'); * console.log('Карта валидна:', isValid); * * // Получение информации о банке * const bankInfo = await CardService.getBankInfo('4111111111111111'); * console.log('Банк:', bankInfo.bankName); * ``` * * @example Работа с публичными ключами * ```typescript * // Получение публичного ключа для шифрования * const publicKey = await CardService.getPublicKey(); * console.log('Версия ключа:', publicKey.Version); * * // Создание криптограммы (требует дополнительной реализации) * const cryptogram = createCryptogram(cardData, publicKey.Pem); * ``` * * @since 1.0.0 */ export interface ICardService { /** * Проверка корректности номера банковской карты * * @description Валидирует номер карты с помощью алгоритма Луна (Luhn algorithm). * Проверяет только математическую корректность номера, не гарантирует * существование карты или возможность проведения платежа. * * @param cardNumber - Номер карты (может содержать пробелы и дефисы) * @returns Promise с результатом валидации * * @example Валидация различных форматов номеров * ```typescript * // Номер без пробелов * const isValid1 = await CardService.isValidCardNumber('4111111111111111'); * console.log('Visa:', isValid1); // true * * // Номер с пробелами * const isValid2 = await CardService.isValidCardNumber('4111 1111 1111 1111'); * console.log('Visa с пробелами:', isValid2); // true * * // Номер с дефисами * const isValid3 = await CardService.isValidCardNumber('4111-1111-1111-1111'); * console.log('Visa с дефисами:', isValid3); // true * * // Некорректный номер * const isValid4 = await CardService.isValidCardNumber('1234567890123456'); * console.log('Некорректный:', isValid4); // false * ``` * * @example Валидация в реальном времени * ```typescript * const handleCardNumberChange = async (cardNumber: string) => { * const isValid = await CardService.isValidCardNumber(cardNumber); * setCardNumberValid(isValid); * * if (isValid) { * // Можно получить информацию о банке * CardService.getBankInfo(cardNumber).then(bankInfo => { * setBankName(bankInfo.bankName); * }); * } * }; * ``` * * @since 1.0.0 */ isValidCardNumber(cardNumber: string): Promise; /** * Получение информации о банке-эмитенте карты * * @description Определяет банк-эмитент по номеру карты и возвращает * информацию о банке, включая название и логотип. Использует BIN * (Bank Identification Number) - первые 6-8 цифр номера карты. * * @param cardNumber - Номер банковской карты * @returns Promise с информацией о банке-эмитенте * * @example Получение информации о банке * ```typescript * const bankInfo = await CardService.getBankInfo('4111111111111111'); * console.log('Банк:', bankInfo.bankName); * if (bankInfo.logoUrl) { * console.log('Логотип:', bankInfo.logoUrl); * } * ``` * * @example Отображение логотипа банка в UI * ```typescript * const [bankInfo, setBankInfo] = useState(null); * * const handleCardNumberChange = async (cardNumber: string) => { * if (CardService.isValidCardNumber(cardNumber)) { * try { * const info = await CardService.getBankInfo(cardNumber); * setBankInfo(info); * } catch (error) { * console.log('Не удалось определить банк'); * setBankInfo(null); * } * } * }; * * // В JSX * {bankInfo && ( * * {bankInfo.bankName} * {bankInfo.logoUrl && } * * )} * ``` * * @throws {Error} Если не удалось определить банк или номер карты некорректен * @since 1.0.0 */ getBankInfo(cardNumber: string): Promise; /** * Получение публичного ключа для шифрования данных карты * * @description Возвращает актуальный публичный ключ CloudPayments для * шифрования чувствительных данных карты (номер, CVV, срок действия). * Ключ используется для создания криптограммы при отправке данных на сервер. * * @returns Promise с публичным ключом и его версией * * @example Получение публичного ключа * ```typescript * const publicKey = await CardService.getPublicKey(); * console.log('PEM ключ:', publicKey.Pem); * console.log('Версия:', publicKey.Version); * ``` * * @example Использование для создания криптограммы * ```typescript * // Получаем публичный ключ * const publicKey = await CardService.getPublicKey(); * * // Подготавливаем данные карты * const cardData = { * cardNumber: '4111111111111111', * expDate: '12/25', * cvv: '123', * cardHolderName: 'JOHN DOE' * }; * * // Создаем криптограмму (требует дополнительной библиотеки для RSA) * const cryptogram = createCryptogram(cardData, publicKey.Pem); * * // Отправляем криптограмму на сервер * const paymentResult = await sendPaymentToServer({ * cryptogram, * amount: '1000.00', * currency: 'RUB' * }); * ``` * * @throws {Error} Если не удалось получить публичный ключ * @see {@link https://developers.cloudpayments.ru/#kriptogramma-karty} Документация по криптограммам * @since 1.0.0 */ getPublicKey(): Promise; } /** * Интерфейс сервиса для работы с платежами * * @description Основной сервис CloudPayments SDK, предоставляющий методы для * проведения платежей, создания Intent'ов и работы с альтернативными способами оплаты. * Все методы асинхронные и возвращают Promise с соответствующими типами данных. * * @example Базовое использование PaymentService * ```typescript * import { PaymentService, IPaymentData } from '@lmapp/react-native-cloudpayments'; * * // Инициализация SDK * await PaymentService.init('pk_test_1234567890abcdef'); * * // Создание данных платежа * const paymentData: IPaymentData = { * publicId: 'pk_test_1234567890abcdef', * amount: '1000.00', * currency: 'RUB', * description: 'Тестовый платеж', * email: 'test@example.com' * }; * * // Запуск платежной формы * try { * const result = await PaymentService.presentPaymentForm(paymentData); * console.log('Платеж успешен:', result.transactionId); * } catch (error) { * console.log('Ошибка:', error.message); * } * ``` * * @example Работа с альтернативными способами оплаты * ```typescript * import { EPaymentMethodType } from '@lmapp/react-native-cloudpayments'; * * // Оплата через Tinkoff Pay * const tpayResult = await PaymentService.getIntentWaitStatus( * paymentData, * EPaymentMethodType.TPAY * ); * * // Оплата через СБП * const sbpResult = await PaymentService.getIntentWaitStatus( * paymentData, * EPaymentMethodType.SBP * ); * ``` * * @since 1.0.0 */ export interface IPaymentService { /** * Инициализация CloudPayments SDK * * @description Обязательный метод для инициализации SDK с вашим Public ID. * Должен быть вызван перед использованием любых других методов SDK. * Public ID можно получить в личном кабинете CloudPayments. * * @param publicId - Публичный идентификатор мерчанта из личного кабинета * * @example Инициализация SDK * ```typescript * // Для тестового режима * await PaymentService.init('pk_test_1234567890abcdef'); * * // Для боевого режима * await PaymentService.init('pk_live_1234567890abcdef'); * ``` * * @throws {Error} Если Public ID некорректен или недоступен * @since 1.0.0 */ init(publicId: string): Promise; /** * Отображение стандартной платежной формы CloudPayments * * @description Показывает встроенную платежную форму CloudPayments с поддержкой * всех способов оплаты: банковские карты, Apple Pay, Google Pay и другие. * Форма автоматически адаптируется под платформу и настройки мерчанта. * * @param paymentData - Данные платежа и конфигурация формы * @returns Promise с результатом платежа, включая ID транзакции при успехе * * @example Простой платеж * ```typescript * const paymentData: IPaymentData = { * publicId: 'pk_test_1234567890abcdef', * amount: '500.00', * currency: 'RUB', * description: 'Покупка товара' * }; * * const result = await PaymentService.presentPaymentForm(paymentData); * if (result.success) { * console.log('Транзакция:', result.transactionId); * } * ``` * * @example Платеж с дополнительными настройками * ```typescript * const paymentData: IPaymentData = { * publicId: 'pk_test_1234567890abcdef', * amount: '1500.00', * currency: 'RUB', * description: 'Подписка Premium', * email: 'user@example.com', * requireEmail: true, * applePayMerchantId: 'merchant.com.myapp.payments', * showResultScreen: true * }; * * const result = await PaymentService.presentPaymentForm(paymentData); * ``` * * @throws {Error} Если данные платежа некорректны или произошла ошибка * @since 1.0.0 */ presentPaymentForm(paymentData: IPaymentData): Promise; /** * Создание платежного намерения (Intent) * * @description Создает Intent - предварительное платежное намерение, которое * используется для альтернативных способов оплаты (TPay, СБП, SberPay). * Intent содержит всю информацию о платеже и может быть использован * для генерации ссылок или QR-кодов. * * @param paymentData - Данные для создания Intent * @returns Promise с информацией о созданном Intent * * @example Создание Intent * ```typescript * const intentData: ICreateIntentPaymentData = { * publicId: 'pk_test_1234567890abcdef', * amount: '2000.00', * currency: 'RUB', * description: 'Оплата заказа №12345', * email: 'customer@example.com' * }; * * const intent = await PaymentService.createIntent(intentData); * console.log('Intent ID:', intent.id); * console.log('Статус:', intent.status); * console.log('URL для оплаты:', intent.paymentUrl); * ``` * * @throws {Error} Если не удалось создать Intent * @see {@link https://developers.cloudpayments.ru/#intent} Документация по Intent API * @since 1.0.0 */ createIntent(paymentData: ICreateIntentPaymentData): Promise; /** * Ожидание статуса Intent с запуском альтернативного способа оплаты * * @description Комбинированный метод, который создает Intent, запускает * выбранный способ оплаты (TPay, СБП, SberPay) и ожидает завершения платежа. * Автоматически обрабатывает переходы в приложения банков и отслеживает статус. * * @param paymentData - Данные платежа * @param paymentMethod - Способ оплаты из перечисления EPaymentMethodType * @returns Promise с результатом платежа * * @example Оплата через Tinkoff Pay * ```typescript * import { EPaymentMethodType } from '@lmapp/react-native-cloudpayments'; * * const result = await PaymentService.getIntentWaitStatus( * paymentData, * EPaymentMethodType.TPAY * ); * * if (result.success) { * console.log('Оплата через TPay успешна'); * } * ``` * * @example Оплата через СБП * ```typescript * const sbpResult = await PaymentService.getIntentWaitStatus( * paymentData, * EPaymentMethodType.SBP * ); * * if (sbpResult.success) { * console.log('Оплата через СБП успешна'); * } * ``` * * @example Оплата через SberPay * ```typescript * const sberResult = await PaymentService.getIntentWaitStatus( * paymentData, * EPaymentMethodType.SBERPAY * ); * ``` * * @throws {Error} Если способ оплаты не поддерживается или произошла ошибка * @since 1.0.0 */ getIntentWaitStatus(paymentData: ICreateIntentPaymentData, paymentMethod: EPaymentMethodType): Promise; } //# sourceMappingURL=services.d.ts.map