一、总体流程
第三方平台帮助旗下已授权的小程序进行代码管理时,需先开发完成小程序模版,再将小程序模版部署到旗下小程序帐号中,具体流程如下:
1:绑定开发小程序
(1)第三方平台的开发人员需先到微信公众平台(mp.weixin.qq.com)申请一个普通的小程序并完善小程序的信息、绑定开发者。
(2)进入微信开放平台,在第三方平台详情中,将该小程序添加为开发小程序。
注意:绑定为开发小程序后,该小程序的在开发工具中上传,代码会直接上传到开放平台,不会上传到公众平台。
2:小程序模版的开发和上传
使用开发小程序的开发者微信号登录微信web开发者工具(IDE),开发者工具中按照正常的小程序开发流程进行代码开发和调试。开发完成后,在开发工具中点击上传。
3:添加到小程序模版库,获得模版ID
从开发者工具中上传的代码,会先存在草稿箱中,每个开发小程序只保留最新一份上传记录。开发者可将草稿箱中的代码添加到小程序模版库中,小程序模版库中的模版不会被覆盖。最多可以有五十个代码模版,添加后可以获得模版ID(TemplateID)。
4:调用接口,为旗下授权的小程序部署代码
二、如何开发
1、创建项目
与开发普通小程序一致,第三方平台开发者填入相关的 3rdMiniProgramAppid ,设定项目名称和选择项目目录即可创建项目。
对于第三方平台小程序,可以在项目页卡查看到相关的 open3rd 信息以及当前的第三方的 3rdMiniProgramAppid ,如若项目配置了相关的 extAppid ,那么项目页卡中也会有相关信息。
2、小程序模板开发
与开发普通小程序一致,开发者在开发工具上开发好相关的业务逻辑之后,在项目页卡中提交预览即可以在微信中查看小程序的真实表现,
有所不同的是,第三方平台小程序的提交上传是上传至该第三方平台的 open 帐号下的模板草稿箱中,该平台的管理员需要自行对该模板进行相应的设置
3、extAppid 的开发调试
为了方便第三方平台的开发者引入 extAppid 的开发调试工作,需要引入ext.json的概念。
ext.json是一个配置文件,放置在小程序项目的根目录下。
可以根据 ext.json 中的配置直接初始化旗下小程序,这对于 不同的小程序会有不同的配置,可以减少请求 的同时,加快页面的渲染,并且不会有闪烁。
ext.json中的配置字段分为两种
- 特有的字段
if(wx.getExtConfig) {
wx.getExtConfig({
success: function (res) {
console.log(res.extConfig)
}
})
}
- 同app.json相同的字段
三、微信为第三方平台提供哪些授权
1,授权(登陆自助授权,流程与原公众号代开发一样)
2,域名配置修改
3,测试帐号修改
4,提交审核、发布版本
四、遇到的问题
- getUserInfo 不支持直接弹窗授权了,需要用到用户信息时可以让用户点击open-type 为userInfo的button来获取
<button type="default" size="{{defaultSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="default" hover-class="other-button-hover"> default </button> <button type="primary" size="{{primarySize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="primary"> primary </button> <button type="warn" size="{{warnSize}}" loading="{{loading}}" plain="{{plain}}" disabled="{{disabled}}" bindtap="warn"> warn </button> <button bindtap="setDisabled">点击设置以上按钮disabled属性</button> <button bindtap="setPlain">点击设置以上按钮plain属性</button> <button bindtap="setLoading">点击设置以上按钮loading属性</button> <button open-type="contact">进入客服会话</button> <button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">获取用户信息</button> <button open-type="openSetting">打开授权设置页</button> //获取用户信息 onGotUserInfo: function(e) { console.log(e.detail.errMsg) console.log(e.detail.userInfo) console.log(e.detail.rawData) },
- business_no的问题:business_no需要从后端动态获取,
//获取ext.json文件中的特定字段 // 异步获取 if(wx.getExtConfig) { wx.getExtConfig({ success: function (res) { console.log(res.extConfig) } }) } //同步获取: 通过 wx.getExtConfigSync 就可以获得 ext 字段的所有配置 let extConfig = wx.getExtConfigSync? wx.getExtConfigSync(): {} console.log(extConfig)
五、小程序第三方平台返回码对照表
return [
'-1' => '系统繁忙',
// '61003'=>'',//component is not authorized by this account hin
'61004' => '当前客户端ip未在开放平台白名单',
'61007' => '当前公众号或者小程序已在公众平台解绑',
'61023' => '授权已过期,请重新授权',// "refresh_token is invalid hint: [xmQn1a08981466]"
'85001' => '微信号不存在或微信号设置为不可搜索',
'85002' => '小程序绑定的体验者数量达到上限',
'85003' => '微信号绑定的小程序体验者达到上限',
'85004' => '微信号已经绑定',
'85006' => '标签格式错误',
'85007' => '页面路径错误',
'85008' => '类目填写错误',
// '85009'=>'已经有正在审核的版本',
'85010' => 'item_list有项目为空',
'85011' => '标题填写错误',
'85012' => '无效的审核id',
'85013' => '无效的自定义配置',
'85014' => '无效的模版编号',
'85015' => '版本输入错误',
'85019' => '没有审核版本',
'85020' => '审核状态未满足发布',
'85021' => '状态不可变-5以内',
'85022' => 'action非法',
'85023' => '审核列表填写的项目数不在1-5以内',
'85043' => '模版错误',
'85044' => '代码包超过大小限制',
'85045' => '导航设置错误,请重置导航再试,编号85045',//'ext_json有不存在的路径',
'85046' => 'tabBar中缺少path',
'85047' => 'pages字段为空',
'85048' => '导航设置错误,请重置导航再试,编号85048',//'ext_json解析失败',
'85066' => '链接错误',
'85068' => '测试链接不是子链接',
'85069' => '校验文件失败',
'85070' => '链接为黑名单',
'85071' => '已添加该链接,请勿重复添加',
'85072' => '该链接已被占用',
'85073' => '二维码规则已满',
'85074' => '小程序未发布, 小程序必须先发布代码才可以发布二维码跳转规则',
'85075' => '个人类型小程序无法设置二维码规则',
'85076' => '链接没有ICP备案',
'85077' => '小程序类目信息失效(类目中含有官方下架的类目,请重新选择类目)',
'85079' => '小程序没有线上版本,不能进行灰度',
'85080' => '小程序提交的审核未审核通过',
'85081' => '无效的发布比例',
'85082' => '当前的发布比例需要比之前设置的高',
'85085' => '当前平台近7天提交审核的小程序数量过多,请耐心等待审核完毕后再次提交',
'86000' => '不是由第三方代小程序进行调用',
'86001' => '不存在第三方的已经提交的代码',
'86002' => '小程序还未设置昵称、头像、简介。请先设置完后再重新提交',
'87011' => '现网已经在灰度发布,不能进行版本回退',
'87012' => '该版本不能回退,可能的原因:1:无上一个线上版用于回退 2:此版本为已回退版本,不能回退 3:此版本为回退功能上线之前的版本,不能回退',
'87013' => '撤回次数达到上限(每天一次,每个月10次)',
'89031' => '小程序绑定的体验者数量达到上限',//其实我不知道报什么错误
];