Skip to content

Commit f3ff4b3

Browse files
authored
🆕 #2865 【企业微信】第三方应用增加ID转换接口
1 parent 199c109 commit f3ff4b3

File tree

5 files changed

+105
-0
lines changed

5 files changed

+105
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package me.chanjar.weixin.cp.bean;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.*;
5+
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
6+
7+
8+
@Getter
9+
@Setter
10+
public class WxCpTpUnionidToExternalUseridResult extends WxCpBaseResp {
11+
12+
13+
private static final long serialVersionUID = -6153589164415497369L;
14+
15+
@SerializedName("external_userid")
16+
private String externalUserid;
17+
18+
@SerializedName("pending_id")
19+
private String pendingId;
20+
21+
22+
public static WxCpTpUnionidToExternalUseridResult fromJson(String json) {
23+
return WxCpGsonBuilder.create().fromJson(json, WxCpTpUnionidToExternalUseridResult.class);
24+
}
25+
26+
27+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package me.chanjar.weixin.cp.tp.service;
2+
3+
import me.chanjar.weixin.common.error.WxErrorException;
4+
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;
5+
6+
/**
7+
* <pre>
8+
* 企业微信三方应用ID转换接口
9+
*
10+
* </pre>
11+
*/
12+
public interface WxCpTpIdConverService {
13+
14+
15+
/**
16+
* unionid与external_userid的关联 https://developer.work.weixin.qq.com/document/path/95900
17+
* @param unionid 微信客户的unionid
18+
* @param openid 微信客户的openid
19+
* @param subjectType 程序或公众号的主体类型: 0表示主体名称是企业的,1表示主体名称是服务商的
20+
* @throws WxErrorException
21+
*/
22+
WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId,String unionid, String openid, Integer subjectType) throws WxErrorException;
23+
24+
25+
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,4 +627,10 @@ public interface WxCpTpService {
627627
* @param wxCpTpEditionService the wx cp tp edition service
628628
*/
629629
void setWxCpTpOrderService(WxCpTpEditionService wxCpTpEditionService);
630+
631+
632+
WxCpTpIdConverService getWxCpTpIdConverService();
633+
634+
void setWxCpTpIdConverService(WxCpTpIdConverService wxCpTpIdConverService);
635+
630636
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ
5757
private WxCpTpOrderService wxCpTpOrderService = new WxCpTpOrderServiceImpl(this);
5858
private WxCpTpEditionService wxCpTpEditionService = new WxCpTpEditionServiceImpl(this);
5959
private WxCpTpLicenseService wxCpTpLicenseService = new WxCpTpLicenseServiceImpl(this);
60+
private WxCpTpIdConverService wxCpTpIdConverService = new WxCpTpIdConverServiceImpl(this);
6061

6162
/**
6263
* 全局的是否正在刷新access token的锁.
@@ -743,4 +744,16 @@ private WxJsapiSignature doCreateWxJsapiSignature(String url, String authCorpId,
743744
return jsapiSignature;
744745
}
745746

747+
@Override
748+
public WxCpTpIdConverService getWxCpTpIdConverService() {
749+
return wxCpTpIdConverService;
750+
}
751+
752+
@Override
753+
public void setWxCpTpIdConverService(WxCpTpIdConverService wxCpTpIdConverService) {
754+
this.wxCpTpIdConverService = wxCpTpIdConverService;
755+
}
756+
757+
758+
746759
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package me.chanjar.weixin.cp.tp.service.impl;
2+
3+
import com.google.gson.JsonObject;
4+
import lombok.RequiredArgsConstructor;
5+
import me.chanjar.weixin.common.error.WxErrorException;
6+
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;
7+
import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
8+
import me.chanjar.weixin.cp.tp.service.WxCpTpIdConverService;
9+
import me.chanjar.weixin.cp.tp.service.WxCpTpService;
10+
11+
12+
@RequiredArgsConstructor
13+
public class WxCpTpIdConverServiceImpl implements WxCpTpIdConverService {
14+
15+
private final WxCpTpService mainService;
16+
17+
@Override
18+
public WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId, String unionid, String openid, Integer subjectType) throws WxErrorException {
19+
JsonObject json = new JsonObject();
20+
json.addProperty("unionid", unionid);
21+
json.addProperty("openid", openid);
22+
if (subjectType != null) {
23+
json.addProperty("subject_type", subjectType);
24+
}
25+
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
26+
String accessToken = wxCpTpConfigStorage.getAccessToken(cropId);
27+
String url = wxCpTpConfigStorage.getApiUrl("/cgi-bin/idconvert/unionid_to_external_userid");
28+
url += "?access_token=" + accessToken;
29+
String responseContent = this.mainService.post(url, json.toString());
30+
return WxCpTpUnionidToExternalUseridResult.fromJson(responseContent);
31+
}
32+
33+
34+
}

0 commit comments

Comments
 (0)