🆕 #3431 【开放平台】增加半屏小程序管理相关接口

This commit is contained in:
Leandra Green 2024-12-05 11:17:58 +08:00 committed by GitHub
parent 56977a65ca
commit 03f78caecf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 538 additions and 0 deletions

View File

@ -711,6 +711,132 @@ public enum WxMaErrorMsgEnum {
CODE_89255(89255, "code参数无效请检查code长度以及内容是否正确_注意code_type的值不同需要传的code长度不一样 注意code_type的值不同需要传的code长度不一样"),
// CODE_504002(-504002, "云函数未找到 Function not found"),
/**
* 半屏小程序系统错误
*/
CODE_89408(89408, "半屏小程序系统错误"),
/**
* 获取半屏小程序列表参数错误
*/
CODE_89409(89409, "获取半屏小程序列表参数错误"),
/**
* 添加半屏小程序appid参数错误
*/
CODE_89410(89410, "添加半屏小程序appid参数错误"),
/**
* 添加半屏小程序appid参数为空
*/
CODE_89411(89411, "添加半屏小程序appid参数为空"),
/**
* 添加半屏小程序申请理由不得超过30个字
*/
CODE_89412(89412, "添加半屏小程序申请理由不得超过30个字"),
/**
* 该小程序被申请次数已达24h限制
*/
CODE_89413(89413, "该小程序被申请次数已达24h限制"),
/**
* 每天仅允许申请50次半屏小程序
*/
CODE_89414(89414, "每天仅允许申请50次半屏小程序"),
/**
* 删除半屏小程序appid参数为空
*/
CODE_89415(89415, "删除半屏小程序appid参数为空"),
/**
* 取消半屏小程序授权appid参数为空
*/
CODE_89416(89416, "取消半屏小程序授权appid参数为空"),
/**
* 修改半屏小程序方式flag参数错误
*/
CODE_89417(89417, "修改半屏小程序方式flag参数错误"),
/**
* 获取半屏小程序每日申请次数失败
*/
CODE_89418(89418, "获取半屏小程序每日申请次数失败"),
/**
* 获取半屏小程序每日授权次数失败
*/
CODE_89419(89419, "获取半屏小程序每日授权次数失败"),
/**
* 不支持添加个人主体小程序
*/
CODE_89420(89420, "不支持添加个人主体小程序"),
/**
* 删除数据未找到
*/
CODE_89421(89421, "删除数据未找到"),
/**
* 删除状态异常
*/
CODE_89422(89422, "删除状态异常"),
/**
* 申请次数添加到达上限
*/
CODE_89423(89423, "申请次数添加到达上限"),
/**
* 申请添加已超时
*/
CODE_89425(89425, "申请添加已超时"),
/**
* 申请添加状态异常
*/
CODE_89426(89426, "申请添加状态异常"),
/**
* 申请号和授权号相同
*/
CODE_89427(89427, "申请号和授权号相同"),
/**
* 该小程序已申请不允许重复添加
*/
CODE_89428(89428, "该小程序已申请,不允许重复添加"),
/**
* 已到达同一小程序每日最多申请次数
*/
CODE_89429(89429, "已到达同一小程序每日最多申请次数"),
/**
* 该小程序已设置自动拒绝申请
*/
CODE_89430(89430, "该小程序已设置自动拒绝申请"),
/**
* 不支持此类型小程序
*/
CODE_89431(89431, "不支持此类型小程序"),
/**
* 不是小程序
*/
CODE_89432(89432, "不是小程序"),
/**
* 授权次数到达上限
*/
CODE_89424(89424, "授权次数到达上限"),
;
private final int code;

View File

@ -0,0 +1,133 @@
package me.chanjar.weixin.open.api;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.bean.result.WxOpenMaEmbeddedListResult;
/**
* 半屏小程序管理服务
* <pre>
* <a href="https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/embedded-management/addEmbedded.html">半屏小程序管理</a>
* </pre>
*
* @author Yuan
* @version 1.0.0
* @date 2024-12-04 16:55:19
*/
public interface WxOpenMaEmbeddedService {
/**
* 添加半屏小程序
* <pre>
* 本接口用于添加半屏小程序
* </pre>
*/
String API_ADD_EMBEDDED = "https://api.weixin.qq.com/wxaapi/wxaembedded/add_embedded";
/**
* 删除半屏小程序
* <pre>
* 用本接口可以删除已经获得授权调用的半屏小程序
* 说明通过add_embedded接口添加半屏小程序后可通过当前接口删除已经添加到半屏小程序列表的小程序
* </pre>
*/
String API_DELETE_EMBEDDED = "https://api.weixin.qq.com/wxaapi/wxaembedded/del_embedded";
/**
* 获取半屏小程序调用列表
* <pre>
* 调用本接口可以获取半屏小程序调用列表
* 说明通过addEmbedded接口添加半屏小程序后可通过当前接口获取半屏小程序调用列表
* </pre>
*/
String API_GET_EMBEDDED_LIST = "https://api.weixin.qq.com/wxaapi/wxaembedded/get_list";
/**
* 取消授权小程序
* <pre>
* 调用本接口可以取消已经授权的小程序
* 说明可通过get_own_list接口获取当前半屏小程序已经授权的小程序列表可通过当前接口取消对某个小程序的调用权限
* </pre>
*/
String API_DELETE_AUTHORIZED_EMBEDDED = "https://api.weixin.qq.com/wxaapi/wxaembedded/del_authorize";
/**
* 获取半屏小程序授权列表
* <pre>
* 调用本接口可以获取半屏小程序授权列表
* 说明一个半屏小程序可授权给1000个小程序调用通过该接口可获取已经授权的小程序列表
* </pre>
*/
String API_GET_OWN_LIST = "https://api.weixin.qq.com/wxaapi/wxaembedded/get_own_list";
/**
* 设置授权方式
*/
String API_SET_AUTHORIZED_EMBEDDED = "https://api.weixin.qq.com/wxaapi/wxaembedded/set_authorize";
/**
* 添加半屏小程序
*
* @param embeddedAppId 半屏小程序appId
* @param applyReason 申请理由
* @author Yuan
* @date 2024-12-04 17:33:33
*/
void addEmbedded(String embeddedAppId, String applyReason) throws WxErrorException;
/**
* 删除半屏小程序
*
* @param embeddedAppId 半屏小程序appId
* @author Yuan
* @date 2024-12-04 17:33:33
*/
void deleteEmbedded(String embeddedAppId) throws WxErrorException;
/**
* 获取半屏小程序调用列表
*
* @return {@link WxOpenMaEmbeddedListResult }
* @author Yuan
* @date 2024-12-04 17:33:33
*/
WxOpenMaEmbeddedListResult getEmbeddedList() throws WxErrorException;
/**
* 取消授权小程序
*
* @param embeddedAppId 半屏小程序appId
* @author Yuan
* @date 2024-12-04 17:33:33
*/
void deleteAuthorizedEmbedded(String embeddedAppId) throws WxErrorException;
/**
* 获取半屏小程序授权列表,默认分页起始值为0一次拉取最大值为1000
*
* @return {@link WxOpenMaEmbeddedListResult }
* @author Yuan
* @date 2024-12-04 17:33:33
*/
WxOpenMaEmbeddedListResult getOwnList() throws WxErrorException;
/**
* 获取半屏小程序授权列表
*
* @param start 分页起始值 默认值为0
* @param num 一次拉取最大值最大 1000默认值为10
* @return {@link WxOpenMaEmbeddedListResult }
* @author Yuan
* @date 2024-12-04 17:33:33
*/
WxOpenMaEmbeddedListResult getOwnList(Integer start, Integer num) throws WxErrorException;
/**
* 设置授权方式
*
* @param flag 半屏小程序授权方式0表示需要管理员验证1表示自动通过2表示自动拒绝
* @author Yuan
* @date 2024-12-04 17:33:33
*/
void setAuthorizedEmbedded(Integer flag) throws WxErrorException;
}

View File

@ -738,6 +738,15 @@ public interface WxOpenMaService extends WxMaService {
*/
WxOpenMaPrivacyService getPrivacyService();
/**
* 半屏小程序服务
*
* @return {@link WxOpenMaEmbeddedService }
* @author Yuan
* @date 2024-12-04 18:42:21
*/
WxOpenMaEmbeddedService getEmbeddedService();
/**
* 购物订单
*

View File

@ -0,0 +1,165 @@
package me.chanjar.weixin.open.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
import com.google.gson.JsonObject;
import lombok.AllArgsConstructor;
import me.chanjar.weixin.common.enums.WxType;
import me.chanjar.weixin.common.error.WxError;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenMaEmbeddedService;
import me.chanjar.weixin.open.bean.result.WxOpenMaEmbeddedListResult;
import org.apache.commons.lang3.StringUtils;
/**
* 半屏小程序管理服务
* <pre>
* <a href="https://developers.weixin.qq.com/doc/oplatform/openApi/OpenApiDoc/miniprogram-management/embedded-management/addEmbedded.html">半屏小程序管理</a>
* </pre>
*
* @author Yuan
* @version 1.0.0
* @date 2024-12-04 16:55:19
*/
@AllArgsConstructor
public class WxOpenMaEmbeddedServiceImpl implements WxOpenMaEmbeddedService {
private final WxMaService wxMaService;
/**
* 添加半屏小程序
*
* @param embeddedAppId 半屏小程序appId
* @param applyReason 申请理由
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public void addEmbedded(String embeddedAppId, String applyReason) throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("appid", embeddedAppId);
if (StringUtils.isNotBlank(applyReason)) {
params.addProperty("apply_reason", applyReason);
}
String response = wxMaService.post(API_ADD_EMBEDDED, params);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
}
/**
* 删除半屏小程序
*
* @param embeddedAppId 半屏小程序appId
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public void deleteEmbedded(String embeddedAppId) throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("appid", embeddedAppId);
String response = wxMaService.post(API_DELETE_EMBEDDED, params);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
}
/**
* 获取半屏小程序调用列表
*
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public WxOpenMaEmbeddedListResult getEmbeddedList() throws WxErrorException {
String response = wxMaService.get(API_GET_EMBEDDED_LIST, null);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaEmbeddedListResult.class);
}
/**
* 取消授权小程序
*
* @param embeddedAppId 半屏小程序appId
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public void deleteAuthorizedEmbedded(String embeddedAppId) throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("appid", embeddedAppId);
String response = wxMaService.post(API_DELETE_AUTHORIZED_EMBEDDED, params);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
}
/**
* 获取半屏小程序授权列表
*
* @return {@link WxOpenMaEmbeddedListResult }
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public WxOpenMaEmbeddedListResult getOwnList() throws WxErrorException {
String response = wxMaService.get(API_GET_OWN_LIST + "?num=1000", null);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaEmbeddedListResult.class);
}
/**
* 获取半屏小程序授权列表
*
* @param start 分页起始值 默认值为0
* @param num 一次拉取最大值最大 1000默认值为10
* @return {@link WxOpenMaEmbeddedListResult }
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public WxOpenMaEmbeddedListResult getOwnList(Integer start, Integer num) throws WxErrorException {
if (null == start) {
start = 0;
}
if (null == num) {
num = 10;
}
if (num > 1000) {
num = 1000;
}
String response = wxMaService.get(API_GET_OWN_LIST + "?start=" + start + "&num=" + num, null);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
return WxMaGsonBuilder.create().fromJson(response, WxOpenMaEmbeddedListResult.class);
}
/**
* 设置授权方式
*
* @param flag 半屏小程序授权方式0表示需要管理员验证1表示自动通过2表示自动拒绝
* @author Yuan
* @date 2024-12-04 17:33:33
*/
@Override
public void setAuthorizedEmbedded(Integer flag) throws WxErrorException {
JsonObject params = new JsonObject();
params.addProperty("flag", flag);
String response = wxMaService.post(API_SET_AUTHORIZED_EMBEDDED, params);
WxError wxError = WxError.fromJson(response, WxType.MiniApp);
if (wxError.getErrorCode() != 0) {
throw new WxErrorException(wxError);
}
}
}

View File

@ -54,6 +54,8 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
private final WxOpenMaPrivacyService privacyService;
@Getter
private final WxOpenMaShoppingOrdersService shoppingOrdersService;
@Getter
private final WxOpenMaEmbeddedService embeddedService;
public WxOpenMaServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMaConfig wxMaConfig) {
this.wxOpenComponentService = wxOpenComponentService;
@ -64,6 +66,7 @@ public class WxOpenMaServiceImpl extends WxMaServiceImpl implements WxOpenMaServ
this.icpService = new WxOpenMaIcpServiceImpl(this);
this.privacyService = new WxOpenMaPrivacyServiceImpl(this);
this.shoppingOrdersService = new WxOpenMaShoppingOrdersServiceImpl(this);
this.embeddedService = new WxOpenMaEmbeddedServiceImpl(this);
initHttp();
}

View File

@ -0,0 +1,59 @@
package me.chanjar.weixin.open.bean.ma;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
import java.io.Serializable;
/**
* 微信开放平台半屏小程序信息
*
* @author Yuan
* @version 1.0.0
* @date 2024-12-04 17:57:40
*/
@Data
public class WxOpenMaEmbedded implements Serializable {
private static final long serialVersionUID = -7319330493157204072L;
/**
* 半屏小程序appid
*/
@SerializedName("appid")
private String appId;
/**
* 添加时间
*/
@SerializedName("create_time")
private Long createTime;
/**
* 头像url
*/
@SerializedName("headimg")
private String headImg;
/**
* 半屏小程序昵称
*/
@SerializedName("nickname")
private String nickName;
/**
* 申请理由
*/
@SerializedName("reason")
private String reason;
/**
* 申请状态,1-待验证2-已通过3-已拒绝4-已超时5-已撤销6-已取消授权
*/
@SerializedName("status")
private String status;
@Override
public String toString() {
return WxOpenGsonBuilder.create().toJson(this);
}
public String toJson() {
return WxOpenGsonBuilder.create().toJson(this);
}
}

View File

@ -0,0 +1,43 @@
package me.chanjar.weixin.open.bean.result;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.open.bean.ma.WxOpenMaEmbedded;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
import java.util.List;
/**
* 获取半屏小程序调用列表返回值
*
* @author Yuan
* @version 1.0.0
* @date 2024-12-04 18:06:40
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WxOpenMaEmbeddedListResult extends WxOpenResult {
private static final long serialVersionUID = -6484320771244602727L;
/**
* 半屏小程序列表
*/
@SerializedName("wxa_embedded_list")
private List<WxOpenMaEmbedded> embeddedList;
/**
* 授权方式,0表示需要管理员确认1表示自动通过2表示自动拒绝
*/
@SerializedName("embedded_flag")
private Integer embeddedFlag;
@Override
public String toString() {
return WxOpenGsonBuilder.create().toJson(this);
}
public String toJson() {
return WxOpenGsonBuilder.create().toJson(this);
}
}