分享我使用的用户解密微信支付APIV3的通知notify,根据微信支付官方的介绍:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_5.shtml是使用的AEAD_AES_256_GCM加密方式,使用key、nonce和associated_data,对数据密文resource.ciphertext进行解密,得到JSON形式的资源对象。不过看了下,当前页面并没有相关的例子,下面贴出我使用的工具算法。 /** * AEAD_AES_256_GCM 解密 …

2022-02-26 0条评论 1054点热度 0人点赞 admin 阅读全文

需要解析这样的日期(例如微信支付apiV3返回的交易成功日期是类似这样的:2022-02-22T15:50:18+08:00)或者需要格式化成带有时区+8:00这样的日期,可以这样做(格式化字符串是yyyy-MM-dd'T'HH:mm:ssXXX): System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(new Date())); Date date = new SimpleDateFormat("yyyy-MM-dd'…

2022-02-25 0条评论 3088点热度 0人点赞 admin 阅读全文

分享一下Java下使用SHA256withRSA签名的代码,例如微信支付APIv3中的签名,就是使用的SHA256 with RSA签名,并对结果进行base64的编码。 这里签名使用到的密钥文件,是使用了Spring的特性,通过@Value(value = "${my.wx.mchApiClientKey}")加载进来的,可以根据使用实际需求修改。 通过generateSignature函数,对要求的参数(数组)进行签名。 WXPayUtil.java 如下,在SpringBoot下我加了@Component注解…

2022-02-23 0条评论 1952点热度 0人点赞 admin 阅读全文

生成验证码发送的等场景下会用到,生成多少位(由参数传入)随机数字的字符串,代码如下: /** * 生成随机数字字符串 * @param length 生成数字字符串的长度 */ public static String generateRandomDigitalString(int length) { String str = "0123456789"; Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i …

2022-02-22 0条评论 460点热度 0人点赞 admin 阅读全文

日历中,我们知道每个月的天数是不固定的,有时候是30天,有时候是31天;另外2个月更加特殊,根据是否是闰年,可能是28天或者29天;同理,某一年的总天数到低是今天,也要稍微判断一下的;所以如果自己写代码来判断,会比较麻烦,不过Java的Calendar类,有现成的函数可以判断,那就是:Calendar.getActualMaximum,来看下示例: Calendar calendar = Calendar.getInstance(); calendar.setTime(new SimpleDateFormat("y…

2022-02-21 0条评论 446点热度 0人点赞 admin 阅读全文

工具方法:获取给定多少位的随机字符,使用Random类的nextInt方法,candidate中的候选字符,可以根据实际需要进行调整。代码如下: /** * 生成随机字符串 * @param length 生成随机字符的长度 */ public static String generateRandomString(int length) { // 候选字符,现在是大小写字母和数字,可以根据实际情况调整 String candidate = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJK…

2022-02-20 0条评论 444点热度 0人点赞 admin 阅读全文

平时开发时候有一些静态的工具方法,调用的时候比较方便,但是有时候,一些工具方法需要传入一些配置文件里面的参数(如果是用springboot那就调用application.yml里的参数) 我们可以这样改造 工具方法加@Component注解; 需要引入的配置参数,用@Value注解引入; 一些初始化的配置,使用@PostConstruct注解进行初始化; 以阿里云的短信发送为例,示例代码如下(我把初始化com.aliyun.dysmsapi20170525.Client作为static静态变量,放在PostCons…

2022-02-16 0条评论 603点热度 0人点赞 admin 阅读全文

需要select某个表,随机获取多条记录 利用rand()函数,hibernate会根据数据库不同(例如spring.jpa.properties.dialect,MySQL是org.hibernate.dialect.MySQLDialect,Oracle是org.hibernate.dialect.Oracle10gDialect),生成相应数据库的SQL /** * 返回随机选择的size个记录 */ public List<Student> listStudents(int size) { St…

2022-02-12 0条评论 485点热度 0人点赞 admin 阅读全文

例如今天是2022年2月9日 星期四,要求得到今天这个周的周开始(应该是2022年2月7日 周一,当然如果定义周开始从周日开始,就是2022年2月6日 周日),得到今天这个周的周末(应该是2022年2月13日 周日,当然如果定义周结束从周六,就是2022年2月12日 周六) 初步一看,难度应该并不是特别难,但感觉总是不好实现(或者要判断很多) Java8开始有一个简单而且优雅的方式,可以方便实现这个功能: java.time.temporal.TemporalAdjusters的previousOrSame/nex…

2022-02-10 0条评论 631点热度 0人点赞 admin 阅读全文

今天遇到一个问题,在使用图形相关的功能时候,例如java.awt.Font的时候,在OracleJDK11的服务器上报错,如下: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException at org.springframework.web.s…

2022-02-07 0条评论 683点热度 0人点赞 admin 阅读全文
167891020