Skip to content

Commit d94b42b

Browse files
committed
🎨 #2798 【开放平台】小程序模版开发上传代码并生成体验版接口增加requiredPrivateInfos参数的支持
1 parent 1e13645 commit d94b42b

File tree

3 files changed

+63
-14
lines changed

3 files changed

+63
-14
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeExtConfig.java

+35-10
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package cn.binarywang.wx.miniapp.bean.code;
22

3-
import java.io.Serializable;
4-
import java.util.List;
5-
import java.util.Map;
6-
73
import lombok.AllArgsConstructor;
84
import lombok.Builder;
95
import lombok.Data;
106
import lombok.NoArgsConstructor;
117

8+
import java.io.Serializable;
9+
import java.util.List;
10+
import java.util.Map;
11+
1212
/**
1313
* 上传代码需要用到的第三方自定义的配置
14-
* 详细文档,参考:https://developers.weixin.qq.com/miniprogram/dev/framework/config.html
14+
* 详细文档,参考:<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/config.html">文档</a>
1515
*
1616
* @author <a href="https://github.com/charmingoh">Charming</a>
1717
* @since 2018-04-26 19:44
@@ -75,13 +75,33 @@ public class WxMaCodeExtConfig implements Serializable {
7575
*/
7676
private TabBar tabBar;
7777

78+
/**
79+
* 关于新增 requiredPrivateInfos 说明
80+
* 关于地理位置接口新增与相关流程调整可以查看社区公告:
81+
* <a href="https://developers.weixin.qq.com/community/develop/doc/000a02f2c5026891650e7f40351c01">...</a>
82+
* 7.14后,在代码中使用的地理位置相关接口(共计 8 个,见表1),第三方开发者均需要在 ext_json 参数中 requiredPrivateInfos 配置项中声明
83+
* 在ext_json参数中配置requiredPrivateInfos,其规则为「整体替换」。即如果在 app.json 里也配置了,那么最终会是ext_json的配置会覆盖 app.json
84+
* 配置的requiredPrivateInfos。其余规则可查看下方的「ext_json补充说明」
85+
* 在ext_json参数中配置 requiredPrivateInfos 示例如下
86+
* {
87+
* "template_id": "95",
88+
* "ext_json": "{\"requiredPrivateInfos\":[\"onLocationChange\",\"startLocationUpdate\"]}",
89+
* "user_version": "V1.0",
90+
* "user_desc": "test"
91+
* }
92+
* requiredPrivateInfos主要会检查格式是否正确,填入的 api 名称是否正确,填入的 api 名称是否有权限,填入的 api 名称是否互斥。对应的错误码可查看文档末尾的错误码文档。
93+
* requiredPrivateInfos在2022.7.14后才会生效,文档提前更新是为了方便开发者可以提前了解接口的参数变更规则,提前进行调整。
94+
*/
95+
private String[] requiredPrivateInfos;
96+
7897
/**
7998
* page.json 配置,页面配置
80-
* 文档:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html
99+
* <a href="https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html">文档</a>
81100
*/
82101
@Data
83102
@Builder
84-
public static class PageConfig {
103+
public static class PageConfig implements Serializable {
104+
private static final long serialVersionUID = -8615574764987479723L;
85105
/**
86106
* 导航栏背景颜色,如"#000000" HexColor.
87107
* 默认:#000000
@@ -128,7 +148,9 @@ public static class PageConfig {
128148
*/
129149
@Data
130150
@Builder
131-
public static class TabBar {
151+
public static class TabBar implements Serializable {
152+
private static final long serialVersionUID = -3037016532526129399L;
153+
132154
/**
133155
* HexColor, tab 上的文字默认颜色.
134156
*/
@@ -159,7 +181,8 @@ public static class TabBar {
159181
*/
160182
@Data
161183
@Builder
162-
public static class Item {
184+
public static class Item implements Serializable {
185+
private static final long serialVersionUID = -5824322265161612460L;
163186
/**
164187
* 页面路径,必须在 pages 中先定义.
165188
*/
@@ -184,7 +207,9 @@ public static class Item {
184207
*/
185208
@Data
186209
@Builder
187-
public static class NetworkTimeout {
210+
public static class NetworkTimeout implements Serializable {
211+
private static final long serialVersionUID = -9180176522015880991L;
212+
188213
/**
189214
* wx.request的超时时间,单位毫秒,默认为:60000.
190215
* 必填:否

weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeCommitRequestTest.java

+24-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.binarywang.wx.miniapp.bean.code;
22

3+
import com.google.gson.JsonParser;
34
import org.testng.annotations.Test;
45

56
import static org.testng.Assert.assertEquals;
@@ -20,6 +21,28 @@ public void testToJson() {
2021
.extEnable(true)
2122
.build())
2223
.build();
23-
assertEquals(commitRequest.toJson(), "{\"template_id\":1,\"user_version\":\"v0.1.0\",\"user_desc\":\"init\",\"ext_json\":\"{\\\"extEnable\\\":true,\\\"extAppid\\\":\\\"app123\\\"}\"}");
24+
assertEquals(commitRequest.toJson(), "{\"template_id\":1,\"user_version\":\"v0.1.0\",\"user_desc\":\"init\"," +
25+
"\"ext_json\":\"{\\\"extEnable\\\":true,\\\"extAppid\\\":\\\"app123\\\"}\"}");
26+
}
27+
28+
@Test
29+
public void testToJsonWithRequiredPrivateInfos() {
30+
WxMaCodeCommitRequest commitRequest = WxMaCodeCommitRequest.builder()
31+
.templateId(95L)
32+
.userVersion("V1.0")
33+
.userDesc("test")
34+
.extConfig(WxMaCodeExtConfig.builder()
35+
.requiredPrivateInfos(new String[]{
36+
"onLocationChange", "startLocationUpdate"
37+
})
38+
.build())
39+
.build();
40+
41+
assertEquals(commitRequest.toJson(), JsonParser.parseString("{\n" +
42+
" \"template_id\": \"95\",\n" +
43+
" \"ext_json\": \"{\\\"requiredPrivateInfos\\\":[\\\"onLocationChange\\\",\\\"startLocationUpdate\\\"]}\",\n" +
44+
" \"user_version\": \"V1.0\",\n" +
45+
" \"user_desc\": \"test\"\n" +
46+
"}").toString());
2447
}
2548
}

weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/ma/WxMaOpenCommitStandardExt.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88

99
/**
1010
* 微信第三方平台上传代码到小程序代码标准模板时的参数
11-
* ext_json补充说明
12-
* 文档地址:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/commit.html
11+
* <pre>
12+
* ext_json 补充说明
13+
* <a href="https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/commit.html">文档</a>
1314
* 为了便于第三方平台使用同一个小程序模板为不同的小程序提供服务,第三方可以将自定义信息放置在 ext_json 中,在模板小程序中,可以使用 wx.getExtConfigSync 接口获取自定义信息,从而区分不同的小程序。详见:小程序模板开发
1415
* ext_json 中的参数可选,参数详见小程序配置;但是,如果是模板id为标准模板库的模板id,则ext_json可支持的参数为:{"extAppid":'', "ext": {}, "window": {}}
1516
* ext_json 中有限支持 pages,支持配置模板页面的子集(ext_json 中不可新增页面)。
@@ -28,7 +29,7 @@
2829
* subPackages整体替换
2930
* navigateToMiniProgaramAppIdList:整体替换
3031
* plugins整体替换
31-
* </p>
32+
* </pre>
3233
*
3334
* @author <a href="https://www.sacoc.cn">广州跨界</a>
3435
* @since 2021/08/12

0 commit comments

Comments
 (0)