diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java index 9cda53bbb..1ba40a771 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpWifiService.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.mp.api; import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopDataResult; import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult; /** @@ -21,8 +22,27 @@ public interface WxMpWifiService { * http请求方式: POST * 请求URL:https://api.weixin.qq.com/bizwifi/shop/list?access_token=ACCESS_TOKEN * - * @param pageIndex 分页下标,默认从1开始 + * + * @param pageIndex 分页下标,默认从1开始 * @param pageSize 每页的个数,默认10个,最大20个 + * @return 结果 + * @throws WxErrorException 异常 */ WxMpWifiShopListResult listShop(int pageIndex, int pageSize) throws WxErrorException; + + /** + *
+ * 查询门店Wi-Fi信息 + * 通过此接口查询某一门店的详细Wi-Fi信息,包括门店内的设备类型、ssid、密码、设备数量、商家主页URL、顶部常驻入口文案。 + * + * http请求方式: POST + * 请求URL:https://api.weixin.qq.com/bizwifi/shop/get?access_token=ACCESS_TOKEN + * POST数据格式:JSON + *+ * + * @param shopId 门店ID + * @return 结果 + * @throws WxErrorException 异常 + */ + WxMpWifiShopDataResult getShopWifiInfo(int shopId) throws WxErrorException; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java index 357ae5801..636ba4fe3 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImpl.java @@ -5,10 +5,11 @@ import lombok.RequiredArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.WxMpWifiService; +import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopDataResult; import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult; -import me.chanjar.weixin.mp.enums.WxMpApiUrl; -import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Wifi.*; +import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Wifi.BIZWIFI_SHOP_GET; +import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Wifi.BIZWIFI_SHOP_LIST; /** *
@@ -29,4 +30,11 @@ public class WxMpWifiServiceImpl implements WxMpWifiService {
final String result = this.wxMpService.post(BIZWIFI_SHOP_LIST, json.toString());
return WxMpWifiShopListResult.fromJson(result);
}
+
+ @Override
+ public WxMpWifiShopDataResult getShopWifiInfo(int shopId) throws WxErrorException {
+ JsonObject json = new JsonObject();
+ json.addProperty("shop_id", shopId);
+ return WxMpWifiShopDataResult.fromJson(this.wxMpService.post(BIZWIFI_SHOP_GET, json.toString()));
+ }
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopDataResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopDataResult.java
new file mode 100644
index 000000000..2a3c79502
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopDataResult.java
@@ -0,0 +1,114 @@
+package me.chanjar.weixin.mp.bean.wifi;
+
+import com.google.gson.JsonParser;
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
+
+import java.util.List;
+
+/**
+ * 门店Wi-Fi信息.
+ *
+ * @author Binary Wang
+ * @date 2019-06-16
+ */
+@Data
+public class WxMpWifiShopDataResult {
+ public static WxMpWifiShopDataResult fromJson(String json) {
+ return WxMpGsonBuilder.create().fromJson(
+ new JsonParser().parse(json).getAsJsonObject().get("data"),
+ WxMpWifiShopDataResult.class);
+ }
+
+ /**
+ * 门店名称.
+ */
+ @SerializedName("shop_name")
+ private String shopName;
+
+ /**
+ * 无线网络设备的ssid,未添加设备为空,多个ssid时显示第一个.
+ */
+ @SerializedName("ssid")
+ private String ssid;
+
+ /**
+ * 无线网络设备的ssid列表,返回数组格式.
+ */
+ @SerializedName("ssid_list")
+ private String[] ssidList;
+
+ /**
+ * ssid和密码的列表,数组格式。当为密码型设备时,密码才有值.
+ */
+ @SerializedName("ssid_password_list")
+ private List ssidPasswordList;
+
+ /**
+ * 设备密码,当设备类型为密码型时返回.
+ */
+ @SerializedName("password")
+ private String password;
+
+ /**
+ * 门店内设备的设备类型,0-未添加设备,4-密码型设备,31-portal型设备.
+ */
+ @SerializedName("protocol_type")
+ private Integer protocolType;
+
+ /**
+ * 门店内设备总数.
+ */
+ @SerializedName("ap_count")
+ private Integer apCount;
+
+ /**
+ * 商家主页模板类型.
+ */
+ @SerializedName("template_id")
+ private Integer templateId;
+
+ /**
+ * 商家主页链接.
+ */
+ @SerializedName("homepage_url")
+ private String homepageUrl;
+
+ /**
+ * 顶部常驻入口上显示的文本内容:0--欢迎光临+公众号名称;1--欢迎光临+门店名称;2--已连接+公众号名称+WiFi;3--已连接+门店名称+Wi-Fi.
+ */
+ @SerializedName("bar_type")
+ private Integer barType;
+
+ /**
+ * 连网完成页链接.
+ */
+ @SerializedName("finishpage_url")
+ private String finishPageUrl;
+
+ /**
+ * 商户自己的id,与门店poi_id对应关系,建议在添加门店时候建立关联关系,具体请参考“微信门店接口”.
+ */
+ @SerializedName("sid")
+ private String sid;
+
+ /**
+ * 门店ID(适用于微信卡券、微信门店业务),具体定义参考微信门店,与shop_id一一对应.
+ */
+ @SerializedName("poi_id")
+ private String poiId;
+
+ @Data
+ public static class SsidPassword {
+ /**
+ * 无线网络设备的ssid.
+ */
+ private String ssid;
+
+ /**
+ * 无线网络设备的password.
+ */
+ private String password;
+ }
+}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java
index 69947aefc..4a86acb35 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/wifi/WxMpWifiShopListResult.java
@@ -23,19 +23,19 @@ public class WxMpWifiShopListResult {
}
/**
- * 总数
+ * 总数.
*/
@SerializedName("totalcount")
private int totalCount;
/**
- * 分页下标
+ * 分页下标.
*/
@SerializedName("pageindex")
private int pageIndex;
/**
- * 分页页数
+ * 分页页数.
*/
@SerializedName("pagecount")
private int pageCount;
@@ -46,43 +46,46 @@ public class WxMpWifiShopListResult {
public static class Record {
/**
- * 门店ID(适用于微信连Wi-Fi业务)
+ * 门店ID(适用于微信连Wi-Fi业务).
*/
@SerializedName("shop_id")
private Integer shopId;
/**
- * 门店名称
+ * 门店名称.
*/
@SerializedName("shop_name")
private String shopName;
/**
- * 无线网络设备的ssid,未添加设备为空,多个ssid时显示第一个
+ * 无线网络设备的ssid,未添加设备为空,多个ssid时显示第一个.
*/
@SerializedName("ssid")
private String ssid;
/**
- * 无线网络设备的ssid列表,返回数组格式
+ * 无线网络设备的ssid列表,返回数组格式.
*/
@SerializedName("ssid_list")
private List ssidList;
/**
- * 门店内设备的设备类型,0-未添加设备,1-专业型设备,4-密码型设备,5-portal自助型设备,31-portal改造型设备
+ * 门店内设备的设备类型.
+ * 0-未添加设备,1-专业型设备,4-密码型设备,5-portal自助型设备,31-portal改造型设备
*/
@SerializedName("protocol_type")
private Integer protocolType;
/**
- * 商户自己的id,与门店poi_id对应关系,建议在添加门店时候建立关联关系,具体请参考“微信门店接口”
+ * 商户自己的id.
+ * 与门店poi_id对应关系,建议在添加门店时候建立关联关系,具体请参考“微信门店接口”
*/
@SerializedName("sid")
private String sid;
/**
- * 门店ID(适用于微信卡券、微信门店业务),具体定义参考微信门店,与shop_id一一对应
+ * 门店ID(适用于微信卡券、微信门店业务).
+ * 具体定义参考微信门店,与shop_id一一对应
*/
@SerializedName("poi_id")
private String poiId;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
index e25e251e1..fd32840c7 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/enums/WxMpApiUrl.java
@@ -386,7 +386,12 @@ public interface WxMpApiUrl {
/**
* list.
*/
- BIZWIFI_SHOP_LIST(API_DEFAULT_HOST_URL, "/bizwifi/shop/list");
+ BIZWIFI_SHOP_LIST(API_DEFAULT_HOST_URL, "/bizwifi/shop/list"),
+
+ /**
+ * get.
+ */
+ BIZWIFI_SHOP_GET(API_DEFAULT_HOST_URL, "/bizwifi/shop/get");
private String prefix;
private String path;
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java
index e129474e3..9ef98f77f 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpWifiServiceImplTest.java
@@ -4,11 +4,17 @@ import com.google.inject.Inject;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
+import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopDataResult;
import me.chanjar.weixin.mp.bean.wifi.WxMpWifiShopListResult;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import static org.testng.Assert.*;
+import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Wifi.BIZWIFI_SHOP_GET;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
/**
*
@@ -26,6 +32,59 @@ public class WxMpWifiServiceImplTest {
@Test
public void testListShop() throws WxErrorException {
final WxMpWifiShopListResult result = this.wxService.getWifiService().listShop(1, 2);
+ assertThat(result).isNotNull();
System.out.println(result);
}
+
+ @Test
+ public void testGetShopWifiInfo() throws WxErrorException {
+ final WxMpWifiShopDataResult wifiInfo = this.wxService.getWifiService().getShopWifiInfo(123);
+ assertThat(wifiInfo).isNotNull();
+ System.out.println(wifiInfo);
+ }
+
+ public static class MockTest {
+ private WxMpService wxService = mock(WxMpService.class);
+
+ @Test
+ public void testGetShopWifiInfo() throws Exception {
+ String returnJson = "{\n" +
+ " \"errcode\": 0,\n" +
+ " \"data\": {\n" +
+ " \"shop_name\": \"南山店\",\n" +
+ " \"ssid\": \" WX123\",\n" +
+ " \"ssid_list\": [\n" +
+ " \"WX123\",\n" +
+ " \"WX456\"\n" +
+ " ],\n" +
+ " \"ssid_password_list\": [\n" +
+ " {\n" +
+ " \"ssid\": \"WX123\",\n" +
+ " \"password\": \"123456789\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"ssid\": \"WX456\",\n" +
+ " \"password\": \"21332465dge\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"password\": \"123456789\",\n" +
+ " \"protocol_type\": 4,\n" +
+ " \"ap_count\": 2,\n" +
+ " \"template_id\": 1,\n" +
+ " \"homepage_url\": \"http://www.weixin.qq.com/\",\n" +
+ " \"bar_type\": 1,\n" +
+ " \"sid\":\"\",\n" +
+ " \"poi_id\":\"285633617\"\n" +
+ " }\n" +
+ "}";
+
+ when(wxService.post(eq(BIZWIFI_SHOP_GET), anyString())).thenReturn(returnJson);
+ when(wxService.getWifiService()).thenReturn(new WxMpWifiServiceImpl(wxService));
+
+ final WxMpWifiShopDataResult wifiInfo = this.wxService.getWifiService().getShopWifiInfo(123);
+ assertThat(wifiInfo).isNotNull();
+ System.out.println(wifiInfo);
+
+ }
+ }
}