使用 SpringBoot 实现微信支付退款申请的注意点

6,809 total views, 3 views today

支付退款需要传输证书信息,通过 https 协议传输的。
1. 在微信平台下载证书
把证书文件 apiclient_cert.p12 放到 resources 文件夹中,作为资源文件。
这样可以使用 ClassPathResource cp = new ClassPathResource(“apiclient_cert.p12”); 的方式读取证书内容注意, 证书默认的密码就是商户号。
2. 使用 RestfulTemplate 发送 https 发送请求。
大多数情况下,浏览器或操作系统内置了很多根证书,可以识别出服务器那边的证书是否可信。当然,有一些证书是自签证书,浏览器也识别不出是否可信,一般会提示警告,有些网站会让用户自行下载证书。
restfulTemplate 发送 https 请求,需要带上证书的信息。在 SpringBoot 项目中,我们可以创建一个实例,专门发送 https 相关的请求。

需要注意的是:
  • password 的值就是微信的商户 ID。
  • restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(Charset.forName(“utf-8”))); 这个代码避免出现乱码的情况。
  • @Qualifier 注解的作用,下面会提到。
那么申请退款的代码就可以如下实现了,其中 XML 参数是根据微信文档拼接生成的。

两个 RestTemplate 实例

通常,我们的 RestTemplate 会发送 http 和 https 请求。那么,SpringBoot 中就需要有 2 个 RestTemplate 实例来表示,一个发送 http,一个发送 https。
那么我还需要加入一个 Bean,可以用下面的代码。

注意@Primary 注解。
当使用使用@Autowired 进行自动绑定一个变量的时候,优先会绑定有@Primary 注解的资源。
而使用@Qualifier 字段的时候,则会选择指定名称的实例进行绑定。
因此,下面的代码绑定了 2 个不同的 RestTemplate 实例。

使用 SpringBoot 实现微信支付退款申请的注意点就以上几点。

原创文章,转载请注明出处!http://www.javathings.top/使用springboot实现微信支付退款申请的注意点/

About: wusq


发表评论

邮箱地址不会被公开。 必填项已用*标注