温斯顿吴的个人博客 woojean.com

小程序saas服务(微信第三方平台)开发总结

2018-01-20

开放平台申请与接入

微信开放平台地址:https://open.weixin.qq.com

注册微信开放平台账号

  • 使用邮箱注册开放平台账号,作为登录帐号,邮箱必须未被微信开放平台注册、未被微信公众平台注册、未被微信私人帐号绑定;
  • 需要管理员的身份证号;

开发者资质认证

  • 认证有效期:一年,有效期最后三个月可申请年审即可续期;
  • 需要进行微信打款认证,打款费用300;

创建第三方平台

  • 一个开放平台账号可以创建5个“第三方平台”;
  • 平台图标必须为108*108像素的png图片,大小不能超过300KB;
  • 需要官网地址;
  • 授权发起页域名:必须从本域名内网页跳转到登录授权页,才可完成登录授权;
  • 授权测试公众号列表(原始ID列表):在全网发布之前,仅该列表内公众号才可进行授权,以便测试;
  • 授权事件接收URL:用于接收取消授权通知、授权成功通知、授权更新通知,也用于接收ticket,ticket是验证平台方的重要凭据;
  • 消息校验Token:在代替公众号或小程序接收到消息时,用此Token来校验消息;
  • 消息加解密Key:在代替公众号或小程序收发消息过程中使用;
  • 消息与事件接收URL:通过该URL接收公众号或小程序消息和事件推送,该参数按规则填写(需包含/$APPID$,如www.abc.com/$APPID$/callback),实际接收消息时$APPID$将被替换为公众号或小程序AppId;
  • 公众号开发域名:在代公众号做网页授权、调用JS SDK等网页开发工作时所用的域名,可填写3个,为了满足开发者管理需要,符合以下要求的下级域名也将生效:$APPID$.wx.abc.com($APPID$为公众号的AppID的替换符);(需要下载校验文件,并放置在项目根目录下)
  • 小程序服务器域名:已授权的小程序只能请求这里配置的域名,一共可以配置20个;
  • 小程序业务域名:应该是从小程序可跳转的H5域名,只能设置一个域名!(需要下载校验文件,并放置在项目根目录下)
  • 白名单IP地址列表:仅当开发者IP地址在该列表中时,才被允许调用相关接口。最多填写100个IP地址;
  • 修改平台审核成功后,仅对测试公众号生效,届时再提交“覆盖现网全网发布状态”并审核成功后,才可影响现网;
  • 创建成功后,第三方平台同样会生成AppID和AppSecret,AppSecret只能重置,不能查看

微信第三方平台全网发布

在第三方平台方创建成功并最终开发测试完毕,提交全网发布申请时,微信服务器会通过自动化测试的方式,检测服务的基础逻辑是否可用,在确保基础可用的情况下,才会允许公众号第三方平台提交全网发布。

详情见:全网发布接入检测说明

全网发布测试点

具体的测试方式是通过专门的测试公众号和测试小程序来授权给平台,发送指定的消息并验证返回。总结起来就是对第三方平台的如下功能进行测试:

  • 组件ticket正确接收;
  • 生成预授权码;
  • 获取授权code;
  • 授权;
  • 返回Api文本消息;
  • 返回普通文本消息;
  • 发送事件消息;
  • 取消授权;

相关接口

  • /callback/handleOpenPlatformNotify 用于接收取消授权通知、授权成功通知、授权更新通知以及ticket;

  • /callback/handleWxPublicAccountNotify/{appid} 处理事件消息等;

开发小程序模板

小程序模板开发的相关文档:开发第三方平台小程序

创建模板小程序

通过以下步骤创建模板小程序并开发代码模板:

  • 创建一个普通小程序;
  • 在开放平台后台“绑定小程序-添加开发小程序”将该小程序绑定为开发小程序,用于开发小程序模板;(一共可以添加10个)
  • 在本地通过小程序开发IDE,并指定appid为开发小程序的appid打开模板项目进行模板开发;
  • 在小程序代码的项目根目录中新建ext.json文件,并在其中自定义参数。例如:
    {
    "extEnable": true,
    "extAppid": "wxd7dc153d31ea****",
    "ext": {
      "name": "小程序调试",
      "attr": {
        "host": "***.com",
        "shopId": "1002"
      }
    },
    "extPages": {
    },
    "window":{
      "navigationBarTitleText": "【通过ext.json修改标题】"
    },
    "tabBar": {
    },
    "networkTimeout": {
    }
    }
    

    ext.json文件放在代码版本控制之外;

  • 开发完成后,通过IDE上传代码;
  • 在开放平台后台“小程序模板库-草稿箱”中可以看到最新上传的代码,将其从草稿箱中添加到模板库,将生成一个新的模板(通过TemplateID做区分);

小程序准备

以企业用户名义申请小程序,及对应的微信商户;至少准备好以下信息:

  • 小程序的appId;
  • appSecret;
  • 对应微信支付商户的merchantId;
  • 支付key;

小程序授权

  • 网页前端通过指定参数(shopId、redirectUrl)重定向到授权页面,例如:
    http://***.com/auth.html?shopId=1002&redirectUrl=http%3a%2f%2fwww.qq.com
    

    之所以这样做,是因为小程序授权页面有跳转域名的限制。

  • 授权页面使用获取的参数调用后端接口生成微信授权页地址,并直接跳转该地址;生成微信授权页的过程:授权流程技术说明
  • 小程序管理员扫描二维码进行授权;(授权成功后,若用户小程序已存在,则更新相关信息,否则新建小程序账户)
  • 完善小程序信息(即填入小程序appId、appSecret、wxMerchantId、wxMerchantKey);完善信息的时候仍然要填appId,是因为最终以用户手工填写的为准,这样在授权页(auth.html)的处理中可以省去鉴权的麻烦,也更容易发现用户授权与实际填写不一致的问题

小程序代码生成

上传代码

/rpc/ops/commitCode
{
  "shopId":"1002",
  "templateId":"4",
  "extJson":"{"extEnable":true,"extAppid":"wxd7dc153d31ea6833","ext":{"name":"小程序调试","attr":{"host":"miniapp-test.wemeshops.com","shopId":"1002"}},"extPages":{},"window":{"navigationBarTitleText":"【自动生成的小程序】"},"tabBar":{},"networkTimeout":{}}",
  "userVersion":"1.0.1",
  "userDesc":"新版本功能描述"
}

获取授权小程序帐号的可选类目

/rpc/ops/getCategory

返回结果:

{
  "errcode":"0",
  "errmsg":"ok",
  "category_list":[
    {
      "first_class":"商家自营",
      "second_class":"美妆/洗护",
      "first_id":"304",
      "second_id":"786"
    }
  ]
}

提交审核

/rpc/ops/submitAudit

{
  "shopId":"1002",
  "itemList":[
    {
      "address":"pages/home/home",
      "tag":"电商",
      "first_class":"商家自营",
      "second_class":"美妆/洗护",
      "first_id":"304",
      "second_id":"786",
      "title":"首页"
    }
  ]
}

返回:

{
  "errcode":"0",
  "errmsg":"ok",
  "auditid":"434707756"
}

查询最新一次提交的审核状态

/rpc/ops/getLatestAuditStatus

返回:

{
  "errcode":"0",
  "errmsg":"ok",
  "auditid":"434707756",
  "status":"2"
}

审核状态: 0:审核成功 1:审核失败 2:审核中


文章目录