【问题标题】:React Native app closing after Razorpay sucessCallBack()Razorpay sucessCallBack() 后 React Native 应用程序关闭
【发布时间】:2020-07-20 19:13:59
【问题描述】:

整个付款都正确完成。这是代码: '''

    const that = this;
    function makePayment(){
                   var options = {
                    description: 'Bank payment',
                    currency: 'INR',
                    key: 'xxx',
                    amount: that.state.amount_razorpay,
                    name: 'xyz',
                    order_id: that.state.id,
                    prefill: {
                    email: 'xxx@gmail.con',
                    contact: '123',
                    name: 'XYZ'
                        },
                    theme: {color: '#53a20e'}
                    }          
                RazorpayCheckout.open(options,razr_successCallback,razr_errorCallback)                 
    }

    function razr_successCallback(data){
        console.log('success',data.razorpay_payment_id);
        that.setState({razr_Status:"SUCCESS"});
        that.setState({razr_txnId:data.razorpay_payment_id});
       // that.props.navigation.navigate('Secured');


    }

    function razr_errorCallback(data){
        console.log('failure',data);

    }

'''

razr_successCallback() 的控制台给出了正确的结果{"razorpay_payment_id": "pay_Eby2FPTakKuSrz"},但应用程序立即退出,没有导航回支付页面。我什至尝试过that.props.navigation.navigate('Secured'),但付款页面仍然没有重定向。有什么问题?

编辑 1:

'''

    RazorpayCheckout.open(options)
                    .then(async data => 
                        await razr_successCallback(data);
                      })
                    .catch(error => {
                      console.log("payment error", error);

                    });


     async function razr_successCallback(data){
        console.log(data);
         that.props.navigation.goBack();   
    }

'''

仍然面临同样的问题

【问题讨论】:

    标签: react-native payment-gateway razorpay


    【解决方案1】:

    这会返回一个承诺,试试这个方法:

    RazorpayCheckout.open(options)
          .then(data => {
                  // handle success
                 razr_successCallback(data);
                })
          .catch(error => {
            console.log("payment error", error);
            
          });
    在我的情况下:

    const razorpayOpenModal = (razorpay_id, currency) => {
        let options = {
          description: "Credits towards consultation",
          image: images.logo,
          currency: currency,
          order_id: razorpay_id,
          key: RAZOPAY_KEY,
          amount: totalAmount * 100,
          external: {
            wallets: ["paytm"]
          },
          name: "MyApp.jo",
          prefill: {
            email: userFromCtxt && userFromCtxt.email,
            contact: userFromCtxt && userFromCtxt.phone,
            name: userFromCtxt
              ? userFromCtxt.first_name + " " + userFromCtxt.last_name
              : ""
          },
          theme: { color: color.primaryHeaderColor }
        };
        RazorpayCheckout.open(options)
          .then(async data => {
            setPaymentId(data.razorpay_payment_id);
            await setShowModel(true);
          })
          .catch(error => {
            console.log("payment error", error)
          });
      };

    然后在模型上:

     <MessageModal
            button={true}
            primaryMessage={primaryText}
            secondaryMessage={secondaryText}
            visible={modalVisible}
            transactionResp={transactionResp}
            closeModal={async () => {
              setModalVisible(false);
              await props.navigation.navigate("Home");
            }}
            buttonText={"Continue"}
            image={transactionResp ? images.success : null}
            onPressButton={async () => {
              setModalVisible(false);
              await props.navigation.navigate("Home");
            }}
          />

    【讨论】:

    • 还是同样的问题
    • 我编辑了代码,请粘贴并尝试,与我一样,它对我有用。使您的 razr_successCallback 函数异步。
    • 还是一样。没有错误,甚至获取付款ID。应用程序只是最小化而不是完全关闭!
    • 在我成功付款的情况下,我正在生成一个订单 ID 并显示一个弹出窗口,点击弹出窗口上的继续按钮,它导航到主屏幕..
    • 我编辑了我的答案,因为在 cmets 中无法放置更长的文本
    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2016-04-20
    • 2018-06-20
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多