From 8c63f133875cc66851a3e00457eddd8677ff791d Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Wed, 8 Aug 2018 21:04:49 +0800 Subject: [PATCH] =?UTF-8?q?#686=20=E8=8E=B7=E5=8F=96=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9A=84=E4=BD=93=E9=AA=8C=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0path?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wx/miniapp/api/WxMaCodeService.java | 10 ++++--- .../miniapp/api/impl/WxMaCodeServiceImpl.java | 26 +++++++++++++------ .../api/impl/WxMaCodeServiceImplTest.java | 19 +++++++------- 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java index eb90c125..fbe08184 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaCodeService.java @@ -1,5 +1,7 @@ package cn.binarywang.wx.miniapp.api; +import java.util.List; + import cn.binarywang.wx.miniapp.bean.code.WxMaCategory; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeAuditStatus; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest; @@ -7,8 +9,6 @@ import cn.binarywang.wx.miniapp.bean.code.WxMaCodeSubmitAuditRequest; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; import me.chanjar.weixin.common.error.WxErrorException; -import java.util.List; - /** * 小程序代码管理相关 API(大部分只能是第三方平台调用) * 文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140610_Uavc4&token=&lang=zh_CN @@ -44,11 +44,15 @@ public interface WxMaCodeService { /** * 获取体验小程序的体验二维码 + * 文档地址: + * https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140610_Uavc4&token=&lang=zh_CN * + * @param path 指定体验版二维码跳转到某个具体页面(如果不需要的话,则不需要填path参数,可在路径后以“?参数”方式传入参数) + * 具体的路径加参数需要urlencode(方法内部处理),比如page/index?action=1编码后得到page%2Findex%3Faction%3D1 * @return 二维码 bytes * @throws WxErrorException 上传失败时抛出,具体错误码请看类注释文档 */ - byte[] getQrCode() throws WxErrorException; + byte[] getQrCode(String path) throws WxErrorException; /** * 获取授权小程序帐号的可选类目 diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java index 199d140a..a460f4a3 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java @@ -1,5 +1,15 @@ package cn.binarywang.wx.miniapp.api.impl; +import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + import cn.binarywang.wx.miniapp.api.WxMaCodeService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.code.WxMaCategory; @@ -17,12 +27,6 @@ import me.chanjar.weixin.common.util.http.BaseMediaDownloadRequestExecutor; import me.chanjar.weixin.common.util.http.RequestExecutor; import me.chanjar.weixin.common.util.json.GsonHelper; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; - /** * @author Charming * @since 2018-04-26 20:00 @@ -41,13 +45,19 @@ public class WxMaCodeServiceImpl implements WxMaCodeService { } @Override - public byte[] getQrCode() throws WxErrorException { + public byte[] getQrCode(String path) throws WxErrorException { String appId = this.wxMaService.getWxMaConfig().getAppid(); Path qrCodeFilePath = null; try { RequestExecutor executor = BaseMediaDownloadRequestExecutor .create(this.wxMaService.getRequestHttp(), Files.createTempDirectory("weixin-java-tools-ma-" + appId).toFile()); - qrCodeFilePath = this.wxMaService.execute(executor, GET_QRCODE_URL, null).toPath(); + + final StringBuilder url = new StringBuilder(GET_QRCODE_URL); + if (StringUtils.isNotBlank(path)) { + url.append("?path=").append(URLEncoder.encode(path, StandardCharsets.UTF_8.name())); + } + + qrCodeFilePath = this.wxMaService.execute(executor, url.toString(), null).toPath(); return Files.readAllBytes(qrCodeFilePath); } catch (IOException e) { throw new WxErrorException(WxError.builder().errorMsg(e.getMessage()).build(), e); diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImplTest.java index 34c78899..0a4aca45 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImplTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImplTest.java @@ -1,5 +1,12 @@ package cn.binarywang.wx.miniapp.api.impl; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.testng.annotations.*; + import cn.binarywang.wx.miniapp.api.WxMaCodeService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.code.WxMaCategory; @@ -11,16 +18,8 @@ import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.test.ApiTestModule; import com.google.inject.Inject; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; +import static org.testng.Assert.*; /** * @author Charming @@ -77,7 +76,7 @@ public class WxMaCodeServiceImplTest { @Test public void testGetQrCode() throws Exception { - byte[] qrCode = wxService.getCodeService().getQrCode(); + byte[] qrCode = wxService.getCodeService().getQrCode(null); assertTrue(qrCode.length > 0); }