前言:公众号开发,难免遇到二维码,再此做个记录
第一:到 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 去看一下文档,选择账户管理,里面有生成带参数二维码的说明
第二:二维码分为零时和永久
共同点:不管是永久还是临时,都是请求同一个地址
https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
其中token是调用微信获得
1、永久格式
请求参数:
数值型:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}
字符串型:{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
请求格式:post
php请求示例:
请求之后得到的数据格式(临时,永久相同):
{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
3sUw==","expire_seconds":60,"url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"}
到此得到了二维码信息,但二维码图片还没有。ticket:根据该数据到微信获取二维码图片。expire_seconds:二维码有效期(永久二维码没有)。url:扫描二维码解析之后的地址
PS:如果要自己利用第三方的工具类,或者插件生成二维码,到此就可以了,把url作为内容拿去生成二维码
获取二维码图片:
请求地址(get):
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
到此永久二维码结束。
2、临时二维码
请求参数类型
数值:
{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
字符串:
{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
同上post请求 https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN 地址并传递参数过去
PS: 是字符串就传字符串是数值就传数值
请求之后同上得到
{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
3sUw==","expire_seconds":60,"url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"}
一串数据
转换数据取出 ticket
调用地址并传递ticket
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
以get请求获取图片信息。
之后保存就行
二维码加水印:
1、通过上面获取到二维码并保存之后,继续加载logo
通过 getimgagesize(路径)获取到保存的二维码和log图片信息,得到图片数据。
2、删除原图
3、利用imagecopymerge()函数合并生成图片
将 log 图像中坐标从0开始到0结束,高为$logoWidth的部分拷贝到$logox和$logoy的地方,合并程度为100
说明:0到0标识logo图片全部加载,不用裁剪。合并程度为0到100 如果是0就什么都没做,100完全重叠,类似透明的感觉。
到此二维码结束。