Google Pay-错误:请求失败-意外的开发人员错误,请稍后重试

时间:2018-12-28 05:05:33

标签: javascript react-native-android google-pay

当我尝试在真实设备上使用Google Pay付款(在TEST环境下)时,出现标题错误。

我尝试将“ gateway”更改为类似于google docs所示的字符串,但到目前为止没有任何操作。

const DETAILS = {
id: 'COMPANY',
displayItems: [
  {
    label: 'Phone Bill',
    amount: { currency: 'USD', value: compTotal }
  }
],
total: {
  label: 'COMPANY',
  amount: { currency: 'USD', value: compTotal }
}
};

// GOOGLE PAY
const METHOD_DATA = [{
  supportedMethods: ['android-pay'],
  data: {
    supportedNetworks: ['visa', 'mastercard', 'amex'],
    currencyCode: 'USD',
    environment: 'TEST', // defaults to production
    paymentMethodTokenizationParameters: {
      tokenizationType: 'GATEWAY_TOKEN',
      parameters: {
        gateway: 'braintree',
        'braintree:tokenizationKey': 'sandbox_XXXXXXXXXXX'
      }
    }
  }
}];

const paymentRequest = new PaymentRequest(METHOD_DATA, DETAILS);

paymentRequest.show()
.then(paymentResponse => {
  const { getPaymentToken } = paymentResponse.details;

  return getPaymentToken()
    .then(paymentToken => {
      const { ephemeralPublicKey, encryptedMessage, tag } = paymentToken.details;

      return fetch('...', {
        method: 'POST',
        body: {
          ephemeralPublicKey,
          encryptedMessage,
          tag
        }
      })
      .then(res => res.json())
      .then(paymentResponse.complete('success'), handleConfirm())
      .catch(paymentResponse.complete('fail'), alert(1));
    });
});
};

预期结果将是付款。

4 个答案:

答案 0 :(得分:4)

要了解有关此错误的更多信息,请按照以下步骤操作:

1-确保您的计算机上安装了Android调试桥(adb)。 确保设备上已启用USB调试。有关更多信息,请参见调试应用程序。

2-使用USB电缆将手机连接到计算机。

3-在计算机的终端或命令提示符中运行以下命令:

adb -d logcat -s WalletMerchantError

答案 1 :(得分:1)

结果证明我无法使用React-Native做到这一点,因为“ React Native Payments”不完全支持Google Pay,而Google Pay却不完全支持Braintree,也完全不支持Payeezy。

我不得不求助于本机代码(Java),然后将React-Native链接到该本机模块。这很简单。

我在Github上使用了this演示来指导我。我当时使用Braintree作为付款处理程序,但看起来我将切换到Payeezy。

我遇到了标题错误,因为就像我说的那样,'React-Native-Payments'并不完全支持Google Pay,而后者却不支持Braintree,并且在错误提示时,因为我只是给出了这个提示信息-

parameters: {
  gateway: 'braintree',
  'braintree:tokenizationKey': 'sandbox_TOKEN-HERE'
}

但是看起来我需要使用它(在Java模块中)-

.put("gateway", "braintree")
.put("braintree:apiVersion", "v1")
.put("braintree:sdkVersion", "BETA")
.put("braintree:clientKey", "sandbox_TOKEN-HERE")
.put("braintree:merchantId", "TOKEN-HERE"));

答案 2 :(得分:0)

使用https://google.com/pay下的supportedMethods通过Payment Request API来利用Google Pay。

检查以下两个示例以进一步参考:official docssample from the Chrome team

答案 3 :(得分:0)

由于价格对象的类型不匹配,我出现了一些错误。 我将float的值放在totalPrice中。 更新后

data class TransactionInfo(
        @SerializedName("totalPrice") val price: String,
        @SerializedName("totalPriceStatus") val priceStatus: String,
        @SerializedName("currencyCode") val currency: String
)

这在ENVIRONMENT_TEST情况下很好用。