Google Pay按钮初始化报错”Invalid arguments provided”

Good“自帅 阅读 115

在React项目里集成Google Pay时,按照官方文档配置了支付参数,但初始化PaymentsClient时总是报错”Invalid arguments provided to the PaymentsClient constructor”。

已经检查过API版本和allowedMethods,代码是这样的:


const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0,
  allowedPaymentMethods: [{
    type: 'CARD',
    parameters: {
      allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
      allowedCardNetworks: ['AMEX', 'VISA']
    },
    tokenizationSpecification: {
      type: 'PAYMENT_GATEWAY',
      parameters: {
        gateway: 'example',
        gatewayMerchantId: '12345'
      }
    }
  }]
};

测试环境用的Web payments SDK 3.0.0,控制台还提示”merchantInfo.merchantName is required”,但我的配置里明明有写:


const paymentsClient = new google.payments.api.PaymentsClient({
  merchantId: '12345678901234567890',
  merchantName: 'Test Store'
});

试过清除缓存、更换SDK版本号都不行,到底是哪里配置错了吗?

我来解答 赞 13 收藏
二维码
手机扫码查看
1 条解答
司空博文
问题出在你传给 PaymentsClient 的参数格式上。官方文档里说得很清楚,environmentmerchantInfo 是必须的字段,而你的代码里少了 environment

另外,虽然你写了 merchantName,但它的位置不对,应该放在 merchantInfo 里面。

拿去改改:

const paymentsClient = new google.payments.api.PaymentsClient({
environment: 'TEST', // 这里必须加
merchantInfo: {
merchantId: '12345678901234567890',
merchantName: 'Test Store' // 放在这里才对
}
});

// 然后用这个客户端初始化
paymentsClient.isReadyToPay(baseRequest)
.then(function(response) {
if (response.result) {
console.log('Google Pay 可用');
} else {
console.log('Google Pay 不可用');
}
})
.catch(function(err) {
console.error('初始化出错:', err);
});


测试环境记得保持为 'TEST',上线时再改成 'PRODUCTION'。顺便检查下 gatewayMerchantId 是否正确,经常有小伙伴配错了还死活找不到原因。
点赞 4
2026-01-30 13:01