小程序第三方平台管理方案

接收推送授权相关通知

微信文档地址:微信开放平台 步骤5中9

当公众号对第三方平台进行授权、取消授权、更新授权后,微信服务器会向第三方平台方的授权事件接收URL(https://xxx.xxxx.com/index.php/MiniApp/Auth/get_component_verify_ticket)推送相关通知

  • 接到授权通知后:
    1. 获取小程序的基本信息
    2. 获取小程序码
    3. 修改小程序服务器地址
    4. 代码发布并提交审核
    5. 接收到审核成功的通知后发布
  • 接到取消授权通知后:
    将该授权小程序状态标为取消授权,前端页面做相应处理,用户可在该页面进行重新授权

获取小程序的基本信息

微信文档地址:微信开放平台 步骤5中6

获取小程序的小程序码

微信文档地址:获取二维码 · 小程序

修改小程序服务器地址

微信文档地址:微信开放平台

  1. 设置小程序服务器域名

  2. 设置小程序业务域名(小程序内web-view域名)

代码发布(暂定)

  1. 获取代码模版库中的所有小程序代码模版
    微信文档地址:微信开放平台
    • 微信平台API:https://api.weixin.qq.com/wxa/gettemplatelist?access_token=TOKEN(POST)
      
    • 美秒平台API: https://xxx.xxxx.com/index.php/MiniApp/Code/getTemplateList (GET)
      选择模版库中user_desc字段中带有‘release’的template_id,同时user_version为模版版本即小程序版本,该字段可用于前端展示(比如线上版本,版本审核通过、不通过等)::
  2. 为授权的小程序帐号上传小程序代码
    微信文档地址:微信开放平台
    • 微信平台API:https://api.weixin.qq.com/wxa/commit?access_token=TOKEN(POST)
      
    • 美秒平台API:https://xxx.xxxx.com//index.php/MiniApp/Code/commitCode(GET)
      参数中template_id、user_version、user_desc来自上一步的结果,ext_json应该是实时生成的
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      const request = require("request");
      const options = { method: 'GET',
      url: 'https://xxx.xxxx.com/index.php/MiniApp/Code/commitCode',
      qs:
      { appid: 'wxb9e8939cd29e8909',
      template_id: '17',
      user_version: '1.3',
      user_desc: 'fix%20info%20page%20list%20bug',
      ext_json: 'ewogICAgImV4dEVuYWJsZSI6IHRydWUsCiAgICAiZXh0QXBwaWQiOiAid3hiOWU4OTM5Y2QyOWU4OTA5IiwKICAgICJleHQiOiB7CiAgICAgICAgImFwcGlkIjogInd4YjllODkzOWNkMjllODkwOSIsCiAgICAgICAgImFwcE5hbWUiOiAi576O56eS5LyB5Lia5pyN5YqhIgogICAgfSwKICAgICJ3aW5kb3ciOiB7CiAgICAgICAgIm5hdmlnYXRpb25CYXJUaXRsZVRleHQiOiAi576O56eS5LyB5Lia5pyN5YqhIgogICAgfQp9' } };
      request(options, function (error, response, body) {
      if (error) throw new Error(error);
      console.log(body);
      });
    • ext_json模版
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      {
      "extEnable": true,
      "extAppid": "wx5baa0c278fac0916",
      "ext": {
      "appid": "wx5baa0c278fac0916",
      "appName": "礼拜日"
      },
      "window": {
      "navigationBarTitleText": "礼拜日"
      }
      }
  3. 获取体验小程序的体验二维码
    微信文档地址:微信开放平台
    该接口按需求调用,开发用小程序需要,其他小程序看客户是否需要在发布之前体验

提交审核

微信文档:微信开放平台 3、4、5

  1. 获取授权小程序帐号的可选类目
  2. 获取小程序的第三方提交代码的页面配置(可不调用)
  3. 将第三方提交的代码包提交审核
    • 微信平台API: https://api.weixin.qq.com/wxa/submit_audit?access_token=TOKEN(POST)
    • 美秒平台API:https://xxx.xxxx.com/index.php/MiniApp/Code/submitAudit(POST)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      const request = require("request");
      const options = { method: 'POST',
      url: 'https://xxx.xxxx.com/index.php/MiniApp/Code/submitAudit',
      headers:
      { 'Content-Type': 'application/x-www-form-urlencoded'},
      formData:
      { appid: 'wx9193c9463e051965',
      item_list: 'W3siYWRkcmVzcyI6InBhZ2VzL2xpc3QiLCJ0YWciOiLnn63op4bpopEg5pWZ6IKyIiwiZmlyc3RfY2xhc3MiOiLmlZnogrIiLCJzZWNvbmRfY2xhc3MiOiLlnKjnur/mlZnogrIiLCJmaXJzdF9pZCI6OCwic2Vjb25kX2lkIjozMiwidGl0bGUiOiLnvo7np5Lnn63op4bpopHlrabpmaIifSx7ImFkZHJlc3MiOiJwYWdlcy9pbmZvIiwidGFnIjoi55+t6KeG6aKRIOi1hOiuryIsImZpcnN0X2NsYXNzIjoi5pWZ6IKyIiwic2Vjb25kX2NsYXNzIjoi5Zyo57q/5pWZ6IKyIiwiZmlyc3RfaWQiOjgsInNlY29uZF9pZCI6MzIsInRpdGxlIjoi576O56eS55+t6KeG6aKR5a2m6ZmiLei1hOiuryJ9XQ==' } };

      request(options, function (error, response, body) {
      if (error) throw new Error(error);
      console.log(body);
      });
    • category_list模版
      1
      2
      3
      4
      5
      6
      7
      8
      [
      {
      "first_class": "教育",
      "second_class": "在线教育",
      "first_id": 8,
      "second_id": 32
      }
      ]
    • item_list模版
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      [
      {
      "address":"pages/list",
      "tag":"短视频 教育",
      "first_class":"教育",
      "second_class":"在线教育",
      "first_id":8,
      "second_id":32,
      "title":"美秒短视频学院"
      },
      {
      "address":"pages/info",
      "tag":"短视频 资讯",
      "first_class":"教育",
      "second_class":"在线教育",
      "first_id":8,
      "second_id":32,
      "title":"美秒短视频学院-资讯"
      }
      ]

撤回审核

微信文档:微信开放平台 16

发布

微信文档:微信开放平台 6、7、8、9
当小程序有审核结果后,第三方平台将可以通过开放平台上填写的回调地址(https://xxx.xxxx.com/index.php/MiniApp/Code/dealWxCb/apppid/$APPID$),获得审核结果通知。
审核通过时:直接执行发布
审核失败时:记录失败原因反馈给前端

  1. 获取审核结果
  2. 发布

开发

成员管理

微信文档:微信开放平台

  1. 绑定微信用户为小程序体验者
  2. 解除绑定小程序的体验者
  3. 获取体验者列表

获取分享小程序码

微信文档:获取二维码 · 小程序

微信用户登录

微信文档:开放接口 · 小程序 微信开放平台
登录流程时序

小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

客服消息

微信文档:客服消息 · 小程序 转发消息 · 小程序
一种是有程序接管,另一种是转发到网页版客服工具(先选择这一种)
所有客服消息会推送到 https://xxx.xxxx.com/index.php/MiniApp/Code/dealWxCb/apppid/$APPID$

如果小程序设置了消息推送,普通微信用户向小程序客服发消息时,微信服务器会先将消息 POST 到开发者填写的 url 上,如果希望将消息转发到网页版客服工具,则需要开发者在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。

模版消息

微信文档:模板消息 · 小程序

小程序微信支付

微信文档:【微信支付】微信小程序支付开发者文档 微信支付 · 小程序

业务流程时序图

商户系统和微信支付系统主要交互:

  1. 小程序内调用登录接口,获取到用户的openid,api参见公共api 小程序登录API
  2. 商户server调用支付统一下单,api参见公共api 统一下单API
  3. 商户server调用再次签名,api参见公共api 再次签名
  4. 商户server接收支付通知,api参见公共api 支付结果通知API
  5. 商户server查询支付结果,api参见公共api 查询订单API