diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSchemeService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSchemeService.java new file mode 100644 index 000000000..aaf7921c1 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSchemeService.java @@ -0,0 +1,26 @@ +package cn.binarywang.wx.miniapp.api; + +import cn.binarywang.wx.miniapp.bean.scheme.WxMaGenerateSchemeRequest; +import me.chanjar.weixin.common.error.WxErrorException; + +/** + *
+ * 小程序Scheme码相关操作接口. + * + * 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.generate.html + *+ * + * @author : cofedream + * @date : 2021-01-26 + */ +public interface WxMaSchemeService { + String GENERATE_SCHEME_URL = "https://api.weixin.qq.com/wxa/generatescheme"; + + /** + * 获取小程序scheme码 + * + * @param request 请求参数 + * @throws WxErrorException 生成失败时抛出,具体错误码请看文档 + */ + String generate(WxMaGenerateSchemeRequest request) throws WxErrorException; +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index e79e3cad3..de054998a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -229,6 +229,12 @@ public interface WxMaService extends WxService { */ WxMaQrcodeService getQrcodeService(); + /** + * 返回获取小程序scheme码实现对象,以方便调用其各个接口. + * @return WxMaSchemeService + */ + WxMaSchemeService getWxMaSchemeService(); + /** * 返回订阅消息配置相关接口方法的实现类对象, 以方便调用其各个接口. * diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index 9c0fc6722..0a0ecd493 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -47,6 +47,7 @@ public abstract class BaseWxMaServiceImpl
+ * 是否必填:否 + *+ */ + @SerializedName("jump_wxa") + private JumpWxa jumpWxa; + + /** + * 生成的scheme码类型,到期失效:true,永久有效:false。 + *
+ * 是否必填:否 + *+ */ + @SerializedName("is_expire") + private Boolean isExpire; + + /** + * 到期失效的scheme码的失效时间,为Unix时间戳。生成的到期失效scheme码在该时间前有效。最长有效期为1年。生成到期失效的scheme时必填。 + *
+ * 是否必填:否 + *+ */ + @SerializedName("expire_time") + private Long expireTime; + + @Data + @Builder(builderMethodName = "newBuilder") + public static class JumpWxa { + /** + * 通过scheme码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带query。path为空时会跳转小程序主页。 + *
+ * 是否必填:是 + *+ */ + @SerializedName("path") + private String path; + + /** + * 通过scheme码进入小程序时的query,最大128个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~ + * 返回值 + *
+ * 是否必填:是 + *+ */ + @SerializedName("query") + private String query; + } + + public String toJson() { + return WxMaGsonBuilder.create().toJson(this); + } + +} diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaSchemeServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaSchemeServiceImplTest.java new file mode 100644 index 000000000..e24997bc0 --- /dev/null +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaSchemeServiceImplTest.java @@ -0,0 +1,40 @@ +package cn.binarywang.wx.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.scheme.WxMaGenerateSchemeRequest; +import cn.binarywang.wx.miniapp.test.ApiTestModule; +import com.google.inject.Inject; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.time.DateUtils; +import org.testng.annotations.Guice; +import org.testng.annotations.Test; + +import java.util.Date; + +/** + * @author : cofedream + * @date : 2021-01-28 + */ +@Test +@Guice(modules = ApiTestModule.class) +public class WxMaSchemeServiceImplTest { + @Inject + private WxMaService wxService; + + @Test + public void testGenerate() throws WxErrorException { + final Date date = DateUtils.addMinutes(new Date(), 20); // 20分钟后失效 + final long expireTime = date.getTime() / 1000; + final String generate = this.wxService.getWxMaSchemeService().generate(WxMaGenerateSchemeRequest.newBuilder() + .jumpWxa(WxMaGenerateSchemeRequest.JumpWxa.newBuilder() +// .path("/pages/productView/editPhone/editPhone") // 都可以 + .path("pages/productView/editPhone/editPhone") // + .query("") + .build()) + .isExpire(true) // 到期失效 + .expireTime(expireTime) // 失效时间 + .build()); + System.out.println("generate:"); + System.out.println(generate); + } +}