作為第三方平臺開發小程式筆記

ShariseMo發表於2018-05-21

一、總體流程

第三方平臺幫助旗下已授權的小程式進行程式碼管理時,需先開發完成小程式模版,再將小程式模版部署到旗下小程式帳號中,具體流程如下:

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' => '小程式繫結的體驗者數量達到上限',//其實我不知道報什麼錯誤
];複製程式碼


相關文章