最近公司的一款产品需要用到微信小程序的带参数的二维码。虽然微信提供了现成的API,但是整个过程中有非常多的坑。
微信的官方文档:获取二维码 · 小程序
获取Access Token
获取二维码的接口需要用到应用的Access Token。只需要向微信的提供的接口发送AppID
和AppSecret
即可获得Access Token。每个Access Token的有效期为7200秒,我们的方案是获取到Access Token之后将其写入Redis并设置7200秒的过期时间。
获取二维码
接下来我们向微信的获取二维码接口使用GET发送access_token
,使用POST发送path
(小程序页面的URI)和width
(二维码宽度)。
需要注意的是,path
和width
参数需要用json_encode()
封装为json后发送,而不能直接用POST作为表单发送。
存储二维码
当我完成上一步骤之后,我得到了这么一堆东西:
这塔马什么鬼?
经过观察和大佬的指点,得出这其实是二维码图片的二进制数据流。注意看图中第一行有个JFIF字样,如果你用文本编辑器打开一个jpg文件,会发现里面也一样会有JFIF字样。
我们只要将它写入到服务器硬盘就可以了。代码非常简单:
$fp = fopen ( 'qr_code.jpg', 'w+' ); fwrite ( $fp, $curl_result ); fclose ( $fp );
发表回复/Leave a Reply