From 66c7382f25e2d8e9ab2f7551c32c77a3a3c01711 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 31 May 2026 14:19:04 +0000 Subject: [PATCH 1/2] Initial plan From 892e40e0b7044d583c21e42b0aca7f3ba0f1c6f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 31 May 2026 14:26:37 +0000 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E7=AE=A1=E7=90=86=E9=93=BE=E6=8E=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=92=8C=E6=94=B6=E8=97=8F=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 WxChannelApiUrlConstants 中新增店铺H5链接、二维码、口令及收藏管理接口 URL 常量 - 新增 ShopH5UrlResponse、ShopQrCodeResponse、ShopTagLinkResponse 响应 Bean 类 - 新增 FavoriteCountResponse 收藏人数响应 Bean 类(含 5 个渠道维度字段) - WxChannelBasicService 新增 getShopH5Url()、getShopQrCode(int)、getShopTagLink() 方法 - WxChannelBasicServiceImpl 实现上述 3 个新方法 - 新增 WxChannelFavoriteService 接口及 WxChannelFavoriteServiceImpl 实现 - WxChannelService 新增 getFavoriteService() 方法 - BaseWxChannelServiceImpl 注册并懒加载 favoriteService - 新增单元测试:WxChannelShopLinkServiceImplTest、WxChannelFavoriteServiceImplTest --- .../channel/api/WxChannelBasicService.java | 28 ++++++++++ .../channel/api/WxChannelFavoriteService.java | 21 +++++++ .../weixin/channel/api/WxChannelService.java | 7 +++ .../api/impl/BaseWxChannelServiceImpl.java | 9 +++ .../api/impl/WxChannelBasicServiceImpl.java | 25 +++++++++ .../impl/WxChannelFavoriteServiceImpl.java | 29 ++++++++++ .../bean/favorite/FavoriteCountResponse.java | 38 +++++++++++++ .../channel/bean/shop/ShopH5UrlResponse.java | 22 ++++++++ .../channel/bean/shop/ShopQrCodeResponse.java | 22 ++++++++ .../bean/shop/ShopTagLinkResponse.java | 22 ++++++++ .../constant/WxChannelApiUrlConstants.java | 13 +++++ .../WxChannelFavoriteServiceImplTest.java | 35 ++++++++++++ .../WxChannelShopLinkServiceImplTest.java | 56 +++++++++++++++++++ 13 files changed, 327 insertions(+) create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImpl.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java create mode 100644 weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java create mode 100644 weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImplTest.java create mode 100644 weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelShopLinkServiceImplTest.java diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java index a687aaeb5c..4d2133a56d 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelBasicService.java @@ -5,7 +5,10 @@ import me.chanjar.weixin.channel.bean.image.ChannelImageInfo; import me.chanjar.weixin.channel.bean.image.ChannelImageResponse; import me.chanjar.weixin.channel.bean.image.QualificationFileResponse; +import me.chanjar.weixin.channel.bean.shop.ShopH5UrlResponse; import me.chanjar.weixin.channel.bean.shop.ShopInfoResponse; +import me.chanjar.weixin.channel.bean.shop.ShopQrCodeResponse; +import me.chanjar.weixin.channel.bean.shop.ShopTagLinkResponse; import me.chanjar.weixin.common.error.WxErrorException; /** @@ -22,6 +25,31 @@ public interface WxChannelBasicService { */ ShopInfoResponse getShopInfo() throws WxErrorException; + /** + * 获取店铺H5链接 + * + * @return 店铺H5链接 + * @throws WxErrorException 异常 + */ + ShopH5UrlResponse getShopH5Url() throws WxErrorException; + + /** + * 获取店铺二维码 + * + * @param qrcodeType 二维码类型,1:二维码;2:标准物料;3:送礼物物料 + * @return 店铺二维码 + * @throws WxErrorException 异常 + */ + ShopQrCodeResponse getShopQrCode(int qrcodeType) throws WxErrorException; + + /** + * 获取店铺口令 + * + * @return 店铺口令 + * @throws WxErrorException 异常 + */ + ShopTagLinkResponse getShopTagLink() throws WxErrorException; + /** * 上传图片 * diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java new file mode 100644 index 0000000000..c1c03cc615 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelFavoriteService.java @@ -0,0 +1,21 @@ +package me.chanjar.weixin.channel.api; + +import me.chanjar.weixin.channel.bean.favorite.FavoriteCountResponse; +import me.chanjar.weixin.common.error.WxErrorException; + +/** + * 视频号小店 收藏管理接口 + * + * @author GitHub Copilot + * @link 收藏管理接口文档 + */ +public interface WxChannelFavoriteService { + + /** + * 获取店铺收藏的人数 + * + * @return 店铺收藏人数响应 + * @throws WxErrorException 异常 + */ + FavoriteCountResponse getFavoriteCount() throws WxErrorException; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java index 50a029c196..0b63f07cf7 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/WxChannelService.java @@ -182,4 +182,11 @@ public interface WxChannelService extends BaseWxChannelService { */ WxChannelLiveDashboardService getLiveDashboardService(); + /** + * 收藏管理服务 + * + * @return 收藏管理服务 + */ + WxChannelFavoriteService getFavoriteService(); + } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/BaseWxChannelServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/BaseWxChannelServiceImpl.java index 1a608e1f6a..4e15e1534f 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/BaseWxChannelServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/BaseWxChannelServiceImpl.java @@ -60,6 +60,7 @@ public abstract class BaseWxChannelServiceImpl implements WxChannelService private WxChannelVipService vipService = null; private WxChannelCompassFinderService compassFinderService = null; private WxChannelLiveDashboardService liveDashboardService = null; + private WxChannelFavoriteService favoriteService = null; protected WxChannelConfig config; private int retrySleepMillis = 1000; @@ -473,4 +474,12 @@ public synchronized WxChannelLiveDashboardService getLiveDashboardService() { return liveDashboardService; } + @Override + public synchronized WxChannelFavoriteService getFavoriteService() { + if (favoriteService == null) { + favoriteService = new WxChannelFavoriteServiceImpl(this); + } + return favoriteService; + } + } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelBasicServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelBasicServiceImpl.java index 6eb699da23..45a869216e 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelBasicServiceImpl.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelBasicServiceImpl.java @@ -2,7 +2,10 @@ import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_ADDRESS_CODE; import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_IMG_URL; +import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_SHOP_H5URL; import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_SHOP_INFO; +import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_SHOP_QRCODE; +import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.GET_SHOP_TAGLINK; import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.IMG_UPLOAD_URL; import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Basics.UPLOAD_QUALIFICATION_FILE; @@ -16,7 +19,10 @@ import me.chanjar.weixin.channel.bean.image.ChannelImageResponse; import me.chanjar.weixin.channel.bean.image.QualificationFileResponse; import me.chanjar.weixin.channel.bean.image.UploadImageResponse; +import me.chanjar.weixin.channel.bean.shop.ShopH5UrlResponse; import me.chanjar.weixin.channel.bean.shop.ShopInfoResponse; +import me.chanjar.weixin.channel.bean.shop.ShopQrCodeResponse; +import me.chanjar.weixin.channel.bean.shop.ShopTagLinkResponse; import me.chanjar.weixin.channel.executor.ChannelFileUploadRequestExecutor; import me.chanjar.weixin.channel.executor.ChannelMediaDownloadRequestExecutor; import me.chanjar.weixin.channel.util.ResponseUtils; @@ -93,4 +99,23 @@ public AddressCodeResponse getAddressCode(Integer code) throws WxErrorException return ResponseUtils.decode(resJson, AddressCodeResponse.class); } + @Override + public ShopH5UrlResponse getShopH5Url() throws WxErrorException { + String resJson = shopService.post(GET_SHOP_H5URL, "{}"); + return ResponseUtils.decode(resJson, ShopH5UrlResponse.class); + } + + @Override + public ShopQrCodeResponse getShopQrCode(int qrcodeType) throws WxErrorException { + String reqJson = "{\"qrcode_type\":" + qrcodeType + "}"; + String resJson = shopService.post(GET_SHOP_QRCODE, reqJson); + return ResponseUtils.decode(resJson, ShopQrCodeResponse.class); + } + + @Override + public ShopTagLinkResponse getShopTagLink() throws WxErrorException { + String resJson = shopService.post(GET_SHOP_TAGLINK, "{}"); + return ResponseUtils.decode(resJson, ShopTagLinkResponse.class); + } + } diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImpl.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImpl.java new file mode 100644 index 0000000000..8165f47987 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImpl.java @@ -0,0 +1,29 @@ +package me.chanjar.weixin.channel.api.impl; + +import static me.chanjar.weixin.channel.constant.WxChannelApiUrlConstants.Favorite.GET_FAVORITE_COUNT; + +import me.chanjar.weixin.channel.api.WxChannelFavoriteService; +import me.chanjar.weixin.channel.bean.favorite.FavoriteCountResponse; +import me.chanjar.weixin.channel.util.ResponseUtils; +import me.chanjar.weixin.common.error.WxErrorException; + +/** + * 视频号小店 收藏管理接口实现 + * + * @author GitHub Copilot + */ +public class WxChannelFavoriteServiceImpl implements WxChannelFavoriteService { + + /** 微信商店服务 */ + private final BaseWxChannelServiceImpl shopService; + + public WxChannelFavoriteServiceImpl(BaseWxChannelServiceImpl shopService) { + this.shopService = shopService; + } + + @Override + public FavoriteCountResponse getFavoriteCount() throws WxErrorException { + String resJson = shopService.post(GET_FAVORITE_COUNT, "{}"); + return ResponseUtils.decode(resJson, FavoriteCountResponse.class); + } +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java new file mode 100644 index 0000000000..9acdf93d75 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/favorite/FavoriteCountResponse.java @@ -0,0 +1,38 @@ +package me.chanjar.weixin.channel.bean.favorite; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +/** + * 店铺收藏人数 响应 + * + * @author GitHub Copilot + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class FavoriteCountResponse extends WxChannelBaseResponse { + + /** 店铺首页收藏用户数 */ + @JsonProperty("favor_uv_acc_shop_homepage") + private Long favorUvAccShopHomepage; + + /** 订单详情页收藏用户数 */ + @JsonProperty("favor_uv_acc_order_detail") + private Long favorUvAccOrderDetail; + + /** 商品详情页收藏用户数 */ + @JsonProperty("favor_uv_acc_product_detail") + private Long favorUvAccProductDetail; + + /** 其他场景收藏用户数 */ + @JsonProperty("favor_uv_acc_other_scene") + private Long favorUvAccOtherScene; + + /** 所有收藏用户数 */ + @JsonProperty("favor_uv_acc_all") + private Long favorUvAccAll; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java new file mode 100644 index 0000000000..5700073c05 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopH5UrlResponse.java @@ -0,0 +1,22 @@ +package me.chanjar.weixin.channel.bean.shop; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +/** + * 店铺H5链接 响应 + * + * @author GitHub Copilot + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ShopH5UrlResponse extends WxChannelBaseResponse { + + /** 店铺H5链接 */ + @JsonProperty("shop_h5url") + private String shopH5url; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java new file mode 100644 index 0000000000..1859f2e3f4 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopQrCodeResponse.java @@ -0,0 +1,22 @@ +package me.chanjar.weixin.channel.bean.shop; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +/** + * 店铺二维码 响应 + * + * @author GitHub Copilot + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ShopQrCodeResponse extends WxChannelBaseResponse { + + /** 店铺二维码链接 */ + @JsonProperty("shop_qrcode") + private String shopQrcode; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java new file mode 100644 index 0000000000..8b82d21106 --- /dev/null +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/bean/shop/ShopTagLinkResponse.java @@ -0,0 +1,22 @@ +package me.chanjar.weixin.channel.bean.shop; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import me.chanjar.weixin.channel.bean.base.WxChannelBaseResponse; + +/** + * 店铺口令 响应 + * + * @author GitHub Copilot + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class ShopTagLinkResponse extends WxChannelBaseResponse { + + /** 店铺微信口令 */ + @JsonProperty("shop_taglink") + private String shopTaglink; +} diff --git a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java index 6c2076d85b..18ab0cc792 100644 --- a/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java +++ b/weixin-java-channel/src/main/java/me/chanjar/weixin/channel/constant/WxChannelApiUrlConstants.java @@ -34,6 +34,19 @@ public interface Basics { String GET_IMG_URL = "https://api.weixin.qq.com/channels/ec/basics/media/get"; /** 获取地址编码 */ String GET_ADDRESS_CODE = "https://api.weixin.qq.com/channels/ec/basics/addresscode/get"; + /** 获取店铺H5链接 */ + String GET_SHOP_H5URL = "https://api.weixin.qq.com/channels/ec/basics/shop/h5url/get"; + /** 获取店铺二维码 */ + String GET_SHOP_QRCODE = "https://api.weixin.qq.com/channels/ec/basics/shop/qrcode/get"; + /** 获取店铺口令 */ + String GET_SHOP_TAGLINK = "https://api.weixin.qq.com/channels/ec/basics/shop/taglink/get"; + } + + /** 收藏管理相关接口 */ + public interface Favorite { + + /** 获取店铺收藏的人数 */ + String GET_FAVORITE_COUNT = "https://api.weixin.qq.com/channels/ec/favorites/count/get"; } /** 商品类目相关接口 */ diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImplTest.java new file mode 100644 index 0000000000..1e5dfd7c5d --- /dev/null +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelFavoriteServiceImplTest.java @@ -0,0 +1,35 @@ +package me.chanjar.weixin.channel.api.impl; + +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; + +import com.google.inject.Inject; +import me.chanjar.weixin.channel.api.WxChannelFavoriteService; +import me.chanjar.weixin.channel.api.WxChannelService; +import me.chanjar.weixin.channel.bean.favorite.FavoriteCountResponse; +import me.chanjar.weixin.channel.test.ApiTestModule; +import me.chanjar.weixin.channel.util.JsonUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +/** + * 收藏管理接口 测试 + * + * @author GitHub Copilot + */ +@Guice(modules = ApiTestModule.class) +public class WxChannelFavoriteServiceImplTest { + + @Inject + private WxChannelService channelService; + + @Test + public void testGetFavoriteCount() throws WxErrorException { + WxChannelFavoriteService favoriteService = channelService.getFavoriteService(); + FavoriteCountResponse response = favoriteService.getFavoriteCount(); + assertNotNull(response); + assertTrue(response.isSuccess()); + System.out.println(JsonUtils.encode(response)); + } +} diff --git a/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelShopLinkServiceImplTest.java b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelShopLinkServiceImplTest.java new file mode 100644 index 0000000000..87785a5396 --- /dev/null +++ b/weixin-java-channel/src/test/java/me/chanjar/weixin/channel/api/impl/WxChannelShopLinkServiceImplTest.java @@ -0,0 +1,56 @@ +package me.chanjar.weixin.channel.api.impl; + +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertTrue; + +import com.google.inject.Inject; +import me.chanjar.weixin.channel.api.WxChannelBasicService; +import me.chanjar.weixin.channel.api.WxChannelService; +import me.chanjar.weixin.channel.bean.shop.ShopH5UrlResponse; +import me.chanjar.weixin.channel.bean.shop.ShopQrCodeResponse; +import me.chanjar.weixin.channel.bean.shop.ShopTagLinkResponse; +import me.chanjar.weixin.channel.test.ApiTestModule; +import me.chanjar.weixin.channel.util.JsonUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +/** + * 店铺链接接口 测试 + * + * @author GitHub Copilot + */ +@Guice(modules = ApiTestModule.class) +public class WxChannelShopLinkServiceImplTest { + + @Inject + private WxChannelService channelService; + + @Test + public void testGetShopH5Url() throws WxErrorException { + WxChannelBasicService basicService = channelService.getBasicService(); + ShopH5UrlResponse response = basicService.getShopH5Url(); + assertNotNull(response); + assertTrue(response.isSuccess()); + System.out.println(JsonUtils.encode(response)); + } + + @Test + public void testGetShopQrCode() throws WxErrorException { + WxChannelBasicService basicService = channelService.getBasicService(); + // qrcodeType: 1=二维码, 2=标准物料, 3=送礼物物料 + ShopQrCodeResponse response = basicService.getShopQrCode(1); + assertNotNull(response); + assertTrue(response.isSuccess()); + System.out.println(JsonUtils.encode(response)); + } + + @Test + public void testGetShopTagLink() throws WxErrorException { + WxChannelBasicService basicService = channelService.getBasicService(); + ShopTagLinkResponse response = basicService.getShopTagLink(); + assertNotNull(response); + assertTrue(response.isSuccess()); + System.out.println(JsonUtils.encode(response)); + } +}