From 92bc58b25fc133f2e9ef1c8c6d652b1185cfd7d6 Mon Sep 17 00:00:00 2001 From: tryking <1437870930#qq.com> Date: Tue, 19 Aug 2025 10:41:34 +0800 Subject: [PATCH 1/5] =?UTF-8?q?2025-08-19=20tryking=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=BC=81=E5=BE=AE=E5=AE=A2=E6=9C=8D?= =?UTF-8?q?=E7=9B=B8=E5=85=B33=E4=B8=AA=E6=8E=A5=E5=8F=A3=20=E6=9F=A5/?= =?UTF-8?q?=E5=A2=9E/=E5=88=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/WxMaCustomserviceWorkService.java | 58 +++++++++++++++++++ .../wx/miniapp/api/WxMaService.java | 7 +++ .../miniapp/api/impl/BaseWxMaServiceImpl.java | 6 ++ .../WxMaCustomserviceWorkServiceImpl.java | 51 ++++++++++++++++ .../WxMaCustomserviceResult.java | 50 ++++++++++++++++ 5 files changed, 172 insertions(+) create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCustomserviceWorkServiceImpl.java create mode 100644 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java new file mode 100644 index 0000000000..4959f2d4dc --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java @@ -0,0 +1,58 @@ +package cn.binarywang.wx.miniapp.api; + +import cn.binarywang.wx.miniapp.bean.customservice.WxMaCustomserviceResult; +import me.chanjar.weixin.common.error.WxErrorException; + +import java.util.List; + +/** + *
+ *  小程序 - 微信客服 相关接口
+ *  负责处理 https://api.weixin.qq.com/customservice/work/**
+ *  文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/kf-work/getKfWorkBound.html
+ *  绑定的企业ID,需和小程序主体一致。
+ *  目前仅支持绑定非个人小程序。
+ *  Created by tryking123 on 2025/8/18.
+ * 
+ * + * @author tryking123 + */ +public interface WxMaCustomserviceWorkService { + + /** + * 查询小程序的微信客服绑定情况 + */ + String GET_CUSTOMSERVICE_URL = "https://api.weixin.qq.com/customservice/work/get"; + /** + * 为小程序绑定微信客服 注:此接口绑定的企业ID需完成企业认证 + */ + String BIND_CUSTOMSERVICE_URL = "https://api.weixin.qq.com/customservice/work/bind"; + /** + * 为小程序解除绑定微信客服 + */ + String UNBIND_CUSTOMSERVICE_URL = "https://api.weixin.qq.com/customservice/work/unbind"; + + /** + * 查询小程序的微信客服绑定情况 + * + * @return 成功示例json { "errcode": 0,"entityName": "XXXXX有限公司","corpid": "wwee11111xxxxxxx","bindTime": 1694611289 } + * @throws WxErrorException + */ + WxMaCustomserviceResult getCustomservice() throws WxErrorException; + + /** + * 绑定微信客服 + * @param corpid 企业ID,获取方式参考:https://developer.work.weixin.qq.com/document/path/90665#corpid + * @return 成功示例json { "errcode": 0 } + * @throws WxErrorException + */ + WxMaCustomserviceResult bindCustomservice(String corpid) throws WxErrorException; + + /** + * 解除绑定微信客服 + * @param corpid 企业ID,获取方式参考:https://developer.work.weixin.qq.com/document/path/90665#corpid + * @return 成功示例json { "errcode": 0 } + * @throws WxErrorException + */ + WxMaCustomserviceResult unbindCustomservice(String corpid) throws WxErrorException; +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index 87405edd8b..ef3a46bad9 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -278,6 +278,13 @@ WxMaApiResponse execute( */ WxMaCodeService getCodeService(); + /** + * 获取小程序 - 微信客服。 + * + * @return 微信客服服务对象WxMaCustomserviceWorkService + */ + WxMaCustomserviceWorkService getCustomserviceWorkService(); + /** * 获取jsapi操作相关服务对象。 * diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index 4a5ca19274..ec33dede0c 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -112,6 +112,7 @@ public abstract class BaseWxMaServiceImpl implements WxMaService, RequestH private final WxMaSchemeService schemeService = new WxMaSchemeServiceImpl(this); private final WxMaAnalysisService analysisService = new WxMaAnalysisServiceImpl(this); private final WxMaCodeService codeService = new WxMaCodeServiceImpl(this); + private final WxMaCustomserviceWorkService customserviceWorkService = new WxMaCustomserviceWorkServiceImpl(this); private final WxMaInternetService internetService = new WxMaInternetServiceImpl(this); private final WxMaSettingService settingService = new WxMaSettingServiceImpl(this); private final WxMaJsapiService jsapiService = new WxMaJsapiServiceImpl(this); @@ -651,6 +652,11 @@ public WxMaCodeService getCodeService() { return this.codeService; } + @Override + public WxMaCustomserviceWorkService getCustomserviceWorkService() { + return this.customserviceWorkService; + } + @Override public WxMaJsapiService getJsapiService() { return this.jsapiService; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCustomserviceWorkServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCustomserviceWorkServiceImpl.java new file mode 100644 index 0000000000..0a30f86df3 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCustomserviceWorkServiceImpl.java @@ -0,0 +1,51 @@ +package cn.binarywang.wx.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.api.WxMaCustomserviceWorkService; +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.customservice.WxMaCustomserviceResult; +import com.google.gson.JsonObject; +import lombok.RequiredArgsConstructor; +import me.chanjar.weixin.common.error.WxErrorException; + + + +/** + *
+ *  小程序 - 微信客服 相关接口
+ *  负责处理 https://api.weixin.qq.com/customservice/work/**
+ *  文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/kf-work/getKfWorkBound.html
+ *  绑定的企业ID,需和小程序主体一致。
+ *  目前仅支持绑定非个人小程序。
+ *  Created by tryking123 on 2025/8/18.
+ * 
+ * + * @author tryking123 + */ +@RequiredArgsConstructor +public class WxMaCustomserviceWorkServiceImpl implements WxMaCustomserviceWorkService { + private static final String CORPID = "corpid"; + + private final WxMaService service; + + @Override + public WxMaCustomserviceResult getCustomservice() throws WxErrorException { + String responseContent = this.service.get(GET_CUSTOMSERVICE_URL, null); + return WxMaCustomserviceResult.fromJson(responseContent); + } + + @Override + public WxMaCustomserviceResult bindCustomservice(String corpid) throws WxErrorException { + JsonObject paramJson = new JsonObject(); + paramJson.addProperty(CORPID, corpid); + String response = this.service.post(BIND_CUSTOMSERVICE_URL, paramJson); + return WxMaCustomserviceResult.fromJson(response); + } + + @Override + public WxMaCustomserviceResult unbindCustomservice(String corpid) throws WxErrorException { + JsonObject paramJson = new JsonObject(); + paramJson.addProperty(CORPID, corpid); + String response = this.service.post(UNBIND_CUSTOMSERVICE_URL, paramJson); + return WxMaCustomserviceResult.fromJson(response); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java new file mode 100644 index 0000000000..49febf7e2d --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java @@ -0,0 +1,50 @@ +package cn.binarywang.wx.miniapp.bean.customservice; + +import cn.binarywang.wx.miniapp.bean.express.WxMaExpressAccount; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 小程序帐号的可选类目,其中 address / tag / title 是提交审核会用到的 + * + * @author tryking123 + * @since 2025/8/18 17:40 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WxMaCustomserviceResult implements Serializable { + private static final long serialVersionUID = 8854979405505241314L; + + @SerializedName("errcode") + private Integer errCode; + + /** + * 该小程序的主体名称,未绑定时不返回 + */ + @SerializedName("entityName") + private String entityName; + + /** + * 企业ID,未绑定时不返回,未绑定时不返回 + */ + @SerializedName("corpid") + private String corpid; + + /** 接受绑定时间戳,ms */ + @JsonProperty("bindTime") + private Long bindTime; + + public static WxMaCustomserviceResult fromJson(String json) { + return WxMaGsonBuilder.create().fromJson(json, WxMaCustomserviceResult.class); + } +} From 9682ff4f7a87622c32e061a4422b227ac59df76b Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 31 Aug 2025 21:41:52 +0800 Subject: [PATCH 2/5] Update weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../wx/miniapp/bean/customservice/WxMaCustomserviceResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java index 49febf7e2d..61d5fc7fb1 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java @@ -35,7 +35,7 @@ public class WxMaCustomserviceResult implements Serializable { private String entityName; /** - * 企业ID,未绑定时不返回,未绑定时不返回 + * 企业ID,未绑定时不返回 */ @SerializedName("corpid") private String corpid; From 61be63eb8d01cb43a7d352e1026c1a07c4d99bbe Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 31 Aug 2025 21:42:09 +0800 Subject: [PATCH 3/5] Update weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java index 4959f2d4dc..bf119bc596 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCustomserviceWorkService.java @@ -3,7 +3,6 @@ import cn.binarywang.wx.miniapp.bean.customservice.WxMaCustomserviceResult; import me.chanjar.weixin.common.error.WxErrorException; -import java.util.List; /** *

From 2ccb000cf02097f3567d8f5f831c4aac5e3a0887 Mon Sep 17 00:00:00 2001
From: Binary Wang 
Date: Sun, 31 Aug 2025 21:42:18 +0800
Subject: [PATCH 4/5] Update
 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
 .../wx/miniapp/bean/customservice/WxMaCustomserviceResult.java   | 1 -
 1 file changed, 1 deletion(-)

diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
index 61d5fc7fb1..5d6f5e4089 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
@@ -1,6 +1,5 @@
 package cn.binarywang.wx.miniapp.bean.customservice;
 
-import cn.binarywang.wx.miniapp.bean.express.WxMaExpressAccount;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.gson.annotations.SerializedName;

From 840d985d2d1ec151fc11e847265004936ec82409 Mon Sep 17 00:00:00 2001
From: Binary Wang 
Date: Sun, 31 Aug 2025 21:42:56 +0800
Subject: [PATCH 5/5] Update
 weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
 .../bean/customservice/WxMaCustomserviceResult.java   | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
index 5d6f5e4089..e7a9a46de3 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/customservice/WxMaCustomserviceResult.java
@@ -12,8 +12,15 @@
 import java.util.List;
 
 /**
- * 小程序帐号的可选类目,其中 address / tag / title 是提交审核会用到的
- *
+ * 客服绑定结果信息,包括错误码、主体名称、企业ID和绑定时间戳。
+ * 

+ * 字段说明: + *

    + *
  • errCode: 错误码
  • + *
  • entityName: 小程序主体名称,未绑定时不返回
  • + *
  • corpid: 企业ID,未绑定时不返回
  • + *
  • bindTime: 接受绑定时间戳(毫秒)
  • + *
* @author tryking123 * @since 2025/8/18 17:40 */