UNPKG

@lmapp/react-native-cloudpayments

Version:

πŸš€ ΠœΠΎΡ‰Π½Ρ‹ΠΉ SDK для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ CloudPayments Π² React Native. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Apple Pay, Google Pay, Π‘Π‘ΠŸ, банковских ΠΊΠ°Ρ€Ρ‚. Полная типизация TypeScript. iOS 12+ ΠΈ Android 21+

250 lines (235 loc) β€’ 10.2 kB
/** * @fileoverview React Native TurboModule спСцификация для CloudPayments SDK * @description Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ интСрфСйс TurboModule для Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ моста ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ * @author Leonid Molchanov * @since 1.0.0 */ import type { TurboModule } from 'react-native'; import type { EPaymentMethodType } from './enums'; import type { IIntentResponse, IIntentApiPayResponse, IBankInfo, IPaymentFormResponse, } from './responses'; import type { TIntentWaitStatus } from './unionTypes'; // ============================================================================ // TURBO MODULE INTERFACE // ============================================================================ /** * БпСцификация TurboModule для CloudPayments SDK * * @description Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ React Native TurboModule, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ всС Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ * CloudPayments SDK. Π­Ρ‚ΠΎΡ‚ интСрфСйс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ типобСзопасного * моста ΠΌΠ΅ΠΆΠ΄Ρƒ JavaScript ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (iOS/Android). * * @remarks * Π­Ρ‚ΠΎΡ‚ интСрфСйс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования SDK ΠΈ автоматичСской * Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ * высокоуровнСвыС сСрвисы PaymentService ΠΈ CardService вмСсто прямого обращСния * ΠΊ TurboModule. * * @example ИспользованиС Ρ‡Π΅Ρ€Π΅Π· PaymentService (рСкомСндуСтся) * ```typescript * import { PaymentService } from '@lmapp/react-native-cloudpayments'; * * // ВмСсто прямого Π²Ρ‹Π·ΠΎΠ²Π° TurboModule * // const result = await NativeCloudpaymentsSdk.presentPaymentForm(paymentData); * * // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ высокоуровнСвый API * const result = await PaymentService.presentPaymentForm(paymentData); * ``` * * @example ΠŸΡ€ΡΠΌΠΎΠ΅ использованиС TurboModule (Π½Π΅ рСкомСндуСтся) * ```typescript * import { NativeModules } from 'react-native'; * import type { ICloudpaymentsSdkSpec } from '@lmapp/react-native-cloudpayments'; * * const CloudpaymentsModule = NativeModules.CloudpaymentsSdk as ICloudpaymentsSdkSpec; * * // ΠŸΡ€ΡΠΌΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° * const intent = await CloudpaymentsModule.createIntent(paymentData); * ``` * * @see {@link https://reactnative.dev/docs/the-new-architecture/pillars-turbomodules} TurboModules докумСнтация * @internal * @since 1.0.0 */ export interface ICloudpaymentsSdkSpec extends TurboModule { /** * Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠ³ΠΎ намСрСния (Intent) * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания Intent Π² систСмС CloudPayments. * ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ созданном Intent. * * @param paymentData - ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° (Π±ΡƒΠ΄Π΅Ρ‚ сСриализован ΠΈΠ· ICreateIntentPaymentData) * @returns Promise с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ созданном Intent * * @internal * @platform ios, android */ createIntent(paymentData: Object): Promise<IIntentResponse>; /** * ΠžΠΏΠ»Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· Intent с использованиСм ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для выполнСния ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Intent * с использованиСм Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚Ρ‹ (ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). * * @param paymentData - ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° * @param cardCryptogram - Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ * @param intentId - Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Intent * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ API ΠΎΠΏΠ»Π°Ρ‚Ρ‹ * * @internal * @platform ios, android */ createIntentApiPay( paymentData: Object, cardCryptogram: string, intentId: string ): Promise<IIntentApiPayResponse>; /** * ОТиданиС статуса Intent для Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для запуска Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹ * (TPay, Π‘Π‘ΠŸ, SberPay) ΠΈ оТидания Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. * * @param paymentData - ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° * @param type - Π’ΠΈΠΏ способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹ * @returns Promise с HTTP статус ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° * * @internal * @platform ios, android */ getIntentWaitStatus( paymentData: Object, type: EPaymentMethodType ): Promise<TIntentWaitStatus>; /** * Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ CloudPayments SDK * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SDK с Public ID ΠΌΠ΅Ρ€Ρ‡Π°Π½Ρ‚Π°. * Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ ΠΏΠ΅Ρ€Π΅Π΄ использованиСм Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². * * @param publicId - ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ΅Ρ€Ρ‡Π°Π½Ρ‚Π° * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ * * @internal * @platform ios, android */ initialize(publicId: string): Promise<boolean>; /** * ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для получСния Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° * CloudPayments для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚Ρ‹. * * @returns Promise со строкой ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PEM * * @internal * @platform ios, android */ getPublicKey(): Promise<string>; /** * Валидация Π½ΠΎΠΌΠ΅Ρ€Π° банковской ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ * с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π›ΡƒΠ½Π°. * * @param cardNumber - НомСр банковской ΠΊΠ°Ρ€Ρ‚Ρ‹ * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ * * @internal * @platform ios, android */ isCardNumberValid(cardNumber: string): Promise<boolean>; /** * Валидация срока дСйствия ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности срока дСйствия ΠΊΠ°Ρ€Ρ‚Ρ‹. * * @param expDate - Π‘Ρ€ΠΎΠΊ дСйствия Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ MM/YY ΠΈΠ»ΠΈ MM/YYYY * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ * * @internal * @platform ios, android */ isExpDateValid(expDate: string): Promise<boolean>; /** * Валидация CVV ΠΊΠΎΠ΄Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности CVV ΠΊΠΎΠ΄Π°. * * @param cvv - CVV ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚Ρ‹ * @param isCvvRequired - ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ CVV для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠ°Ρ€Ρ‚Ρ‹ * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ * * @internal * @platform ios, android */ isValidCvv(cvv: string, isCvvRequired: boolean): Promise<boolean>; /** * ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для опрСдСлСния ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ систСмы * (Visa, MasterCard, МИР ΠΈ Ρ‚.Π΄.) ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΊΠ°Ρ€Ρ‚Ρ‹. * * @param cardNumber - НомСр банковской ΠΊΠ°Ρ€Ρ‚Ρ‹ * @returns Promise с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ систСмы * * @internal * @platform ios, android */ cardTypeFromCardNumber(cardNumber: string): Promise<string>; /** * Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для создания Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ * ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚Ρ‹ с использованиСм ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° CloudPayments. * * @param cardNumber - НомСр ΠΊΠ°Ρ€Ρ‚Ρ‹ * @param expDate - Π‘Ρ€ΠΎΠΊ дСйствия ΠΊΠ°Ρ€Ρ‚Ρ‹ * @param cvv - CVV ΠΊΠΎΠ΄ ΠΊΠ°Ρ€Ρ‚Ρ‹ * @param merchantPublicID - Public ID ΠΌΠ΅Ρ€Ρ‡Π°Π½Ρ‚Π° * @param publicKey - ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ * @param keyVersion - ВСрсия ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° * @returns Promise с ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Ρ‹ * * @internal * @platform ios, android */ makeCardCryptogramPacket( cardNumber: string, expDate: string, cvv: string, merchantPublicID: string, publicKey: string, keyVersion: number ): Promise<string>; /** * ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π±Π°Π½ΠΊΠ΅-эмитСнтС * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для опрСдСлСния Π±Π°Π½ΠΊΠ°-эмитСнта ΠΊΠ°Ρ€Ρ‚Ρ‹ * ΠΏΠΎ BIN (ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 6-8 Ρ†ΠΈΡ„Ρ€ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚Ρ‹). * * @param cardNumber - НомСр банковской ΠΊΠ°Ρ€Ρ‚Ρ‹ * @returns Promise с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π±Π°Π½ΠΊΠ΅ * * @internal * @platform ios, android */ getBankInfo(cardNumber: string): Promise<IBankInfo>; /** * ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ стандартной ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ * * @description Нативный ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΠΎΠΊΠ°Π·Π° встроСнной ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ * CloudPayments с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ всСх способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹. * * @param paymentData - ΠžΠ±ΡŠΠ΅ΠΊΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ * @returns Promise с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° * * @internal * @platform ios, android */ presentPaymentForm(paymentData: Object): Promise<IPaymentFormResponse>; }