mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-04-05 08:37:32 +08:00
🆕 #3431 【开放平台】增加半屏小程序管理相关接口
This commit is contained in:
parent
56977a65ca
commit
03f78caecf
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -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();
|
||||
|
||||
/**
|
||||
* 购物订单
|
||||
*
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user