分类: 其他平台
2017-11-23 14:42:42
【摘要】
进行微信公众号开发时,微信带参数的二维码处理是比较重要的一块内容,但是微信接**互的数据结构比较多变。本文介绍使用微信公众号接口,申请带参数的二维码。
【正文】
1、封装微信二维码的信息:
微信接口地址:
$post_url = "";
其中TOKEN为每个微信公众号调取微信接口的凭证,获取详情见微信公众号开发手册。
整理数据:
$data = array(
$expire_seconds => 604800,
$action_name => "QRSCENE",
$action_info => array(
scene => array(
scene_id => 123,
);
);
);
微信接收的数据模式为JSON,所以对数据做处理:
$data = json_encode($data);
得到的JSON数据如下:
{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
参数说明
参数 | 说明 |
---|---|
expire_seconds | 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。 |
action_name | 二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值 |
action_info | 二维码详细信息 |
scene_id | 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000) |
scene_str | 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64 |
2、定义HTTP请求方法,发送数据到微信。
CURL方法:
public function posts( $post_data ,$post_url ){
curl_setopt( $this->ch, CURLOPT_URL, $post_url);
curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $this->ch, CURLOPT_HEADER, 0 );
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec( $this->ch );
return $result;
}
3、发送请求到微信接口,获取到二维码领取凭证。
$result = posts($data, $post_url);
$result = (array)$result;
$ticket = $result['ticket'];
最后获取到的微信二维码:
例:
生成了这个二维码之后,当扫码时,在微信推送给公众号服务器的事件中,就会包含之前申请二维码时上传的参数了。