一、接入前准备
1. 微信支付文档中心
@ 接入准备: https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_1.shtml
@ 小程序支付API列表: https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_3.shtml
2. pom.xml加入依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>4.3.0</version>
</dependency>
3. application.yml
#微信支付参数相关
wx:
pay:
app_id: #微信公众号或者小程序等的appid
mch_id: #微信支付商户号
Api_V3_Key: # api v3支付秘钥 #微信支付商户密钥
# subAppId: #服务商模式下的子商户公众账号ID
# subMchId: #服务商模式下的子商户号
private_key_path: # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
private_cert_path: # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
notify_url: # 支付成功回调
二、编码
1. 编写配置WxPayProperties读取配置
@Component
@Data
@ConfigurationProperties(prefix = "wx.pay")
public class WxPayProperties {
/**
* 设置微信公众号或者小程序等的appid
*/
private String appId;
/**
* 微信支付商户号
*/
private String mchId;
/**
* 微信支付商户密钥
*/
private String apiV3Key;
/**
* 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除
*/
private String subAppId;
/**
* 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除
*/
private String subMchId;
/**
* apiclient_key.pem文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
*/
private String privateKeyPath;
/**
* apiclient_key.pem文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
*/
private String privateCertPath;
/**
* 支付成功回调地址:v3版本,必须是https
*/
private String notifyUrl;
}
2. 初始化微信支付相关配置参数
/**
* 微信支付配置
*/
@Configuration
@ConditionalOnClass(WxPayService.class)
@AllArgsConstructor
public class AlarmWxPayConfig {
@Autowired
private WxPayProperties properties;
/**
* 初始化微信支付相关配置参数
* @return
*/
@Bean
@ConditionalOnMissingBean
public WxPayService wxService() {
WxPayConfig payConfig = new WxPayConfig();
payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath()));
payConfig