@lmapp/react-native-cloudpayments
Version:
π ΠΠΎΡΠ½ΡΠΉ SDK Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ CloudPayments Π² React Native. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Apple Pay, Google Pay, Π‘ΠΠ, Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΊΠ°ΡΡ. ΠΠΎΠ»Π½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TypeScript. iOS 12+ ΠΈ Android 21+
181 lines (171 loc) β’ 7.75 kB
text/typescript
/**
* @fileoverview ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ CloudPayments SDK
* @description Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌ SDK
* @author Leonid Molchanov
* @since 1.0.0
*/
import type { EPaymentFormEventName, EPaymentFormErrorCode } from './enums';
// ============================================================================
// BASE INTERFACES
// ============================================================================
/**
* ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΡΠ²Π΅ΡΠΎΠ² CloudPayments API
*
* @description Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ SDK.
* Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
*
* @example ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°
* ```typescript
* import { PaymentService } from '@lmapp/react-native-cloudpayments';
*
* const result = await PaymentService.presentPaymentForm(paymentData);
* if (result.success) {
* console.log('ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½Π°:', result.message);
* } else {
* console.log('ΠΡΠΈΠ±ΠΊΠ°:', result.message);
* }
* ```
*
* @since 1.0.0
*/
export interface IBaseResponse {
/**
* Π€Π»Π°Π³ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
* @description true - ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, false - ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°
*/
success: boolean;
/**
* Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
* @description Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
* Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ
Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ - ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
*/
message: string;
}
/**
* Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΎΡΠ²Π΅Ρ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
*
* @description ΠΠ°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
* ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
*
* @example ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
* ```typescript
* const result = await PaymentService.presentPaymentForm(paymentData);
* if (result.success && result.transactionId) {
* console.log('Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π° Ρ ID:', result.transactionId);
* // Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ID Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ
* await saveTransactionId(result.transactionId);
* }
* ```
*
* @since 1.0.0
*/
export interface IBaseResponseWithTransaction extends IBaseResponse {
/**
* Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
* @description Π§ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ CloudPayments.
* ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ° ΠΈ Π² ΠΎΡΡΠ΅ΡΠ°Ρ
.
* ΠΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π΅ΡΠ»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π°.
*/
transactionId?: number;
}
/**
* ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΎΡΠΈΠ±ΠΎΠΊ CloudPayments SDK
*
* @description Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ
* ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ
* ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌ SDK.
*
* @example ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ
* ```typescript
* import { EPaymentFormErrorCode } from '@lmapp/react-native-cloudpayments';
*
* try {
* await PaymentService.presentPaymentForm(paymentData);
* } catch (error: IBaseError) {
* switch (error.code) {
* case EPaymentFormErrorCode.CONFIGURATION_ERROR:
* showAlert('ΠΡΠΈΠ±ΠΊΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ', 'ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ SDK');
* break;
* case EPaymentFormErrorCode.PAYMENT_FAILED:
* showAlert('ΠΠ»Π°ΡΠ΅ΠΆ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½', error.message);
* break;
* default:
* showAlert('ΠΡΠΈΠ±ΠΊΠ°', error.message);
* }
* }
* ```
*
* @since 1.0.0
*/
export interface IBaseError {
/**
* ΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ EPaymentFormErrorCode
* @description Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
* ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
*/
code: EPaymentFormErrorCode;
/**
* Π§Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
* @description ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
* ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
*/
message: string;
}
/**
* ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ
*
* @description Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ
* Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
* ΡΠΎΠ±ΡΡΠΈΠΉ SDK Π΄Π»Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΡΠ°ΠΏΠ°Ρ
ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
*
* @template T - Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ±ΡΡΠΈΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Record<string, any>)
*
* @example ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠΈΡ Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ
* ```typescript
* import { eventEmitter, EPaymentFormEventName } from '@lmapp/react-native-cloudpayments';
*
* // ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°
* eventEmitter.addListener(EPaymentFormEventName.PAYMENT_SUCCESS, (eventData) => {
* console.log('Π‘ΠΎΠ±ΡΡΠΈΠ΅:', eventData.eventName);
* console.log('ID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ:', eventData.data.transactionId);
* console.log('Π‘ΡΠΌΠΌΠ°:', eventData.data.amount);
* });
*
* // ΠΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
* eventEmitter.addListener(EPaymentFormEventName.PAYMENT_FAILED, (eventData) => {
* console.log('ΠΡΠΈΠ±ΠΊΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°:', eventData.data.message);
* console.log('ΠΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ:', eventData.data.errorCode);
* });
* ```
*
* @example Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
* ```typescript
* interface PaymentSuccessData {
* transactionId: number;
* amount: string;
* currency: string;
* }
*
* const handlePaymentSuccess = (eventData: IBaseEventData<PaymentSuccessData>) => {
* const { transactionId, amount, currency } = eventData.data;
* console.log(`ΠΠ»Π°ΡΠ΅ΠΆ Π½Π° ${amount} ${currency} ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½. ID: ${transactionId}`);
* };
* ```
*
* @since 1.0.0
*/
export interface IBaseEventData<T = Record<string, any>> {
/**
* ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ EPaymentFormEventName
* @description ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
* ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π² ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅.
*/
eventName: EPaymentFormEventName;
/**
* ΠΠ°Π½Π½ΡΠ΅, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ
* @description ΠΠ±ΡΠ΅ΠΊΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ.
* Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ
* PAYMENT_SUCCESS ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ transactionId ΠΈ ΡΡΠΌΠΌΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°.
*/
data: T;
}