当我们在做微信小程序开发或者是公众号开发的时候,会涉及到代码上传和审核,发布的问题,当然微信会给我们一个后台,去进行小程序的上传和审核,发布,但是我们现在,想要这个后台在自己的后台管理中使用,这个时候就需要公众平台第三方平台,这里提供了一系列的接口给我们去运用,https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318292&token=&lang=zh_CN
这里我们就说一下设置小程序业务域名接口的实现,使用JAVA去实现这个功能,首先我们来看微信提供的api文档
从这里我们可以看出这个接口他的crud都是一个接口中去实现的,其实这个功能我们可以分2个接口去实现,
1.当action为git的时候,我们不需要其他的参数,只是查询出所有的数据,这个接口是可以无限期的去调用
2.当action为add,delete,set时,这个接口一个月只能调用5次,所以这个是要把接口参数测试的非常好才去调用
所有这个是要注意的点,下面我们来用java实现这个接口的调用:
在调用接口的时候,要先获取接口凭证才能去调用业务域名的接口 : https://blog.csdn.net/qq_41971087/article/details/82559144 这里是获取接口凭证的实例
ServiceImpl代码:
private final String API_MODIFY_DOMAIN = "https://api.weixin.qq.com/wxa/setwebviewdomain?access_token=TOKEN";
@Resource
WechatOpenService openService;
/**
* 获取业务域名信息:
*/
@Override
public WxaSetwebviewDomain getDomain(String appId) throws WxErrorException {
//获取接口凭证
String accesstoken = openService.getWxOpenComponentService().getAuthorizerAccessToken(appId, false);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("action", "get");
//发生post请求 accesstoken接口参数
String responseContent = openService.post(API_MODIFY_DOMAIN.replace("TOKEN", accesstoken),
jsonObject.toString()); //调用接口的参数
return WxOpenGsonBuilder.create().fromJson(responseContent, WxaSetwebviewDomain.class);
}
/**
* 业务域名
*/
@Override
public WxOpenBaseResult setwebviewDomain(String appId, String action, List<String> domains) throws WxErrorException {
//获取接口凭证
String accesstoken = openService.getWxOpenComponentService().getAuthorizerAccessToken(appId, false);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("action", action);
//参数 业务域名可能有多个
JsonArray requestdomainArray = new JsonArray();
for (String domain : domains) {
requestdomainArray.add(domain);
}
jsonObject.add("webviewdomain", requestdomainArray);
//发生post请求 accesstoken接口参数
String responseContent = openService.post(API_MODIFY_DOMAIN.replace("TOKEN", accesstoken),
jsonObject.toString()); //接口参数
return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenBaseResult.class);
}
contrller:
/**
* 获取业务域名信息:
* @param appid
* @return
*/
@RequestMapping("/appSetwebviewDomain.do")
@ResponseBody
public JsonResult appSetwebviewDomain(String appid) {
if(StringUtil.isBank(appid))
return JsonResult.renderError("appid不能为空");
AuthorizerInfo authorizerInfo = authorizerinfoService.getById(appid);
String miniProgramInfoStr = authorizerInfo.getMiniProgramInfo();
JSONObject jsonData = JSONObject.parseObject(miniProgramInfoStr);
System.err.println("用户唯一标识:"+appid);
try {
WxaSetwebviewDomain domain = iWxaSetwebviewDomainService.getDomain(appid);
if(domain.getErrcode() == 0) {
return JsonResult.renderSuccessWithData(domain);
}else {
return JsonResult.renderError("获取业务域名信息失败");
}
}catch(WxErrorException e) {
e.printStackTrace();
}
return JsonResult.renderError("获取业务域名信息错误");
}
/**
* 业务域名
* @param appid
* @param requestUrls
* @return
*/
@RequestMapping("/setwebviewDomains.do")
@ResponseBody
public JsonResult SetwebviewDomains(String appid,String requestUrls) {
System.err.println("微信用户唯一标识:"+appid+"添加的业务域名:"+requestUrls);
if(StringUtil.isBank(appid))
return JsonResult.renderError("appid不能为空");
List<String> asList = Arrays.asList(requestUrls.split(","));
try {
WxOpenBaseResult domain = iWxaSetwebviewDomainService.setwebviewDomain(appid, "set", asList);
if(domain.getErrcode() == 0) {
return JsonResult.renderSuccessWithData(domain);
}else {
return JsonResult.renderError("获取业务域名信息失败");
}
}catch(WxErrorException e) {
e.printStackTrace();
LOGGER.error("修改业务域名异常", e.toString());
}
return JsonResult.renderError("获取业务域名信息错误");
}
当操作的时候,只需要填set就可以了,不需要去想add和delete的问题,set没有会添加,有会覆盖的
里面的工具类型其实也很简单,大家看下代码,提供参考就可以了,如果有问题请在下方评论