Платежный токен становится неопределенным после процесса Apple Pay - PullRequest
0 голосов
/ 10 сентября 2018

Я занимаюсь разработкой Apple Pay с реактивной системой.Я все настроил и использовал компонент реагировать-родной-платеж т.Вот мой код:

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 голосов
/ 29 июля 2019

Упоминание спасло меня! Я не осознавал, что это нормально, если бы вы не использовали Stripe / Braintree! Токен был бы нулевым!

0 голосов
/ 13 сентября 2018

Этот компонент также работает с полосой и 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');, чтобы показать успешный платеж в конце. Без этого он засасывает цикл ожидания и, наконец, показывает «Платеж не завершен». Теперь у меня есть успешное сообщение с хорошим токеном!

Я должен отметить, что в случае, если вы не используете stripe или Braintree, вы не увидите никакого токена, и он всегда будет неопределенным. Это естественно, так что не волнуйтесь. Вам просто нужно передать paymentResponse.details в качестве JSON вашему банковскому провайдеру, и он будет работать. Потому что в этом случае будет важен идентификатор транзакции, который у вас есть.

После этого вы пройдете все этапы установки по этой ссылке . Вам также необходимо выполнить следующие шаги для сертификатов Apple Pay:

1- Сначала в своем идентификаторе приложения в учетной записи разработчика Apple необходимо включить Apple Pay с идентификатором продавца.

2- Затем вам нужно обратиться в свой банк за сертификатом продавца, который представляет собой файл, который выглядит следующим образом: XXXXX.certSigningRequest.txt

3- Затем выберите свой идентификатор приложения и перейдите в раздел Apple Pay, который был включен на первом этапе, и загрузите туда сертификат.

Готово! Ваш Apple Pay будет работать.

...