UNPKG

@lmapp/react-native-cloudpayments

Version:

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

108 lines (100 loc) β€’ 3.74 kB
/** * @fileoverview Π₯ΡƒΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ CloudPayments * @description Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ…ΡƒΠΊ для запуска ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ CloudPayments * @author Leonid Molchanov * @since 1.0.0 */ import { useCallback } from 'react'; import { PaymentService } from '../../services'; import type { IPaymentData, IPaymentFormResponse } from '../../types'; import type { // IUsePaymentFormOptions, TUsePaymentFormReturn, } from './types'; // ============================================================================ // HOOK IMPLEMENTATION // ============================================================================ /** * Π₯ΡƒΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ CloudPayments * * @description ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для запуска стандартной ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ CloudPayments. * Π­Ρ‚ΠΎΡ‚ Ρ…ΡƒΠΊ инкапсулируСт Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ * Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях ΠΎΠΏΠ»Π°Ρ‚Ρ‹. * * @param publicId - ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΌΠ΅Ρ€Ρ‡Π°Π½Ρ‚Π° CloudPayments * @param options - ΠžΠΏΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ…ΡƒΠΊΠ° (ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ) * @returns Ѐункция для запуска ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ * * @example Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ использованиС * ```typescript * const presentPaymentForm = usePaymentForm('pk_test_1234567890abcdef'); * * const handlePayment = async () => { * try { * const result = await presentPaymentForm({ * amount: '1000.00', * currency: 'RUB', * description: 'ΠŸΠΎΠΊΡƒΠΏΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Π°', * email: 'user@example.com' * }); * * if (result.success) { * console.log('ΠŸΠ»Π°Ρ‚Π΅ΠΆ ΡƒΡΠΏΠ΅ΡˆΠ΅Π½:', result.transactionId); * } else { * console.log('ΠŸΠ»Π°Ρ‚Π΅ΠΆ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½:', result.message); * } * } catch (error) { * console.error('Ошибка ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°:', error); * } * }; * ``` * * @example ИспользованиС с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ * ```typescript * const presentPaymentForm = usePaymentForm('pk_test_1234567890abcdef'); * * const result = await presentPaymentForm({ * amount: '2500.00', * currency: 'RUB', * description: 'Подписка Premium', * email: 'user@example.com', * requireEmail: true, * applePayMerchantId: 'merchant.com.myapp.payments', * showResultScreen: true * }); * ``` * * @since 1.0.0 */ export const usePaymentForm = ( publicId: string // options: IUsePaymentFormOptions = {} ): TUsePaymentFormReturn => { /** * Ѐункция запуска ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ */ const presentPaymentForm = useCallback( async (paymentData: IPaymentData): Promise<IPaymentFormResponse> => { try { // ЗапускаСм ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ с ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ const result: IPaymentFormResponse = await PaymentService.presentPaymentForm({ ...paymentData, publicId, }); return result; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'НСизвСстная ошибка'; // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ошибкой return { success: false, message: errorMessage, transactionId: undefined, }; } }, [publicId] ); return presentPaymentForm; };