Apple Pay流程完成后,付款令牌未定义

时间:2018-09-10 16:12:21

标签: react-native applepay

我正在使用本机开发Apple Pay。我配置了所有内容,并使用了react-native-paymen t组件。这是我的代码:

onPressApplePay=()=>{
    console.log("1- start Apple Pay");
    if (!DataManager.getInstance().isConnected()) {
       this.myAlert(I18n.t("NoInternetConnectionState"));
       return;
    }

    const DETAILS = {
    id: 'basic-example',

     displayItems: [
       {
         label: 'items',
         amount: { currency: 'EUR', value: '2' },
       },
     ],
     total: {
       label: 'MyApp',
       amount: { currency: 'EUR', value: '2' },
     },

      };

      const METHOD_DATA = [{
         supportedMethods: ['apple-pay'],
         data: {
           merchantIdentifier: 'merchant.com.myapp',
           supportedNetworks: [ 'mastercard', 'visa'],
           countryCode: 'IT',
           currencyCode: 'EUR'
         }
       }];
     const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS);

     console.log("2- paymentRequest.show", paymentRequest);
     paymentRequest.show()
     .then((paymentResponse) => {
       const { paymentToken } = paymentResponse.details; // On Android, you need to invoke the `getPaymentToken` method to receive the `paymentToken`.

       paymentRequest.canMakePayments()
  .then(canMakePayments => {
    console.log("canMakePayments", canMakePayments);
      console.log("paymentToken", paymentToken);

    // Show fallback payment method
  });

     })
     .catch((err) => {
       console.log("4- err", err);
       console.log("5- paymentRequest", err);
       //alert("The apple pay cancel");
       // The API threw an error or the user closed the UI
     });

问题在于,当我尝试执行Apple Pay时,它说“付款未完成”,并且令牌未定义。请让我知道问题可能在哪里隐藏。 我应该提到的是,我在使用真实卡和sandBox的真实设备上尝试了此代码,但在所有情况下均失败了。提前致谢。

2 个答案:

答案 0 :(得分:1)

提提救了我!我没有意识到如果您不使用Stripe / Braintree,令牌将为零是正常的!

答案 1 :(得分:0)

该组件还可以与Stripe和Braintree一起使用。问题是我需要添加一个网关和一个公钥,在我的情况下,它是从条带提供的。

const METHOD_DATA = [{
         supportedMethods: ['apple-pay'],
         data: {
           merchantIdentifier: 'merchant.yyyy.xxxx',
           supportedNetworks: [ 'mastercard'],
           countryCode: 'IT',
           currencyCode: 'EUR',
           paymentMethodTokenizationParameters: {
            parameters: {
             gateway: 'stripe',
             'stripe:publishableKey': 'pk_test_XXXXXXX',
             'stripe:version': '5.0.0' // Only required on Android
          }
        }
      }
   }];

然后我安装了以下附件:

yarn add react-native-payments-addon-stripe
yarn add react-native-payments-cli
yarn react-native-payments-cli -- link stripe

(您还需要Carthage update才能使它们工作)

然后我在stripe.com上创建了一个帐户,并使用该帐户的发布密钥,终于可以使用了! 另外,我还添加了paymentResponse.complete('success');,以显示最后的成功付款。没有它,它将陷入等待的循环,最终显示“付款未完成”。 现在,我收到了一条成功的消息,带有一个很好的令牌!

我应该提到的是,在不使用条纹或Braintree的情况下,您将看不到任何标记,并且标记始终是未定义的。这是自然的,所以不用担心。您只需要将paymentResponse.details作为JSON传递给您的银行提供商即可使用。因为在这种情况下,您拥有的transactionid将很重要。

此后,您将按照以下从link安装的步骤进行操作。您还需要对Apple Pay证书执行以下步骤:

1-首先,应在Apple开发者帐户中的应用ID上启用带有商户ID的Apple Pay。

2-然后,您需要向银行索取关于您的商家的证书,该证书的格式如下:     XXXXX.certSigningRequest.txt

3-然后选择您的应用程序ID,然后转到在第一步中启用的Apple Pay部分,然后将证书上传到该部分。

完成!您的Apple Pay可以使用。