Skip to content

Commit

Permalink
🆕 #2865 【企业微信】第三方应用增加ID转换接口
Browse files Browse the repository at this point in the history
  • Loading branch information
cococa authored and binarywang committed Nov 1, 2022
1 parent 199c109 commit 48a8694
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package me.chanjar.weixin.cp.bean;

import com.google.gson.annotations.SerializedName;
import lombok.*;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;


@Getter
@Setter
public class WxCpTpUnionidToExternalUseridResult extends WxCpBaseResp {


private static final long serialVersionUID = -6153589164415497369L;

@SerializedName("external_userid")
private String externalUserid;

@SerializedName("pending_id")
private String pendingId;


public static WxCpTpUnionidToExternalUseridResult fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpTpUnionidToExternalUseridResult.class);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package me.chanjar.weixin.cp.tp.service;

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;

/**
* <pre>
* 企业微信三方应用ID转换接口
*
* </pre>
*
* @author cocoa
*/
public interface WxCpTpIdConvertService {

/**
* unionid与external_userid的关联
* <a href="https://developer.work.weixin.qq.com/document/path/95900">查看文档</a>
*
* @param unionid 微信客户的unionid
* @param openid 微信客户的openid
* @param subjectType 程序或公众号的主体类型: 0表示主体名称是企业的,1表示主体名称是服务商的
* @throws WxErrorException 。
*/
WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId, String unionid, String openid,
Integer subjectType) throws WxErrorException;

}
Original file line number Diff line number Diff line change
Expand Up @@ -627,4 +627,10 @@ public interface WxCpTpService {
* @param wxCpTpEditionService the wx cp tp edition service
*/
void setWxCpTpOrderService(WxCpTpEditionService wxCpTpEditionService);


WxCpTpIdConvertService getWxCpTpIdConverService();

void setWxCpTpIdConverService(WxCpTpIdConvertService wxCpTpIdConvertService);

}
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public abstract class BaseWxCpTpServiceImpl<H, P> implements WxCpTpService, Requ
private WxCpTpOrderService wxCpTpOrderService = new WxCpTpOrderServiceImpl(this);
private WxCpTpEditionService wxCpTpEditionService = new WxCpTpEditionServiceImpl(this);
private WxCpTpLicenseService wxCpTpLicenseService = new WxCpTpLicenseServiceImpl(this);
private WxCpTpIdConvertService wxCpTpIdConvertService = new WxCpTpIdConvertServiceImpl(this);

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

@Override
public WxCpTpIdConvertService getWxCpTpIdConverService() {
return wxCpTpIdConvertService;
}

@Override
public void setWxCpTpIdConverService(WxCpTpIdConvertService wxCpTpIdConvertService) {
this.wxCpTpIdConvertService = wxCpTpIdConvertService;
}



}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package me.chanjar.weixin.cp.tp.service.impl;

import com.google.gson.JsonObject;
import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.WxCpTpUnionidToExternalUseridResult;
import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;
import me.chanjar.weixin.cp.tp.service.WxCpTpIdConvertService;
import me.chanjar.weixin.cp.tp.service.WxCpTpService;


/**
* @author cocoa
*/
@RequiredArgsConstructor
public class WxCpTpIdConvertServiceImpl implements WxCpTpIdConvertService {
private final WxCpTpService mainService;

@Override
public WxCpTpUnionidToExternalUseridResult unionidToExternalUserid(String cropId, String unionid, String openid, Integer subjectType) throws WxErrorException {
JsonObject json = new JsonObject();
json.addProperty("unionid", unionid);
json.addProperty("openid", openid);
if (subjectType != null) {
json.addProperty("subject_type", subjectType);
}
WxCpTpConfigStorage wxCpTpConfigStorage = mainService.getWxCpTpConfigStorage();
String accessToken = wxCpTpConfigStorage.getAccessToken(cropId);
String url = wxCpTpConfigStorage.getApiUrl("/cgi-bin/idconvert/unionid_to_external_userid");
url += "?access_token=" + accessToken;
String responseContent = this.mainService.post(url, json.toString());
return WxCpTpUnionidToExternalUseridResult.fromJson(responseContent);
}


}

0 comments on commit 48a8694

Please sign in to comment.