支付宝旧版回调验签使用的是  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支付成功回调接口验签失败问题解决办法相关推荐

  1. 支付宝回调接口验签失败

    按照支付宝的文档,调用rsaCheckV1的方法,他已经把方法封装的很透彻了,只需要将取到的参数Map(request.getParameterMap())集合放入即可. 但是验签一直不通过,查了很多 ...

  2. Python实战项目-10文件存储/支付宝支付/支付成功回调接口

    每天进步一点点,关注我哦,每天分享测试技术文章 文件存储 视频文件存储在某个位置,如果放在自己服务器上 放在项目的media文件夹 服务器上线后,用户既要访问接口,又需要看视频,都是使用一个域名和端口 ...

  3. Php验签错误支付宝,支付宝支付验签失败解决办法

    如果你和我一样,在调试支付宝接口的时候提示:验签失败 这种情况该如何处理呢? 其实: 一般情况下是公钥不对 ,应该使用支付宝公钥,不是应用公钥. 我当时就是把两者混淆了,所以现在加了特别注释,以防混淆 ...

  4. 企业微信回调接口验签

    文章目录 一.企业微信配置参数 二.验签 三.企业微信客户联系回调 四.相关工具类 企业微信提供了回调接口,允许企业服务商和企业应用接收到企业微信的事件通知和用户操作通知.在接收到回调通知时,需要进行 ...

  5. 支付验签失败_支付宝回调验签失败解决办法

    按照支付宝的文档,调用rsaCheckV1的方法,他已经把方法封装的很透彻了,只需要将取到的参数Map(request.getParameterMap())集合放入即可. 但是验签一直不通过,查了很多 ...

  6. 支付宝回调验签失败解决办法

    按照支付宝的文档,调用rsaCheckV1的方法,他已经把方法封装的很透彻了,只需要将取到的参数Map(request.getParameterMap())集合放入即可. 但是验签一直不通过,查了很多 ...

  7. PHP对微信支付v2回调进行验签并将相关数据加入数据库

    PS:对于V2版本微信支付的回调需要在线上环境进行,本文中出现的数据库的相关字段,各位请按照个人需求进行修改,此处只对微信回调数据进行相关解析; 代码方面写的比较杂乱,多看注释,相关代码根据个人需求进 ...

  8. 支付宝WAP支付接口开发

    支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...

  9. 支付宝Wap支付你了解多少?

    上几篇文章详细介绍了支付宝APP支付.微信APP支付 此文章来介绍下支付宝Wap支付(也叫作手机网站支付) 目录 1.创建应用并获取APPID 2.配置应用环境 3.配置沙箱环境 4.服务端实现(Ma ...

最新文章

  1. vs2017 open从v_宣布#Open2017,这是面向开发人员的除夕直播流
  2. 在PHP中实现StringBuilder类
  3. ZZ:new/delete 和malloc/free 的区别
  4. 《Programming WPF》翻译 第8章 6.我们进行到哪里了?
  5. c语言指针的自我评价,个人自我评价
  6. NLP的一些学习资料
  7. Codeforces Round #453 (Div. 1) D. Weighting a Tree 构造 + dfs树
  8. 基于Java+SpringBoot+vue+node.js等疫情网课管理系统详细设计和实现
  9. IIS6.0不支持ASP的解决办法
  10. 创建维护计划失败_如何善于创建和维护大型系统
  11. HTML map 设置图热点
  12. C#操作Word书签模板
  13. vue模板字符串标签动态参数_vue模板字符串
  14. 软件测试的模式(一、)
  15. 主成分分析和因子分析的理论与速成应用丨R语言和SPSS比较案例
  16. feign.RetryableException: xxx executing POST
  17. Elasticsearch:如何在聚合时选择所需要的 bucket 并进行可视化
  18. OPA277/OPA2277/OPA4277 High Precision Operational Amplifiers 高精度运放
  19. 王者荣耀游戏英文及翻译
  20. linux压缩文件恢复,Linux文件误删恢复

热门文章

  1. Egg + Puppeteer 实现Html转PDF(已开源)
  2. Linux Futex的设计与实现
  3. php中explode的是什么类型的_PHP中explode函数和split函数的区别小结
  4. 10.如何寻找培训班
  5. keytool工具实例
  6. c语言怎么学自学,怎么学自学C语言啊?
  7. 作为一个前端如何与后端交涉以及和同事交流业务
  8. k8s安装elasticSearch(简易版)
  9. 黑莓手机BlackBerry Java应用性能优化,tips
  10. java 整数值前面补充0 如1 转化为0000001