目录
本文介绍使用com.github.binarywang实现微信接口对接的方法,主要包括:
1)引入4.7.0版本的weixin-java-miniapp和weixin-java-pay依赖包;
2)通过配置文件自动加载微信参数;
3)自动创建WxMaService和WxPayService的Bean对象;
4)实现用户登录授权、获取用户信息和手机号等功能;
5)完成微信支付创建、回调处理、发货信息上传和退款等支付流程。文章详细说明了各个功能的实现代码,涵盖从配置到业务逻辑的完整对接过程。
1、引入依赖包
我们选用4.7.0版本,这里我们只介绍小程序的使用,所以只引入小程序包和支付包,如果需要开发公众号程序,需要另引入公众号的包weixin-java-mp。
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.7.0</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>4.7.0</version>
</dependency>
2、配置文件自动加载
首先,在配置文件中增加微信的响应配置,小程序的配置包括appid和secret,微信支付需要商户平台获取商户ID和密钥,配置项目中的异步回调地址,如果需要对接退款接口,要单独申请证书,申请过程参考商户平台说明。配置如下
wx:
app:
app_id: wx1a27d343773cc222
secret: 39735c5f99e32c74ecfa035963344eae
pay:
mch_id: 17166111581
key: 39735c5f99e32c74ecfa035963344eae
notify_url: https://xxx.com/wechat/pay/notify
refund_key_path: /data/cert/apiclient_cert.p12
在 application启动类上添加@EnableConfigurationProperties注解,springboot启动时会自动加载配置文件,将配置文件读取到Config类中。
3、自动创建bean对象
通过配置,在springboot启动时,完成service对象的自动创建。
如下是WxMaService和WxPayService对象的创建方法。
微信支付时用的appid为小程序的appid。
@Bean
public WxMaService getWxMaService() {
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
config.setAppid(appConfig.wx_appid);
config.setSecret(appConfig.wx_secret);
config.setMsgDataFormat("JSON");
WxMaService service = new WxMaServiceImpl();
service.setWxMaConfig(config);
return service;
}
@Bean
public WxPayService getWxPayService() {
WxPayConfig payConfig = new WxPayConfig();
payConfig.setAppId(StringUtils.trimToNull(appConfig.wx_appid()));
payConfig.setMchId(StringUtils.trimToNull(appConfig.getWxPayMchId()));
payConfig.setMchKey(StringUtils.trimToNull(appConfig.getWxPayKey()));
payConfig.setKeyPath(StringUtils.trimToNull(appConfig.wxRefundKeyPath));
payConfig.setTradeType("JSAPI");
payConfig.setNotifyUrl(StringUtils.trimToNull(appConfig.getNotifyUrl()));
// 可以指定是否使用沙箱环境
payConfig.setUseSandboxEnv(false);
wxPayService = new WxPayServiceImpl();
wxPayService.setConfig(payConfig);
return wxPayService;
}
4、WxMaService的方法调用
wxMaService可以处理的服务很多,比如WxMaMsgService,WxMaMediaService,WxMaQrcodeService,WxMaShareService,WxMaCloudService,WxMaLiveService,WxOcrService,WxMaLinkService等,我们这里只将最基础的WxMaUserService的使用,其他的使用后续再更新。
4.1根据code获取用户登录信息。
根据code可以获取用户的openId、sessionKey,如果小程序配置的开放平台,还可以获取unionId。
这里获取的sessionKey需要保存在缓存中,后续接口调用会用到,而且sessionKey不允许明码传输。
//根据前端换回的code获取用户基础信息
WxMaJscode2SessionResult res = wxMaService.getUserServic

1万+

被折叠的 条评论
为什么被折叠?



