1. 程式人生 > >支付寶回撥驗籤失敗解決辦法

支付寶回撥驗籤失敗解決辦法

按照支付寶的文件,呼叫rsaCheckV1的方法,他已經把方法封裝的很透徹了,只需要將取到的引數Map(request.getParameterMap())集合放入即可。

但是驗籤一直不通過,查了很多資料,說公鑰不對,應該使用支付寶公鑰,不是應用公鑰,修改之後,還是驗籤不通過。

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8"); //呼叫SDK驗證簽名

問題出在支付寶有兩個過載的方法。如果使用的是RSA加密的話,就呼叫下面這個方法。

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8");

如果使用的是RSA2加密的話,就呼叫下面這個方法。

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8",AlipayConfig.SIGN_TYPE); //呼叫SDK驗證簽名

因為我們生成訂單的加密方法使用的是RSA2,但是後面一直使用的是不帶引數型別(驗RSA的籤)的方法(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8")驗籤,所以一直報驗籤不通過。

總結來說:
是RSA2加密的話

AlipayConfig.SIGN_TYPE = "RSA2";

回撥呼叫這個方法

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8",AlipayConfig.SIGN_TYPE);

是RSA加密的話

AlipayConfig.SIGN_TYPE = "RSA";

回撥呼叫這個方法

boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, "UTF-8");