From 8a161cfa2c9d8b01df282aef31006fb3847d02f0 Mon Sep 17 00:00:00 2001 From: yiyingcanfeng <39869232+yiyingcanfeng@users.noreply.github.com> Date: Fri, 7 Oct 2022 15:49:51 +0800 Subject: [PATCH] =?UTF-8?q?=20:new:=20#2832=E3=80=90=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=E6=96=B0=E5=A2=9E=E5=B0=86=E4=BB=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=BA=94=E7=94=A8=E6=88=96=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E5=BA=94=E7=94=A8=E8=8E=B7=E5=8F=96=E7=9A=84externalu?= =?UTF-8?q?serid=E8=BD=AC=E6=8D=A2=E6=88=90=E8=87=AA=E5=BB=BA=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=9A=84externaluserid=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/api/WxCpExternalContactService.java | 17 +++++++++++++++++ .../impl/WxCpExternalContactServiceImpl.java | 10 ++++++++++ .../weixin/cp/constant/WxCpApiPathConsts.java | 4 ++++ 3 files changed, 31 insertions(+) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java index dd0a7cd95e..b9d5027aeb 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java @@ -239,6 +239,23 @@ public interface WxCpExternalContactService { */ String toServiceExternalUserid(String externalUserid) throws WxErrorException; + /** + * 将代开发应用或第三方应用获取的externaluserid转换成自建应用的externaluserid + *
+   * 文档地址:https://developer.work.weixin.qq.com/document/path/95884#external-userid%E8%BD%AC%E6%8D%A2
+   *
+   * 权限说明:
+   *
+   * 需要使用自建应用或基础应用的access_token
+   * 客户的跟进人,或者用户所在客户群的群主,需要同时在access_token和source_agentid所对应应用的可见范围内
+   * 
+ * @param externalUserid 服务商主体的external_userid,必须是source_agentid对应的应用所获取 + * @param sourceAgentId 企业授权的代开发自建应用或第三方应用的agentid + * @return + * @throws WxErrorException + */ + String fromServiceExternalUserid(String externalUserid, String sourceAgentId) throws WxErrorException; + /** * 企业客户微信unionid的升级 - unionid查询external_userid *
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
index 3bd2f9c1bd..4732899b25 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
@@ -152,6 +152,16 @@ public String toServiceExternalUserid(String externalUserid) throws WxErrorExcep
     return tmpJson.get("external_userid").getAsString();
   }
 
+  @Override
+  public String fromServiceExternalUserid(String externalUserid, String sourceAgentId) throws WxErrorException {
+    JsonObject json = new JsonObject();
+    json.addProperty("external_userid", externalUserid);
+    json.addProperty("source_agentid", sourceAgentId);
+    final String url = this.mainService.getWxCpConfigStorage().getApiUrl(FROM_SERVICE_EXTERNAL_USERID);
+    String responseContent = this.mainService.post(url, json.toString());
+    JsonObject tmpJson = GsonParser.parse(responseContent);
+    return tmpJson.get("external_userid").getAsString();
+  }
   @Override
   public WxCpExternalUserIdList unionidToExternalUserid3rd(String unionid, String openid,
                                                            String corpid) throws WxErrorException {
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
index 7576a8d44d..7751078459 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
@@ -996,6 +996,10 @@ interface ExternalContact {
      * The constant TO_SERVICE_EXTERNAL_USERID.
      */
     String TO_SERVICE_EXTERNAL_USERID = "/cgi-bin/externalcontact/to_service_external_userid";
+    /**
+     * The constant FROM_SERVICE_EXTERNAL_USERID.
+     */
+    String FROM_SERVICE_EXTERNAL_USERID = "/cgi-bin/externalcontact/from_service_external_userid";
     /**
      * The constant FINISH_EXTERNAL_USERID_MIGRATION.
      */