Реагировать на закрытие собственного приложения после Razorpay sucessCallBack () - PullRequest
0 голосов
/ 08 апреля 2020

Вся оплата сделана правильно. Вот код: '' '

    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();   
    }

' ''

По-прежнему сталкиваются с той же проблемой

1 Ответ

0 голосов
/ 08 апреля 2020

Это возвращает обещание, попробуйте это так:

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");
        }}
      />
...