调用微信API获取小程序URL Link
- 过程
- 需要的微信小程序API版本
- 构建一个切面获取微信小程序API提供的Service接口
- 创建一个从微信API获取URL Link的Service接口
- 请求参数
过程
需要的微信小程序API版本
现在微信开源的API,从版本为4.1.8.B开始才提供了获取URL Link的API,所以在我们的项目中需要引进版本为4.1.8.B的maven依赖,在pom.xml中加入对应的依赖即可:
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.1.8.B</version>
</dependency>
构建一个切面获取微信小程序API提供的Service接口
因为微信小程序官方Service中是没有添加远程调用的注解,所以我们的项目中使用@Resource注解调用他们的服务进行build会显示找不到对应Service的bean,也就是无法注入对应Service的bean,所以我们选择通过反射构建一个切面去获取微信小程序官方提供的Service
首先通过得到的小程序的配置信息去获取切点,再使用ReflectUtil工具类去获取JoinPoint的声明类型,再通过stream.filter()对获取到的声明类型进行过滤,最后只剩下我们需要的Service和它的父类的类型,可以调用 class.isAssignableFrom(item.getType())去实现。最后使用ReflectUtil.getObjFieldVal()就可以获取到对应的Service了
创建一个从微信API获取URL Link的Service接口
请求参数
首先微信API的请求参数有这些:
有兴趣的可以自行去微信小程序官方开发文档看一下。
一般来说我们只需要access_token、path和query这三个参数就可以了,调用微信API生成的URL Link一般默认为永久有效的,如果想对URL Link做一个时间限制,可以把后面几个参数加上去。
access_token
微信官方的API会提供一个getAccessToken()的方法去获取接口调用的权限,直接调用对应服务的方法就可以了
path
这个参数是小程序页面跳转的路由地址,确保对应的页面生成对应的URL LinkLink
query
这个是对页面里存在的东西查询的一个参数,例如对应用户的id,这样就能查询到该用户的详情信息,形式为"id=xxxxxx"
GenerateUrlLinkRequest request = GenerateUrlLinkRequest.builder()
.path(urlLinkPath)
.query("id=" + id)
.build();
return wxMaService.getLinkService().generate(request);
将这些参数组装一下,构建到POST请求里,对微信小程序服务器发起POST请求就可以获得小程序的URL Link了