Google Pay对接Sberbank报错10:签名验证失败问题咨询
Google Pay对接Sberbank签名验证失败可能原因
令牌化配置不匹配
- 首先排查
tokenizationSpecification参数配置,这是最高发的问题点:如果Sberbank要求使用PAYMENT_GATEWAY类型的令牌化配置,必须确认gateway参数取值和Sberbank官方指定的取值完全一致,gatewayMerchantId和你在Sberbank后台登记的商户ID完全匹配,不能有大小写、空格、特殊字符的偏差。 - 确认你在Google Pay商户后台配置的Sberbank提供的公钥正确,公钥配置错误会导致Google Pay加密生成的签名无法被Sberbank解密校验。
交易参数不一致
- 检查你在Google Pay请求中传入的
totalPrice、currencyCode、countryCode参数,和后续你传给Sberbank的对应参数是否完全一致。比如你代码中totalPrice是字符串类型的'1',如果后续处理时将其转为数字后再转回字符串变成'1.0'这类格式,就会导致签名不匹配。 - 确认交易参数的顺序没有被调整,部分网关校验签名时会对参数顺序做严格要求。
签名数据处理错误
- 你拿到Google Pay返回的
paymentData后,有没有对签名内容做多余处理:比如自动去除转义字符、对JSON内容做格式化添加空格换行、或者提取字段错误。需要确认传给Sberbank的签名字段符合Sberbank的要求,完整传输对应内容,不要漏传或者多传字段。 - 确认传给Sberbank的请求头
Content-Type设置为application/json,如果使用表单格式传输会导致JSON内容被转义,引发签名失效。
环境配置不匹配
- 确认Google Pay和Sberbank使用的环境一致:Google Pay测试环境返回的签名无法通过生产环境Sberbank网关校验,反之同理。
- 确认你在Google Pay后台登记的域名/包名,和实际发起请求的域名/包名完全一致,否则返回的签名本身就是无效的。
内容的提问来源于stack exchange,提问作者David Ostworld
相关产品推荐
相关产品推荐

