新版支付宝WAP支付成功回调接口验签失败问题解决办法
来源:互联网 发布:java 电脑配置 编辑:程序博客网 时间:2024/05/04 06:41
支付宝旧版回调验签使用的是 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"); 验签通过。
- 新版支付宝WAP支付成功回调接口验签失败问题解决办法
- 对接支付宝接口时,不使用SDK,调用成功但是返回的数据一直验签失败问题解决方案
- 对接支付宝接口时,不使用SDK一直返回验签失败问题解决方案
- 支付宝回调接口验签失败
- 支付宝支付验签
- 支付宝WAP支付接口开发
- 支付宝WAP支付接口开发
- 支付宝WAP支付接口开发
- 支付宝WAP支付接口开发
- 支付宝WAP支付接口开发
- C#支付宝支付接口 接收支付宝推送通知(验签)
- 支付宝支付成功后验证失败
- 新版支付宝支付
- shopnc下wap支付宝支付成功问题
- 支付宝电脑支付notify异步返回验签失败坑
- 支付宝支付集成中:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过
- 银行支付回调接口通知失败后,过段时间又通知成功
- 支付宝新版支付接口Java后台签名
- C++知识点(一)
- Java设计模式之适配器设计模式(项目升级案例)
- Ubuntu下安装MySQL安装及入門
- 数据结构小结——顺序栈
- 003_JS实现图片轮播与点击播放
- 新版支付宝WAP支付成功回调接口验签失败问题解决办法
- vijos1059 积木城堡(背包)
- PHPStorm2017的激活与汉化
- 工作笔记(2017/8/6)
- js index属性及jquery index()方法
- HDU 3280 Equal Sum Partitions(区间DP)【模板】
- HDU 1082 COURSES (二分图匹配之匈牙利算法)
- php-fpm平滑重启
- Unity3D