商家小程序授权给第三方应用后,系统服务商(ISV)可调用接口帮助商家构建小程序。
通过三方模板构建商家小程序版本
生成版本
调用 alipay.open.mini.version.upload 接口,通过模板构建商家小程序版本。
说明:
无需配置商家小程序的开发配置,调用构建接口后,商家小程序的开发配置会自动继承第三方应用和模板的开发配置:
商家小程序继承第三方应用的接口加签方式、域名白名单、IP 白名单、支付宝网关、应用网关、接口内容加密方式、基础库最低版本等配置。
商家小程序继承小程序模板的 H5 域名和 AES 密钥配置。
若商家小程序在调用构建版本接口之前已有开发配置,则调用构建版本接口后,在小程序原有的开发配置基础上合并第三方应用和模板的开发配置,一并生效。
ext 参数说明
为了方便第三方平台的开发者引入 APPID 的开发调试工作,需要引入 ext.json
的概念。
调用构建接口时传入 ext 参数,ext.json
的配置将会被写入商家小程序 app.json 的根目录下。
将商家的标识符(可自行决定采用何种标识,只要可以通过此标识查询出之前记录的该商家对应的 app_auth_token
即可)通过 ext.json
注入商家小程序中,以便小程序模板前端向 ISV 的服务端发出的请求,都可以带上商家标识符,从而服务端可以查询出与商家对应的 app_auth_token
。
{ "extEnable": true, "ext": { "shopId": "2018050xxxxxx975978", "miniShopId": "1112xxxxxx9766", "appId": "201xxxxxx108305" }, "extPages": { "pages/face/index":{ "defaultTitle": "功能演示页面" } }, "window":{ "defaultTitle": "支付宝接口功能演示" }, "tabBar": { "textColor": "#dddddd", "selectedColor": "#49a9ee", "backgroundColor": "#ffffff", "items": [ { "pagePath": "pages/index/index", "name": "首页" }, { "pagePath": "pages/logs/logs", "name": "日志" } ] }}
ext.json
中的配置字段分为两种:
特有的字段
同
app.json
相同的字段
extEnable
是一个 Boolean 类型的字段,用于规定当前的 ext.json
文件是否生效,开发者可以通过修改这个字段来开启和关闭 ext 中的 APPID 的结合开发。
ext
字段是开发自定义的数据字段,用于配置商家小程序的个性化内容,例如上面的例子中,通过 my.getExtConfigSync 就可以获得 ext
字段的所有配置。
{ "shopId": "2018050xxxxxx975978", "miniShopId": "1112xxxxxx9766", "appId": "201xxxxxx108305" }
const extJson = my.getExtConfigSync(); let shopId = extJson.shopId; let miniShopId = extJson.miniShopId; let appId = extJson.appId;
extPages
是一个对象,对象中的每个 key 应该是该小程序模板 app.json
中定义的页面,每个 key 对应的 value 是 page.json 中所规定的各项配置。当开发者设置这个配置以后,小程序框架会对应的修改相对应的 page 的配置信息。
示例:
@Testpublic void buildByTemplate() { // 1、构建ext字段 Map<String, Object> extFields = new HashMap<String, Object>(); extFields.put("extEnable", true); Map<String, String> ext = new HashMap<String, String>(); ext.put("shopId", "2019201929019291"); ext.put("userSlogan", "这是商家自定义的标语"); extFields.put("ext", ext); // 2、构建请求 AlipayOpenMiniVersionUploadRequest request = new AlipayOpenMiniVersionUploadRequest(); Map<String, String> content = new HashMap<String, String>(); content.put("ext", JSONObject.toJSONString(extFields)); // ext字段转换成json字符串格式 content.put("template_id", "2019121069217771"); content.put("app_version", "0.0.3"); request.setBizContent(JSONObject.toJSONString(content)); // 3、代调用请求的app_auth_token request.putOtherTextParam("app_auth_token", APP_AUTH_TOKEN); try { AlipayOpenMiniVersionUploadResponse response = alipayClient.execute(request); printResponse(response); } catch (AlipayApiException e) { e.printStackTrace(); }}
常见报错
报错 | 解决方案 |
系统繁忙 | 检查 |
商户未签约任何产品 | 商家小程序下线导致报错,请确保商家小程序是已上线的状态。 |
有关构建商家小程序的常见问题,请参见 三方业务 构建 FAQ。
查询商家小程序构建状态
完成构建商家小程序后,需调用 alipay.open.mini.version.build.query 接口,轮询小程序版本构建状态。
当返回结果中 create_status 为 6
,则说明小程序版本创建成功。
删除商家小程序版本
只有状态为开发中的版本才能被删除,默认最多允许 20 个开发中的版本。若超出,调用 alipay.open.mini.version.delete 接口删除废弃的版本。
体验构建的小程序
当调用查询小程序版本构建状态接口 alipay.open.mini.version.build.query 返回参数 create_status
为 6
后,可调用小程序生成体验版接口,生成体验版小程序供 ISV 和商家进行检查预览。
操作步骤
生成商家小程序体验版,调用接口 alipay.open.mini.experience.create。
查询商家小程序体验版状态,调用接口 alipay.open.mini.experience.query。
通过接口响应参数exp_qr_code_url
,获得二维码链接,点击扫码,即可体验商家小程序。
说明:如果扫体验码提示没有此功能,调用接口 alipay.open.app.members.create,添加开发者或体验者。取消商家小程序体验版,调用接口 alipay.open.mini.experience.cancel。