zhjx922 De Blog

微信公众号(服务号)开发注意事项

微信公众号(服务号)已经推出很久了,但是第一次接触的人,或多或少会走一些弯路,下面是我在开发中见到的一些问题,也给自己做个备份

万事开头难

其实只要是针对第三方平台的开发,第一件要做的事儿不是开干,而是先了解它。

一些功能点的使用场景

带参数的二维码

如果要对一些活动的二维码做标记(来源、场景、关注绑定等),关注\扫描该二维码服务端会同时收到二维码中携带的参数。

个性化菜单

可用根据用户的属性(标签、性别、手机系统、地区、语言)显示不同的菜单,可以和带参数的二维码结合使用。

客服消息

当用户主动和公众号有一些交互(发信息、点击菜单、关注公众号等)时,在48小时内,可以主动给用户推送消息。

JS-SDK

只要是在微信里面传播的页面,绝对离不开微信提供的强大的SDK功能,支持:分享内容自定义、图像能力(拍照、选图等)、音频能力(录音、播放等),具体的功能自己挖掘。

遇到过的一些问题

  • 测试环境:必须关注测试服务号,否则你会碰到各种异常问题不能自拔。
  • 测试环境:模板数量有限制,最多10条,多了就得删。
  • 测试环境:appID和生产环境要区分开,不要混淆(当然,这个和mysql等配置同理)。
  • 测试环境:不要使用生产环境的appID生成access_token(生产环境的token会失效,导致错误)
  • 测试环境:只支持配置一个js安全域名(线上是3个)。
  • 测试环境:授权回调页面域名隐藏在体验接口权限表中,仔细找。
  • 接收到微信的所有请求必须正常回复(输出一个success或者空),否则微信会认为处理失败,重试N次。
  • access_token放到分布式cache中,不要等失效,通过定时脚本在过期前更新。
  • 区分清楚ToUserName和FromUserName,to是你,from是用户(用户的open_id)~
  • 调用js-sdk必须配置js安全域名。
  • 用户授权分两种,隐式和显式。隐式:只能获取到用户open_id,如果不关注公众号,不能获取用户信息。显式:只要用户点击确定,就可以获取用户昵称等信息。
  • 调用所有js-sdk都必须通过接口获取签名数据(每次调用都需要:比如动态更改了分享标题等)
  • 前端页面使用vue.js类框架时,全部通过api获取数据,js-sdk签名中的url需要通过$_SERVER['HTTP_REFERER']获取,而不是$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
  • 带参数的二维码分为永久和临时两种,永久的数量有限,临时的数量相对较多。比如和单个用户属性相关的二维码使用临时的二维码优先。
  • 通过js-sdk上传的素材(音频、图片等),微信先会给一个media_id(通常有效期为3天),当我们使用的时候通过media_id下载下来。
  • 模板消息,推送次数超多,但是必须使用模板库的一些固定格式内容,自己申请成功率极低。
  • 页面启用https后,页面的资源也必须使用https,当然这个不止微信里面是这样。

不是总结的总结

工欲善其事必先利其器,无论做什么,学什么,都得先把它的文档看一遍,工具安装一个。直接上手整,一脸懵逼浪费时间不说,活儿能不能干好都是个问题。

大家还遇到过什么问题或者坑,欢迎留言分享~

zhjx922 wechat
欢迎关注二维码,一起交流学习!