1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 新版支付宝WAP支付成功回调接口验签失败问题解决办法

新版支付宝WAP支付成功回调接口验签失败问题解决办法

时间:2019-10-17 21:47:37

相关推荐

新版支付宝WAP支付成功回调接口验签失败问题解决办法

支付宝旧版回调验签使用的是 AlipayNotify.verify(params),新版本采用的是AlipaySignature.rsaCheckV1,AlipaySignature类在新版SDK包的路径com.alipay.api.internal.util中,但是在验签过程中报以下错误:

java.io.IOException: ObjectIdentifier mismatch: 2.16.840.1.101.3.4.2.1

调用的代码:

AlipaySignature.rsaCheckV1(params,"支付宝公钥","UTF-8");

注意支付宝公钥是在签约的支付宝基础应用中查看,支付宝基础应用中有查看(进入开发者中心,找到应用2.0签约,点应用信息标签,在页面上有查看应用公钥、查看支付宝公钥标签,点查看支付宝公钥标签,复制支付宝公钥,作为上面rsaCheckV1方法的第二个参数值)。

设置了公钥后,还需要修改rsaCheckV1的程序代码,在SDK中找到AlipaySignature.java,找到:

public static boolean rsaCheckContent(String content, String sign, String publicKey,

String charset) throws AlipayApiException {

try {

PublicKey pubKey = getPublicKeyFromX509("RSA",

new ByteArrayInputStream(publicKey.getBytes()));

java.security.Signature signature = java.security.Signature.getInstance(AlipayConstants.SIGN_ALGORITHMS);

AlipayConstants.SIGN_ALGORITHMS的值是SHA1WithRSA,因为我们用的是RSA2公钥,所以需要将上面的代码改为:

java.security.Signature signature = java.security.Signature.getInstance("SHA256WithRSA");

另外,因为使用SHA256,可能需要替换jre\lib\security目录下的两个jar包,US_export_policy.jar和local_policy.jar,从Oracle官方网站查找jce_policy-8.zip,替换本地的

jre\lib\security目录下这两个JAR包,按照上面的方法修改后,AlipaySignature.rsaCheckV1(params,"支付宝公钥","UTF-8"); 验签通过。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。