web 杂谈Web前端之路Web 前端开发

微信体制内,多公众号推送设计(兼容网站老用户系统)

2017-06-19  本文已影响202人  高少辉_骚辉

问题描述

我们目前帮很多医院做公众号菜单,菜单跳转到我们的H5去预约挂号,预约挂号后我们需要把取号,停诊,等通知推送给用户。

开发过的公众号

公众号接入步骤概述

接入微信公众平台开发,开发者需要按照如下步骤完成:

  1. 填写服务器配置:公众号后台填写
  2. 验证服务器地址的有效性
  3. 依据接口文档实现业务逻辑
  4. 文档链接

微信用户机制概述

微信给开发者提供了两套机制:

OpenID

每个用户对应每个公众号有一个唯一的 用户标识符

UnionID

每个用户对应每个微信开放平台账号的下的唯一的 用户标识符!弊端是一个开放平台只能绑定10个公众号。

使用场景是

OpenID 获取流程

文档入口:公众号开发文档 --> 微信网页开发 --> 微信网页授权

准备

在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头

具体流程

  1. 引导用户进入授权页面同意授权,获取code
    • 引导用户点击一个链接,https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    • 参数说明:
      • appid 是 公众号的唯一标识
      • redirect_uri 是 授权后重定向的回调链接地址,请使用urlEncode对链接进行处理
      • response_type 是 返回类型,请填写code
      • scope 是 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
      • state 否 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
      • #wechat_redirect 是 无论直接打开还是做页面302重定向时候,必须带此参数
    • 成功后,重定向到 redirect_uri/?code=CODE&state=STATE
  2. 通过code换取网页授权 access_token(与基础支持中的access_token不同)和 OpenId

公众号推送机制概述

文档入口:公众号开发文档 --> 消息管理 --> 发送消息-模版消息接口

推送类型分类

推送条件

推送说明

模版消息推送的时候需要准备

所以,需要在用户使用我们 h5 应用的时候保存的信息有:appId、openId

推送方案选择

根据需求,可得出我们推送要求:

由以上可得出模版消息较于适合于此类型推送!但是我们开发的医院当中有订阅号类型,所有如果选择模版消息作为我们的推送方案,则会导致我们需要开发两套标准!

而如果选择客服消息作为我们的推送方案的话,又会有两个问题限制:

  1. 48h 内的时间限制
  2. 样式限制

所以,我觉得为了用户体验服务号选择模版消息

实现

根据推送说明,我们可知现在我们的应用用户信息是不足以进行推送的。就此我们就需要新增两个表进行对应:

在预约记录里需要添加一个字断 origin(appId) 用于推送时在何公众号发起推送。

在整个微信环境下,url 需要一直带一个参数 WechartPublicId,公众号标识。

整体流程


查看大图

附录

模版消息样式

公众号获取二维码链接

普通二维码

链接:http://open.weixin.qq.com/qr/code/?username=csweigou

其中,参数 username 是公众号的微信号

带参二维码

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000)。

文档链接

基础接口调用凭证获取

文档入口:公众号开发文档 --> 开始开发 --> 获取 access_token

基础 access_token 是为唯一的全局调用凭据 需要 512B 大小,有效期为 2h (用于自定义菜单、群发消息接口验证凭证)

  1. 建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;
  2. 目前Access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;

获取 access_token 接口:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

成功后返回;
{"access_token":"ACCESS_TOKEN","expires_in":7200}

上一篇下一篇

猜你喜欢

热点阅读