Google Pay按钮点击后onPaymentAuthorized没响应怎么办
大家好,我在React项目里集成Google Pay时遇到个怪问题。按照官方文档写好了PaymentDataRequest配置,但点击支付按钮后onPaymentAuthorized回调完全没触发,控制台也没报错。
代码是这样写的:
class Checkout extends React.Component {
handlePayment = (paymentData) => {
console.log('支付授权:', paymentData); // 这里从来没执行
return { transactionState: 'SUCCESS' };
};
render() {
const paymentRequest = {
apiVersion: 2,
apiVersionMinor: 0,
merchantInfo: { merchantId: '12345678' },
transactionInfo: {
totalPriceStatus: 'FINAL',
totalPriceString: '100.00',
currencyCode: 'USD'
},
allowedPaymentMethods: [{
type: 'CARD'
}]
};
return (
<GooglePayButton
environment="TEST"
paymentRequest={paymentRequest}
onPaymentAuthorized={this.handlePayment}
/>
);
}
}
我已经确认环境是TEST模式,merchantId也正确。奇怪的是支付弹窗能正常显示,但选完卡片点击确认后就回到原页面,连调试日志都没输出。是不是哪里配置漏了?有人遇到过类似情况吗?
先检查一下allowedPaymentMethods部分,必须包含具体的卡片网络和认证方式,Google Pay对这部分要求很严格。改成这样试试:
另外transactionInfo里的totalPriceString改成totalPrice,字段名写错了。还有merchantInfo部分建议加上merchantName,虽然不是必填,但有些情况下会需要。
改完后整体结构大概是这样:
这些改完基本就能正常触发onPaymentAuthorized了。记得把gateway和merchant相关的信息替换成你实际使用的支付网关参数。我之前就是被这些细节坑了好久,文档里其实都写了,但很容易漏看。