pay支付参数验签失败咋回事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pay支付参数验签失败咋回事相关的知识,希望对你有一定的参考价值。
参考技术A 1、使用签名检查工具校验签名算法是否有误2、查看参数是否对应正确(发现时间戳位数不对,后端返回的是毫秒,这里需要的是秒)
3、支付接口中的package对应的值为Sign=WXPay
4、支付接口的sign是包括appid的
5、支付接口,根据签名算法获取到sign后需要去除后两位通过这个解决了验证失败问题。 参考技术B 1、支付参数验签失败,一般是由于支付参数有误或者支付秘钥不正确导致的。
2、可以检查支付参数是否正确,并且确认支付秘钥是否正确。
3、如果以上两项都没有问题,可以尝试重新发起支付请求,或者联系支付平台客服进行处理。
Tomcat使用bouncycastle加密包进行SM2国密验签失败原因
问题描述:
最近做了一个项目需要和银行对接支付,用到了国密算法SM2。项目环境是SSM+Tomcat8+JDK8的,一开始测试的时候都是使用main方法调用测试的,全部通过测试了。最后变成接口的形式使用Tomcat跑的,使用postman调用接口一直提示验签失败,一开始以为是参数配置错了?后来找了一圈发现都没问题。代码肯定是没问题的,出的问题肯定是在环境上。于是就怀疑是不是tomcat或者jdk版本有问题,两个版本都换了之后,还是验签失败,于是没辙了。。。
原因分析与解决:
找了好久终于通过断点找到了原因!由于tomcat默认编码为GBK,会导致和银行那边的编码对应不上,造成加签过程中算法规则被改变了,只需要在getBytes()中指定编码为UTF-8即可解决,getBytes(“UTF-8”)。此前有试过搭建springboot去验签,结果是成功的,springboot自带的tomcat默认的编码就是UTF-8的了,所以使用tomcat的小伙伴,一定要注意这个坑。。。之前都没想到是编码问题,所以有问题还是要多断点。
以上是关于pay支付参数验签失败咋回事的主要内容,如果未能解决你的问题,请参考以下文章