weixin4j-qy: 新增userid与openid互换接口

This commit is contained in:
jinyu
2015-06-24 20:57:24 +08:00
parent bb79042d4e
commit f6b1f76210
23 changed files with 255 additions and 195 deletions
@@ -851,4 +851,39 @@ public class WeixinProxy {
public BatchResult getresult(String jobId) throws WeixinException {
return batchApi.getresult(jobId);
}
/**
* userid转换成openid:该接口使用场景为微信支付、微信红包和企业转账,企业号用户在使用微信支付的功能时,
* 需要自行将企业号的userid转成openid。 在使用微信红包功能时,需要将应用id和userid转成appid和openid才能使用。
*
* @param userid
* 企业号内的成员id 必填
* @param agentid
* 需要发送红包的应用ID,若只是使用微信支付和企业转账,则无需该参数 传入0或负数则忽略
* @return 结果数组 第一个元素为对应的openid 第二个元素则为应用的appid(如果有)
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">userid转换成openid</a>
*/
public String[] userid2openid(String userid, int agentid)
throws WeixinException {
return userApi.userid2openid(userid, agentid);
}
/**
* openid转换成userid:该接口主要应用于使用微信支付、微信红包和企业转账之后的结果查询,
* 开发者需要知道某个结果事件的openid对应企业号内成员的信息时,可以通过调用该接口进行转换查询。
*
* @param openid
* 在使用微信支付、微信红包和企业转账之后,返回结果的openid
* @return 该openid在企业号中对应的成员userid
* @throws WeixinException
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">openid转换成userid</a>
*/
public String openid2userid(String openid) throws WeixinException {
return userApi.openid2userid(openid);
}
}
@@ -15,7 +15,6 @@ import com.foxinmy.weixin4j.qy.model.User;
import com.foxinmy.weixin4j.qy.type.InviteType;
import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.util.StringUtil;
/**
* 成员API
@@ -304,9 +303,7 @@ public class UserApi extends QyApi {
throws WeixinException {
JSONObject obj = new JSONObject();
obj.put("userid", userId);
if (StringUtil.isBlank(tips)) {
obj.put("invite_tips", tips);
}
obj.put("invite_tips", tips);
String invite_user_uri = getRequestUri("invite_user_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(
@@ -321,4 +318,51 @@ public class UserApi extends QyApi {
return null;
}
}
/**
* userid转换成openid:该接口使用场景为微信支付、微信红包和企业转账,企业号用户在使用微信支付的功能时,
* 需要自行将企业号的userid转成openid。 在使用微信红包功能时,需要将应用id和userid转成appid和openid才能使用。
*
* @param userid
* 企业号内的成员id 必填
* @param agentid
* 需要发送红包的应用ID,若只是使用微信支付和企业转账,则无需该参数 传入0或负数则忽略
* @return 结果数组 第一个元素为对应的openid 第二个元素则为应用的appid(如果有)
* @throws WeixinException
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">userid转换成openid</a>
*/
public String[] userid2openid(String userid, int agentid)
throws WeixinException {
JSONObject obj = new JSONObject();
obj.put("userid", userid);
if (agentid > 0) {
obj.put("agentid", agentid);
}
String userid2openid_uri = getRequestUri("userid2openid_uri");
WeixinResponse response = weixinClient.post(
String.format(userid2openid_uri, tokenHolder.getAccessToken()),
obj.toJSONString());
obj = response.getAsJson();
return new String[] { obj.getString("openid"), obj.getString("appid") };
}
/**
* openid转换成userid:该接口主要应用于使用微信支付、微信红包和企业转账之后的结果查询,
* 开发者需要知道某个结果事件的openid对应企业号内成员的信息时,可以通过调用该接口进行转换查询。
*
* @param openid
* 在使用微信支付、微信红包和企业转账之后,返回结果的openid
* @return 该openid在企业号中对应的成员userid
* @throws WeixinException
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=Userid%E4%B8%8Eopenid%E4%BA%92%E6%8D%A2%E6%8E%A5%E5%8F%A3">openid转换成userid</a>
*/
public String openid2userid(String openid) throws WeixinException {
String openid2userid_uri = getRequestUri("openid2userid_uri");
WeixinResponse response = weixinClient.post(
String.format(openid2userid_uri, tokenHolder.getAccessToken()),
String.format("{\"openid\": \"%s\"}", openid));
return response.getAsJson().getString("userid");
}
}
@@ -95,4 +95,8 @@ suite_get_authinfo_uri={api_base_url}/service/get_auth_info?suite_access_token=%
# \u83b7\u53d6\u4f01\u4e1a\u53f7\u5e94\u7528
suite_get_agent_uri={api_base_url}/service/get_agent?suite_access_token=%s
# \u8bbe\u7f6e\u4f01\u4e1a\u53f7\u5e94\u7528
suite_set_agent_uri={api_base_url}/service/set_agent?suite_access_token=%s
suite_set_agent_uri={api_base_url}/service/set_agent?suite_access_token=%s
# userid\u8f6c\u6362\u6210openid
userid2openid_uri={api_base_url}/user/convert_to_openid?access_token=%s
# openid\u8f6c\u6362\u6210userid
openid2userid_uri={api_base_url}/user/convert_to_userid?access_token=%s
@@ -89,4 +89,11 @@ public class UserTest extends TokenTest {
public void invite() throws WeixinException {
userApi.inviteUser("11", null);
}
@Test
public void convert() throws WeixinException {
String[] result = userApi.userid2openid("jinyu", 1);
System.err.println(result);
System.err.println(userApi.openid2userid(result[0]));
}
}