微信所有的支付结果都是加密处理的,他和订单支付成功的异步通知不一样。

他的基本返回是:

SUCCESS

我们需要对req_info解码才能看到退款的明文

解码后会得到明文:

解密步骤如下:

(1)对加密串A做base64解码,得到加密串B

(2)对商户key做md5,得到32位小写key* ( key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 )

(3)用key*对加密串B做AES-256-ECB解密(PKCS7Padding)

秘钥如果是服务商模式,请使用服务商的秘钥,否则使用商户的秘钥。

我们提供下java版的解密方法:public static String getRefundDecrypt(String reqInfoSecret, String key) {

String result = "";

try {

Security.addProvider(new BouncyCastleProvider());

sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();

byte[] bt = decoder.decodeBuffer(reqInfoSecret);

String b = new String(bt);

String md5key = MD5(key).toLowerCase();

System.out.println(md5key);

SecretKey secretKey = new SecretKeySpec(md5key.getBytes(), "AES");

Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");

cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] resultbt = cipher.doFinal(bt);

result = new String(resultbt);

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

OK 代码好了,实测有效

java微信支付异步通知_Java中微信支付退款异步通知解码相关推荐

  1. java微信支付验证签名_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...

    1. 前言 牢记一句话:公钥加密,私钥解密:私钥加签,公钥验签. 微信支付V3版本前两篇分别讲了如何对请求做签名和如何获取并刷新微信平台公钥,本篇将继续展开如何对微信支付响应结果的验签. 2. 为什么 ...

  2. java实现的小程序_Java实现 微信小程序 + 消息推送

    实现效果: 下面要显示五个字段 接下来,参照官方文档,一步步实现: 一.官方给出请求示例.返回示例 二.根据上面编写实体类 (1)请求参数 @Data public class SendTemplat ...

  3. java常见的报错_Java中常见的错误有哪些?

    原标题:Java中常见的错误有哪些? 1.java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 原因: 1.对系统所访 ...

  4. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

  5. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  6. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  7. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  8. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

  9. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

最新文章

  1. 18000 台服务器整整瘫痪了三天:因 BoltDB 糟糕的设计
  2. Cs Round#56 D Find Path Union
  3. 用IIS建立的.net网站通过IP地址不能访问解决方法
  4. DR模式 mysqlABB读写分离
  5. Ubuntu18.04上安装RTX 2080Ti显卡驱动
  6. typescript get方法_.NET手撸绘制TypeScript类图——上篇
  7. 富文本编辑器CKEditor配置及使用 - 转载篇
  8. 【lucene】lucene自定义评分
  9. 万圣节活动BANNER设计有方案了吗?拿走精品PSD分层模板!
  10. C语言 semaphore
  11. LOJ10155数字转换
  12. 通过使用阿里云+vuepress快速搭建静态个人博客网页页面
  13. 高质量图片缩略图生成(编程笔记)
  14. 佳顺通用进销存系统去广告_怎样选择免费进销存软件?
  15. [RK3399][Android7.1] 移植笔记 --- GT9XX系列Touch添加
  16. tcp spurious retransmission
  17. deepfacelab安卓版_DeepFaceLab2020版本下载
  18. opencv实现移动速度计算
  19. OpenStack 快速进阶教程
  20. 心电图心电轴怎么计算_心电图心电轴计算表

热门文章

  1. 原python最简单的图形编程_Python(简单图形和文件处理)编程
  2. 需要在html上引用脚本文件myjs,需要在 html 页面上引用脚本文件myJs.js,下列语句中,正确的是()...
  3. 安卓打开第二个activity就崩溃_零基础安卓开发起步(三)
  4. SpringCloud feign、hystrix、zuul超时配置
  5. 万丰科技机器人排名_万丰科技拟“借壳”长春经开
  6. 【Playable API】不用Animator如何播放动画?
  7. 用Unity开发AR创意礼物:会动的照片
  8. Ansible Tower - 使用入门 2 - 不同团队用户基于 RBAC 执行模板
  9. 使用Blazor和SqlTableDependency进行实时HTML页面内容更新
  10. TypeScript 3.7 发布,带来 Optional Chaining 等特性