微信公众号开发

1、ACCESS TOKEN 和SESSION KEY的区别

accessToken 获取的是用户相对公开的信息 如是否订阅了公众号 有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

而sessionKey 相对私密的信息是,获取用户授权标示需要用户传code才能得到 比如解码用户手机号

2、根据unionid无法直接判断是否关注了公众号

似乎目前三种方案
1,拉取全部关注的用户 然后去找是否关注
2,配置服务器配置 用户取消关注、新关注会默认发xml到服务器地址 进行处理
3,发模板消息 根据返回值判断是否关注

3、服务器配置的作用

就是用户发消息、关注事件等 除了发到微信服务器外 还会通知开发者自己的服务器
在这里插入图片描述
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html

微信公众号消息的加密与解密

1 服务器配置设置加密

登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
然后可选择安全模式 兼容模式 明文模式 。兼容模式会同时发送加密和明文消息(比明文模式多了一个encrydata标签段)

2 消息发送格式

参数类型

GET参数:通过get从url中获取:signature、timestamp nonce echostr 是公众号加密的参数,字段详见微信官方解释

POST参数:这里的post和普通的post似乎不太一样,php的post get似乎无法接受xml数据(PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型)

获取方法1:file_get_contents(‘php://input’);

获取方法2:$GLOBALS[“HTTP_RAW_POST_DATA”],但是这个方法也同时存在问题。要通过Globals来获取数据,php.ini中的register_globals必须设置为ON,在低版本的php中register数据默认为开启,但是高版本中,默认为关闭状态,这是因为,设置为ON后,表单提交过来的变量,会自动变成全局变量,也就是说在地址栏输入的变量,都变成全局变量,这个是非常不安全的。

post数据体格式

明文xml格式:

<xml>
<ToUserName></ToUserName>
<FromUserName></FromUserName>
<CreateTime>1411035097</CreateTime>
<MsgType></MsgType>
<Content></Content>
<MsgId>6060349595123187712</MsgId>
</xml>

安全模式xml格式,解密后和明文格式一致

<xml>
<ToUserName></ToUserName>
<Encrypt></Encrypt>
</xml>

兼容模式xml格式

<xml>
<ToUserName></ToUserName>
<FromUserName></FromUserName>
<CreateTime>1411035097</CreateTime>
<MsgType></MsgType>
<Content></Content>
<MsgId>6060349595123187712</MsgId>
<Encrypt></Encrypt>
</xml>

其中ToUserName无论何种模式都一定会有
在这里插入图片描述

常见错误!!

  • 解密时:从php7.0 升级到 php7.2废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展),而微信官方提供的demo用了这个拓展,请使用openssl解密,网上搜或者用自己写好的代码
  • 使用微信接口测试工具,ToUserId 那里是你的appid 不是开发者的openid 微信写错了
  • 测试的时候 如果遇到一些数据库问题 或者php报错 会出现500问题,导致根本读不到调试信息,所以里面的方法 封装成函数 自己测试没问题再用那个接口测试工具。或者看日志
  • 普通的print_r也能调试 不用先转成xml 拿不到信息是因为500的问题
  • 微信接口测试工具那 有大写有小写 比如订阅是小写 打开公众号是大写

5、模板消息和订阅通知区别

订阅类似小程序那种,长期消息需要公共领域才给开
模板消息只要你关注了 就能发 不限制单个用户的条数
但是模板消息似乎可能以后下掉 但是现在停滞了 短期可能不会改

other

二维码能否扫描会受到图案完整度、图案复杂度、颜色对比度、扫描距离、环境光线、扫描设备分辨率等因素的影响。常用扫描设备(如手机、扫码枪等)都能快速识别的二维码内容长度为150字以内,且有一定范围的容错率。二维码图案即使被遮挡了一小部分,也可以正常扫描。
超长内容的二维码图案会非常复杂,需要足够清晰的大图才能完整展示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值