【问题标题】:Google Pay - ERROR: Request Failed - Unexpected developer error, please try again laterGoogle Pay - 错误:请求失败 - 出现意外的开发者错误,请稍后重试
【发布时间】:2018-12-28 05:05:32
【问题描述】:

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

我尝试将“网关”更改为像谷歌文档显示的字符串,但到目前为止没有。

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

预期结果将是付款。

【问题讨论】:

    标签: javascript react-native-android google-pay payment-request-api


    【解决方案1】:

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

    1- 确保您的计算机上安装了 Android Debug Bridge (adb)。 确保在您的设备上启用了 USB 调试。有关详细信息,请参阅调试您的应用程序。

    2- 使用 USB 数据线将手机连接到计算机。

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

    adb -d logcat -s WalletMerchantError
    

    【讨论】:

    • TLDR:在日志中搜索 WalletMerchantError
    【解决方案2】:

    事实证明,我无法使用 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"));

    【讨论】:

    • 从哪里获得最新的 apiVersion 和 sdkVersion?
    【解决方案3】:

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

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

    这在 ENVIRONMENT_TEST 的情况下可以正常工作。

    【讨论】:

      【解决方案4】:

      使用supportedMethods 下的https://google.com/pay 通过付款请求API 使用Google Pay。

      查看这两个示例以获取更多参考:official docssample from the Chrome team

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多