美文网首页web 杂谈Web前端之路Web 前端开发
微信体制内,多公众号推送设计(兼容网站老用户系统)

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

作者: 高少辉_骚辉 | 来源:发表于2017-06-19 08:51 被阅读202次

问题描述

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

开发过的公众号

  • 健康青岛:服务号
  • 番禺民生卡:服务号
  • 阜阳健康在线:服务号
  • 南阳市第一人民医院:订阅号

公众号接入步骤概述

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

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

微信用户机制概述

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

OpenID

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

UnionID

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

使用场景是

  • 开发者拥有多个公众账号,需要把用户体系进行打通时候
  • 开发者需要进行,非微信环境下登入,网站的微信登入,app的微信登入等

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

公众号推送机制概述

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

推送类型分类

  • 模版消息
  • 客服消息
  • 被动推送

推送条件

  • 模版消息:
    • 限定 认证的服务号
    • 每日每个账号限值 10w 次
    • 每个号可以选择 25 种模版
    • 样式:见附录
  • 客服消息:
    • 在用户与公众号产生交互行为之后 48 h 之内
    • 交互行为类型:
      1. 用户发送信息
      2. 点击自定义菜单(仅有点击推事件、扫码推事件、扫码推事件且弹出“消息接收中”提示框这3种菜单类型是会触发客服接口的)
      3. 关注公众号
      4. 扫描二维码
      5. 支付成功
      6. 用户维权
  • 被动推送
    • 发生在用户与公众号发生交互行为之后的立即消息回复

推送说明

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

  • appId(公众号Id)
  • openId(用户在这个公众号上的Id)
  • 基础的 access_token(获取方式见附录)

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

推送方案选择

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

  • 消息推送为异步:用户在 h5 页面进行预约,在公众号得到消息
  • 消息内容,不适合为单一文本,不适合为图文消息,不合适为图片

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

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

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

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

实现

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

  • 公众号表:
    • appId: 公众号开发者 ID
    • appSecret: 开发者密码
    • WechartPublicId: 我们设定的公众号标识,可使用公众号的微信号(可用于获取公众号二维码)
    • WechartPublicName: 公众号名称
    • WechartPublic: 公众号类型,订阅号、服务号!用户查看是否有推送权限
  • 用户登入过的公众号表:(一个用户可在多个公众号登入)
    • appId
    • openId:每个公众号的每个用户的唯一标识
    • userId:我们之前定义的用户 ID,用于用户对应

在预约记录里需要添加一个字断 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

参数说明

  • grant_type 是 获取access_token填写client_credential
  • appid 是 第三方用户唯一凭证
  • secret 是 第三方用户唯一凭证密钥,即appsecret

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

相关文章

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

    问题描述 我们目前帮很多医院做公众号菜单,菜单跳转到我们的H5去预约挂号,预约挂号后我们需要把取号,停诊,等通知推...

  • D 02days提交#裂变增长实验室#

    ①设计你的承载体2个以上:微信公众号、微信个人号 ②让两个以上的承载体相互关联:关注微信公众号后推送文章链接+微信...

  • 关于微信公众号运营推广的一些小想法

    微信公众号是一个封闭的信息推送和交流系统。个人总结了一些关于微信公众号与QQ群、微博等社交系统的区别点: 1.微信...

  • 微信公众号开发-模板信息推送

    微信公众号开发-模板信息推送 image.png 我们是微信小程序用户在系统中进行用户绑定,但是需要推送信息到微信...

  • ZABBIX之旅(5.0版以上)

    【背景说明】运维系统使用时Zabbix工具,需添加微信公众号、微信企业号进行异常数据提醒的消息推送功能。 【系统环...

  • h5微信登录

    步骤: 说明: 微信授权登录 微信公众平台 微信 内置 浏览器内登录(一般用于移动端网站,公众号登录) 网页授权方...

  • 微信公众号消息推送实现

    微信公众号推送消息格式如下 TemplateParam公众号消息推送参数信息实体 WxTemplate公众号消息推...

  • 2016年该如何去做SEO?

    请各位读者添加一下作者的微信公众号,以后有新的文章,将在微信公众号直接推送给各位,非常感谢。 0.前言 今天在网站...

  • 我们似乎学到很多东西,但有用吗?

    原创: 老马 来源:【体制内读书】微信公众号 切勿浪费较多东西,去做“用较少的东西,同样可以做好的事情”。 ...

  • 2018-12-02循环裂变作业

    设计你的承载体2个以上(最好微信体系内的) 微信个人号 微信公众号 设计流量产品(边际成本近乎0,同时价值大) 本...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/ztqgqxtx.html