sign check fail:check Sign and Data Fail报错攻略

错误码:

com.alipay.api.AlipayApiException: sign check fail: check Sign and ​Fail

           报错原因:验签失败 ,未使用正确的支付宝公钥    

在新版接口的调用过程中,常常出现此报错。许多人认为自己的公私钥都是匹配的,支付已经成功或者说接口已经调用成功,出现这个报错百思不得其解。要知道在调用接口过程中,商户有一对RSA密钥,支付宝同样有一对RSA密钥,在调用过程中商户用自己的私钥签名后请求到支付宝服务器,支付宝服务器使用商户的公钥(商户上传到开放平台的公钥)验证是否是商户发送的请求。此时,接口调用成功,支付宝向商户发送异步通知或者同步通知。支付宝发送异步通知或者同步通知时,支付宝使用了自己的私钥签名,所以商户需要使用支付宝的公钥验签。错误就出在商户验签时没有使用正确的支付宝公钥。             

下面我用alipay.trade.query(统一收单线下交易查询接口)为例截图说明。               sign check fail:check Sign and Data Fail报错攻略

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");

       这里的your private_key是指商户的私钥,alipay_public_key指支付宝公钥。(若alipay_public_key值不正确就会报此错 误)。


报错解决:

 确认使用的支付宝公钥是否正确,不同的环境使用的支付宝公钥不同,如沙箱环境、线上openapi网关和mapi网关对应的支付宝公钥是不一样的。更换正确的支付宝公钥后即可成功。


查询支付宝公钥: 

a)沙箱环境                                 

      1 登录开放平台(https://openhome.alipay.com);                  

      2 进入开发者中心,点击沙箱应用,在配置应用中,查看支付宝公钥即可。 

b)真实环境               

      1 登录开放平台(https://openhome.alipay.com);                                

      2 进入开发者中心,在我的应用下,选择使用的应用,在接口加签方式中,选择对应的支付宝公钥即可

上一篇:解决gdb报错:Failed to import the site module,No module named '_sysconfigdata_m'


下一篇:linux报错“Failed to start LSB: Bring up/down networking.”