diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java index a565011c..2580d23a 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpDeviceService.java @@ -76,5 +76,24 @@ public interface WxMpDeviceService { */ WxDeviceBindResult compelUnbind(WxDeviceBind wxDeviceBind) throws WxErrorException; + /** + *
+   *   通过device type和device id 获取设备主人的openid
+   *   详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-11
+   * 
+ * @param deviceType 设备类型,目前为"公众账号原始ID" + * @param deviceId 设备ID + * @return WxDeviceOpenIdResult + */ + WxDeviceOpenIdResult getOpenId(String deviceType,String deviceId) throws WxErrorException; + /** + *
+   *   通过openid获取用户在当前devicetype下绑定的deviceid列表`
+   *   详情请见:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-12
+   * 
+ * @param openId 要查询的用户的openid + * @return WxDeviceBindDeviceResult + */ + WxDeviceBindDeviceResult getBindDevice(String openId) throws WxErrorException; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImpl.java index e7dbea1b..5c942365 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpDeviceServiceImpl.java @@ -23,7 +23,7 @@ public class WxMpDeviceServiceImpl implements WxMpDeviceService { @Override public TransMsgResp transMsg(WxDeviceMsg msg) throws WxErrorException { String url = API_URL_PREFIX + "/transmsg"; - String response = this.wxMpService.post(url,msg.toJson()); + String response = this.wxMpService.post(url, msg.toJson()); return TransMsgResp.fromJson(response); } @@ -37,21 +37,21 @@ public class WxMpDeviceServiceImpl implements WxMpDeviceService { @Override public WxDeviceAuthorizeResult authorize(WxDeviceAuthorize wxDeviceAuthorize) throws WxErrorException { String url = API_URL_PREFIX + "/authorize_device"; - String response = this.wxMpService.post(url,wxDeviceAuthorize.toJson()); + String response = this.wxMpService.post(url, wxDeviceAuthorize.toJson()); return WxDeviceAuthorizeResult.fromJson(response); } @Override public WxDeviceBindResult bind(WxDeviceBind wxDeviceBind) throws WxErrorException { String url = API_URL_PREFIX + "/bind"; - String response = this.wxMpService.post(url,wxDeviceBind.toJson()); + String response = this.wxMpService.post(url, wxDeviceBind.toJson()); return WxDeviceBindResult.fromJson(response); } @Override public WxDeviceBindResult compelBind(WxDeviceBind wxDeviceBind) throws WxErrorException { String url = API_URL_PREFIX + "/compel_bind"; - String response = this.wxMpService.post(url,wxDeviceBind.toJson()); + String response = this.wxMpService.post(url, wxDeviceBind.toJson()); return WxDeviceBindResult.fromJson(response); } @@ -68,5 +68,19 @@ public class WxMpDeviceServiceImpl implements WxMpDeviceService { String response = this.wxMpService.post(url, wxDeviceBind.toJson()); return WxDeviceBindResult.fromJson(response); } + + @Override + public WxDeviceOpenIdResult getOpenId(String deviceType, String deviceId) throws WxErrorException { + String url = API_URL_PREFIX + "/get_openid"; + String response = this.wxMpService.get(url, "device_type=" + deviceType + "&device_id=" + deviceId); + return WxDeviceOpenIdResult.fromJson(response); + } + + @Override + public WxDeviceBindDeviceResult getBindDevice(String openId) throws WxErrorException { + String url = API_URL_PREFIX+"/get_bind_device"; + String response = this.wxMpService.get(url,"openid="+openId); + return WxDeviceBindDeviceResult.fromJson(response); + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java index 41629c55..b0dd6ec3 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/BaseResp.java @@ -38,23 +38,25 @@ public class BaseResp extends AbstractDeviceBean{ } private class BaseInfo { - private String device_type; - private String device_id; + @SerializedName("device_type") + private String deviceType; + @SerializedName("device_id") + private String deviceId; - public String getDevice_type() { - return device_type; + public String getDeviceType() { + return deviceType; } - public void setDevice_type(String device_type) { - this.device_type = device_type; + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; } - public String getDevice_id() { - return device_id; + public String getDeviceId() { + return deviceId; } - public void setDevice_id(String device_id) { - this.device_id = device_id; + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; } } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindDeviceResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindDeviceResult.java new file mode 100644 index 00000000..d0ed2dcd --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceBindDeviceResult.java @@ -0,0 +1,46 @@ +package me.chanjar.weixin.mp.bean.device; + +import com.google.gson.annotations.SerializedName; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; + +import java.util.List; + +/** + * Created by keungtung on 16/12/2016. + */ +public class WxDeviceBindDeviceResult extends AbstractDeviceBean { + @SerializedName("resp_msg") + private RespMsg respMsg; + @SerializedName("openid") + private String openId; + @SerializedName("device_list") + private List devices; + + public static WxDeviceBindDeviceResult fromJson(String json) { + return WxMpGsonBuilder.create().fromJson(json, WxDeviceBindDeviceResult.class); + } + + private class Device { + @SerializedName("device_type") + private String deviceType; + @SerializedName("device_id") + private String deviceId; + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + } + +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceOpenIdResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceOpenIdResult.java new file mode 100644 index 00000000..0a23eddd --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceOpenIdResult.java @@ -0,0 +1,56 @@ +package me.chanjar.weixin.mp.bean.device; + +import com.google.gson.annotations.SerializedName; +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; + +import java.util.List; + +/** + * Created by keungtung on 16/12/2016. + */ +public class WxDeviceOpenIdResult extends AbstractDeviceBean { + @SerializedName("errcode") + private Integer errCode; + @SerializedName("errmsg") + private String errMsg; + @SerializedName("open_id") + private List openIds; + @SerializedName("resp_msg") + private RespMsg respMsg; + + public static WxDeviceOpenIdResult fromJson(String json) { + return WxMpGsonBuilder.create().fromJson(json, WxDeviceOpenIdResult.class); + } + + public Integer getErrCode() { + return errCode; + } + + public void setErrCode(Integer errCode) { + this.errCode = errCode; + } + + public String getErrMsg() { + return errMsg; + } + + public void setErrMsg(String errMsg) { + this.errMsg = errMsg; + } + + public List getOpenIds() { + return openIds; + } + + public void setOpenIds(List openIds) { + this.openIds = openIds; + } + + public RespMsg getRespMsg() { + return respMsg; + } + + public void setRespMsg(RespMsg respMsg) { + this.respMsg = respMsg; + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java index 9c89ff67..ff3028be 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/device/WxDeviceQrCodeResult.java @@ -6,15 +6,15 @@ import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; /** * Created by keungtung on 10/12/2016. */ -public class WxDeviceQrCodeResult extends AbstractDeviceBean{ +public class WxDeviceQrCodeResult extends AbstractDeviceBean { @SerializedName("deviceid") private String deviceId; @SerializedName("qrticket") private String qrTicket; @SerializedName("devicelicence") private String deviceLicence; - @SerializedName("resp_msg") - private RespMsg respMsg; + @SerializedName("base_resp") + private BaseResp baseResp; public static WxDeviceQrCodeResult fromJson(String json) { return WxMpGsonBuilder.INSTANCE.create().fromJson(json, WxDeviceQrCodeResult.class); @@ -28,12 +28,12 @@ public class WxDeviceQrCodeResult extends AbstractDeviceBean{ this.deviceLicence = deviceLicence; } - public RespMsg getRespMsg() { - return respMsg; + public BaseResp getBaseResp() { + return baseResp; } - public void setRespMsg(RespMsg respMsg) { - this.respMsg = respMsg; + public void setBaseResp(BaseResp baseResp) { + this.baseResp = baseResp; } public String getDeviceId() {