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 dd0a7cd95..b9d5027ae 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 3bd2f9c1b..4732899b2 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 class WxCpExternalContactServiceImpl implements WxCpExternalContactServic
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 7576a8d44..775107845 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 @@ public interface WxCpApiPathConsts {
* 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.
*/