Tips-Stripe 3D安全于本机

时间:2019-03-15 07:35:54

标签: android ios react-native stripe-payments


我想在我的本机应用程序中集成Stripe 3d secure。使用此lib:https://github.com/tipsi/tipsi-stripe,并且付款简单,效果很好。但是使用3D时,我在iOS和Android上都有一些问题:
iOS:createCardSource:true(第7行使应用崩溃)。(已解决)
iOS:在重定向到安全页面之前被卡住了
Android:我怎么知道用户是在远程页面上付款还是拒绝付款?(第27行的secure3dSourceResponse对象中没有任何数据)

import stripe from "tipsi-stripe";  
paymentRequest = async (mutation, deal) => {
  let paymentRequest;
  try {
    paymentRequest = await stripe.paymentRequestWithCardForm({
      ...options,
      createCardSource: true
    });
  //iOS and Android gets back different objects.
    const threeDSecure = Platform.OS === "android"
      ? paymentRequest.card.three_d_secure
      : paymentRequest.details.three_d_secure;
    if (
      threeDSecure === "recommended"
      || threeDSecure === "required"
    ) {
      let prefix = Platform.OS === "android"
      ? `appName://appName/`
      : `appName://`;
      let secure3dSourceResponse = null;
      try {
        const { dealFeeUSD } = this.state;
        // On iOS the process stucked here, without any error message
        secure3dSourceResponse = await stripe.createSourceWithParams({
          type: "threeDSecure",
          amount: dealFeeUSD || 3000,
          currency: "USD",
          flow: "redirect",
          returnURL: prefix,
          card: paymentRequest.sourceId
        });
        // On android I have no any data in secure3dSourceResponse after Stripe returns from their page.
      } catch (error) {
        console.log('secure3dSourceResponse', secure3dSourceResponse)
      }
    } else {
      if (paymentRequest && paymentRequest.tokenId) {
        this.handlePayDeal(mutation, deal, paymentRequest.tokenId);
      }
    }
  } catch (error) {
    console.log("paymentRequest: " + JSON.stringify(error));
  }
};

0 个答案:

没有答案