UNPKG

react-native-plugpag-nitro

Version:

High-performance React Native library for PagSeguro PlugPag payment terminals with TypeScript-first hooks API, real-time events, and 10x faster performance using Nitro Modules

177 lines (160 loc) 4.96 kB
"use strict"; import { NitroModules } from 'react-native-nitro-modules'; import { useState, useEffect, useCallback } from 'react'; import { DeviceEventEmitter } from 'react-native'; import { PaymentType, InstallmentType, ErrorCode, PaymentEventCode } from "./PlugpagNitro.nitro.js"; // Re-export enums and types for easy access export { PaymentType, InstallmentType, ErrorCode, ActionType, PaymentEventCode } from "./PlugpagNitro.nitro.js"; // Export theme utilities export { ThemeUtils } from "./themes.js"; const PlugpagNitroModule = NitroModules.createHybridObject('PlugpagNitro'); // Payment options interface using enum types // Simple error handling wrapper function safeModuleCall(methodName, fn) { try { return fn(); } catch (error) { console.error(`[PlugpagNitro] Error in ${methodName}:`, error); throw error; } } /** * Get payment constants from the native module */ export function getConstants() { try { return PlugpagNitroModule.getConstants(); } catch (error) { console.error('[PlugpagNitro] Error getting constants:', error); throw error; } } /** * Get the terminal's serial number */ export function getTerminalSerialNumber() { try { return PlugpagNitroModule.getTerminalSerialNumber(); } catch (error) { console.error('[PlugpagNitro] Error getting terminal serial:', error); throw error; } } /** * Initialize and activate the pin pad terminal */ export async function initializeAndActivatePinPad(activationCode) { return safeModuleCall('initializeAndActivatePinPad', () => PlugpagNitroModule.initializeAndActivatePinPad(activationCode)); } /** * Process a payment transaction */ export async function doPayment(options) { const paymentOptions = { installmentType: options.installmentType ?? InstallmentType.NO_INSTALLMENT, installments: options.installments ?? 1, printReceipt: options.printReceipt ?? true, userReference: options.userReference ?? `payment-${Date.now()}`, ...options }; return safeModuleCall('doPayment', () => // Use native doPayment (with built-in events) PlugpagNitroModule.doPayment(paymentOptions.amount, paymentOptions.type, paymentOptions.installmentType, paymentOptions.installments, paymentOptions.printReceipt, paymentOptions.userReference)); } /** * Hook for listening to transaction payment events * Provides real-time updates during payment flow including: * - Card insertion/removal events * - Password entry progress * - Processing status updates * - Error notifications * - Transaction completion status */ export function useTransactionEvent() { const [paymentEvent, setPaymentEvent] = useState({ code: PaymentEventCode.WAITING_CARD, message: 'Aguardando cartão...' }); useEffect(() => { const subscription = DeviceEventEmitter.addListener('paymentEvent', event => { setPaymentEvent(event); }); return () => { subscription.remove(); }; }, []); const resetEvent = useCallback(() => { setPaymentEvent({ code: PaymentEventCode.WAITING_CARD, message: 'Aguardando cartão...' }); }, []); return { ...paymentEvent, resetEvent }; } /** * Enhanced payment flow manager * Combines payment execution with event monitoring */ /** * Refund a previous payment transaction */ export async function refundPayment(options) { return safeModuleCall('refundPayment', () => PlugpagNitroModule.refundPayment(options.transactionCode, options.transactionId, options.printReceipt ?? true)); } /** * Abort the current ongoing transaction */ export async function doAbort() { return safeModuleCall('doAbort', () => PlugpagNitroModule.doAbort()); } /** * Set custom style theme for PagBank SDK UI components * Allows customization of colors for modal dialogs, buttons, and text */ export async function setStyleTheme(styleData) { return safeModuleCall('setStyleTheme', () => PlugpagNitroModule.setStyleTheme(styleData)); } /** * Print a custom receipt from file path */ export async function print(filePath, textSize = 20) { return safeModuleCall('print', () => PlugpagNitroModule.print(filePath, textSize)); } /** * Reprint the last customer receipt */ export async function reprintCustomerReceipt() { return safeModuleCall('reprintCustomerReceipt', () => PlugpagNitroModule.reprintCustomerReceipt()); } /** * Simple transaction status checker * Helper function to check if a transaction result indicates success */ /** * Simple transaction error checker * Helper function to get a human-readable error message */ // Default export export default { // Core functions getConstants, getTerminalSerialNumber, initializeAndActivatePinPad, doPayment, refundPayment, doAbort, setStyleTheme, print, reprintCustomerReceipt, // Enhanced payment event listener useTransactionEvent, // Enums PaymentType, InstallmentType, ErrorCode, PaymentEventCode }; //# sourceMappingURL=index.js.map