支付宝回调接口验签失败
按照支付寶的文檔,調(diào)用rsaCheckV1的方法,他已經(jīng)把方法封裝的很透徹了,只需要將取到的參數(shù)Map(request.getParameterMap())集合放入即可。
但是驗(yàn)簽一直不通過,查了很多資料,說公鑰不對(duì),應(yīng)該使用支付寶公鑰,不是應(yīng)用公鑰,修改之后,還是驗(yàn)簽不通過。
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8"); //調(diào)用SDK驗(yàn)證簽名
問題出在支付寶有兩個(gè)重載的方法。如果使用的是RSA加密的話,就調(diào)用下面這個(gè)方法。
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8");
如果使用的是RSA2加密的話,就調(diào)用下面這個(gè)方法。
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8",AlipayConfig.SIGN_TYPE); //調(diào)用SDK驗(yàn)證簽名
因?yàn)槲覀兩捎唵蔚募用芊椒ㄊ褂玫氖荝SA2,但是后面一直使用的是不帶參數(shù)類型(驗(yàn)RSA的簽)的方法(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8")驗(yàn)簽,所以一直報(bào)驗(yàn)簽不通過。
總結(jié)來說:
是RSA2加密的話
AlipayConfig.SIGN_TYPE =?"RSA2";
回調(diào)調(diào)用這個(gè)方法
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8",AlipayConfig.SIGN_TYPE);
是RSA加密的話
AlipayConfig.SIGN_TYPE =?"RSA";
回調(diào)調(diào)用這個(gè)方法
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8");
總結(jié)
以上是生活随笔為你收集整理的支付宝回调接口验签失败的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 韩顺平循序渐进学java 第13讲 抽象
- 下一篇: Makefile教程(这一篇足够从入门到