mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 17:38:05 +08:00
#1129 新增小程序插件管理相关接口
This commit is contained in:
parent
364aa0594f
commit
0196764079
@ -0,0 +1,50 @@
|
|||||||
|
package cn.binarywang.wx.miniapp.api;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaPluginListResult;
|
||||||
|
import me.chanjar.weixin.common.error.WxErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序插件管理 API
|
||||||
|
* <p>
|
||||||
|
* 详情请见:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/plugin-management/pluginManager.applyPlugin.html
|
||||||
|
* 或者:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Mini_Programs/Plug-ins_Management.html
|
||||||
|
*/
|
||||||
|
public interface WxMaPluginService {
|
||||||
|
|
||||||
|
String PLUGIN_URL = "https://api.weixin.qq.com/wxa/plugin";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 向插件开发者发起使用插件的申请
|
||||||
|
*
|
||||||
|
* @param pluginAppId 插件 appId
|
||||||
|
* @param reason 申请使用理由
|
||||||
|
* @throws WxErrorException 异常
|
||||||
|
*/
|
||||||
|
void applyPlugin(String pluginAppId, String reason) throws WxErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询已添加的插件
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* @throws WxErrorException
|
||||||
|
*/
|
||||||
|
WxMaPluginListResult getPluginList() throws WxErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除已添加的插件
|
||||||
|
*
|
||||||
|
* @param pluginAppId 插件 appId
|
||||||
|
* @throws WxErrorException
|
||||||
|
*/
|
||||||
|
void unbindPlugin(String pluginAppId) throws WxErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 快速更新插件版本号(第三方平台代小程序管理插件)
|
||||||
|
*
|
||||||
|
* @param pluginAppId 插件 appid
|
||||||
|
* @param userVersion 升级至版本号,要求此插件版本支持快速更新
|
||||||
|
* @throws WxErrorException
|
||||||
|
*/
|
||||||
|
void updatePlugin(String pluginAppId, String userVersion) throws WxErrorException;
|
||||||
|
|
||||||
|
}
|
@ -207,6 +207,13 @@ public interface WxMaService {
|
|||||||
*/
|
*/
|
||||||
WxMaSecCheckService getSecCheckService();
|
WxMaSecCheckService getSecCheckService();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回插件相关接口服务对象.
|
||||||
|
*
|
||||||
|
* @return WxMaPluginService
|
||||||
|
*/
|
||||||
|
WxMaPluginService getPluginService();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化http请求对象.
|
* 初始化http请求对象.
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
package cn.binarywang.wx.miniapp.api.impl;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.api.WxMaPluginService;
|
||||||
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaPluginListResult;
|
||||||
|
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
|
||||||
|
import me.chanjar.weixin.common.error.WxErrorException;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class WxMaPluginServiceImpl implements WxMaPluginService {
|
||||||
|
|
||||||
|
private WxMaService wxMaService;
|
||||||
|
|
||||||
|
public WxMaPluginServiceImpl(WxMaService wxMaService) {
|
||||||
|
this.wxMaService = wxMaService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyPlugin(String pluginAppId, String reason) throws WxErrorException {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("action", "apply");
|
||||||
|
params.put("plugin_appid", pluginAppId);
|
||||||
|
params.put("reason", reason);
|
||||||
|
|
||||||
|
this.wxMaService.post(PLUGIN_URL, WxMaGsonBuilder.create().toJson(params));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMaPluginListResult getPluginList() throws WxErrorException {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("action", "list");
|
||||||
|
|
||||||
|
String responseContent = this.wxMaService.post(PLUGIN_URL, WxMaGsonBuilder.create().toJson(params));
|
||||||
|
return WxMaPluginListResult.fromJson(responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void unbindPlugin(String pluginAppId) throws WxErrorException {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("action", "unbind");
|
||||||
|
params.put("plugin_appid", pluginAppId);
|
||||||
|
|
||||||
|
this.wxMaService.post(PLUGIN_URL, WxMaGsonBuilder.create().toJson(params));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updatePlugin(String pluginAppId, String userVersion) throws WxErrorException {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put("action", "update");
|
||||||
|
params.put("plugin_appid", pluginAppId);
|
||||||
|
params.put("user_version", userVersion);
|
||||||
|
|
||||||
|
this.wxMaService.post(PLUGIN_URL, WxMaGsonBuilder.create().toJson(params));
|
||||||
|
}
|
||||||
|
}
|
@ -53,6 +53,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
|
|||||||
private WxMaShareService shareService = new WxMaShareServiceImpl(this);
|
private WxMaShareService shareService = new WxMaShareServiceImpl(this);
|
||||||
private WxMaRunService runService = new WxMaRunServiceImpl(this);
|
private WxMaRunService runService = new WxMaRunServiceImpl(this);
|
||||||
private WxMaSecCheckService secCheckService = new WxMaSecCheckServiceImpl(this);
|
private WxMaSecCheckService secCheckService = new WxMaSecCheckServiceImpl(this);
|
||||||
|
private WxMaPluginService pluginService = new WxMaPluginServiceImpl(this);
|
||||||
|
|
||||||
private int retrySleepMillis = 1000;
|
private int retrySleepMillis = 1000;
|
||||||
private int maxRetryTimes = 5;
|
private int maxRetryTimes = 5;
|
||||||
@ -124,7 +125,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
|
|||||||
}
|
}
|
||||||
WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
|
WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
|
||||||
this.getWxMaConfig().updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
|
this.getWxMaConfig().updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
|
||||||
|
|
||||||
return this.getWxMaConfig().getAccessToken();
|
return this.getWxMaConfig().getAccessToken();
|
||||||
} finally {
|
} finally {
|
||||||
httpGet.releaseConnection();
|
httpGet.releaseConnection();
|
||||||
@ -359,4 +360,9 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl
|
|||||||
public WxMaSecCheckService getSecCheckService() {
|
public WxMaSecCheckService getSecCheckService() {
|
||||||
return this.secCheckService;
|
return this.secCheckService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WxMaPluginService getPluginService() {
|
||||||
|
return this.pluginService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package cn.binarywang.wx.miniapp.bean;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
import lombok.Data;
|
||||||
|
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class WxMaPluginListResult implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -5898572369543593656L;
|
||||||
|
|
||||||
|
@SerializedName("plugin_list")
|
||||||
|
private List<PluginInfo> pluginList;
|
||||||
|
|
||||||
|
public static WxMaPluginListResult fromJson(String json) {
|
||||||
|
return WxGsonBuilder.create().fromJson(json, WxMaPluginListResult.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class PluginInfo {
|
||||||
|
|
||||||
|
@SerializedName("appid")
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@SerializedName("nickname")
|
||||||
|
private String nickName;
|
||||||
|
|
||||||
|
@SerializedName("headimgurl")
|
||||||
|
private String headImgUrl;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package cn.binarywang.wx.miniapp.api.impl;
|
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaPluginListResult;
|
||||||
|
import cn.binarywang.wx.miniapp.test.ApiTestModule;
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import org.testng.annotations.Guice;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Guice(modules = ApiTestModule.class)
|
||||||
|
public class WxMaPluginServiceImplTest {
|
||||||
|
@Inject
|
||||||
|
private WxMaService wxService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testApplyPlugin() throws Exception {
|
||||||
|
this.wxService.getPluginService().applyPlugin("wx4418e3e031e551be", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetPluginList() throws Exception {
|
||||||
|
WxMaPluginListResult result = this.wxService.getPluginService().getPluginList();
|
||||||
|
assertNotNull(result);
|
||||||
|
System.out.println(result.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUnbindPlugin() throws Exception {
|
||||||
|
this.wxService.getPluginService().unbindPlugin("wx4418e3e031e551be");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdatePlugin() throws Exception {
|
||||||
|
this.wxService.getPluginService().updatePlugin("wx4418e3e031e551be", "2.0.2");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user