PHP获取微信小程序的带参数二维码




最近公司的一款产品需要用到微信小程序的带参数的二维码。虽然微信提供了现成的API,但是整个过程中有非常多的坑。
微信的官方文档:获取二维码 · 小程序

获取Access Token

获取二维码的接口需要用到应用的Access Token。只需要向微信的提供的接口发送AppIDAppSecret即可获得Access Token。每个Access Token的有效期为7200秒,我们的方案是获取到Access Token之后将其写入Redis并设置7200秒的过期时间。

获取二维码

接下来我们向微信的获取二维码接口使用GET发送access_token,使用POST发送path(小程序页面的URI)和width(二维码宽度)。
需要注意的是,pathwidth参数需要用json_encode()封装为json后发送,而不能直接用POST作为表单发送。

存储二维码

当我完成上一步骤之后,我得到了这么一堆东西:

这塔马什么鬼?
经过观察和大佬的指点,得出这其实是二维码图片的二进制数据流。注意看图中第一行有个JFIF字样,如果你用文本编辑器打开一个jpg文件,会发现里面也一样会有JFIF字样。
我们只要将它写入到服务器硬盘就可以了。代码非常简单:

$fp = fopen ( 'qr_code.jpg', 'w+' );
fwrite ( $fp, $curl_result );
fclose ( $fp );



Posted

in

by

Comments

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.