Estoy integrando la API de pago, estoy usando las funciones de la nube de firebase como backend y react-native en la interfaz, así que ahora tengo el siguiente código:
En el lado nativo de reacción:
const PaymentScreen = () => { setLoading(true); const onPay = () => { const onPaymentCall = firebase.functions().httpsCallable('onPayment'); onPaymentCall(productsData) .then(res => { setLoading(false); if (res?.data?.statusCode === 200) { const paymentReceivedData = { transactionId: res?.data?.transactionId, paymentDate: new Date().now(), totalPrice: res?.data?.totalPrice } navigator.navigate('ReceiptScreen', { paymentReceivedData }); } }) } return ( <TouchableOpacity onPress={onPay}>PAY</TouchableOpacity> ) }función firebase para manejar el pago:
export const onPayment = functions .runWith({ timeoutSeconds: 300 }) .https.onCall(async (data: any, context: any) => { if (!context.auth) { throw new functions.https.HttpsError( 'failed-precondition', 'The function must be called while authenticated.' ); } try { const paymentResult = await paymentThroughApi(data); await admin.firestore().collection('wallet').add({...paymentResult}); const response = { statusCode: 200, totalPrice: paymentResult.totalPrice, transactionId: paymentResult.transactionId, } return response; } catch (error) { const response = { statusCode: 400, message: 'Payment unsuccessful', transactionId: null, } return response; } Entonces, la pregunta es, ¿cómo puedo manejar long-time response / timeout error / network-loss etc. en el lado nativo de reacción, por ejemplo, cómo debería hacerlo más robusto? especialmente el manejo de respuestas de larga duración, errores de tiempo de espera, fallas de pago, etc.? ¿Qué paquetes debo usar? como NetInfo para verificar la conectividad a Internet, pero ¿cuál es la mejor manera de hacer que el flujo de pago sea sólido?
Entonces, ¿alguien puede guiarme o sugerir fragmentos de código para agregar a mi código actual?
¡Gracias!