微信开发-二维码-生成二维码容易忽略的错误

 

个人博客迁移至独立博客:https://blog.plcent.com/,欢迎大家访问

微信中支持生成临时二维码和永久二维码,这两者之间也有略微的区别,至于如何生成,怎么写,这个不在今天的讨论范围内,因为官方文档说的很明白。
今天要说的,是在生成带参数的二维码时,临时二维码和永久二维码之间场景值ID的差别

临时二维码:

post方式提交的json数据中包含scene参数,示例:

{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

在临时二维码中只支持scene_id参数,scene_id参数支持传送一个整型的数字,比如:123123123123,最大长度为32位的非零整数

为什么是非零呢?

当临时生成零时二维码时,如果场景值ID是整数,可以正常获取,哪怕你用字符串形式传递例如:

// 以下的方式都可以
// scene_id是数字
{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
// scene_id是字符串
{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": "123"}}}

但是:如果你传递的是字符串(无法转换成数字的字符串),场景值将会被替换成0,所有这就是为什么要场景值是非零的原因:

{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": "我是会被转换成0的场景值ID"}}}

永久二维码:

永久二维码不存在这个问题,因为支持字符串

 

posted @ 2016-01-20 16:18  caoruiy  阅读(1769)  评论(0编辑  收藏  举报