微信公众平台开发-二维码生成

代码参考自慕课网视频:https://www.imooc.com/learn/621

代码GitHub地址:https://github.com/xiaoming000/wechat.git

 

为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

官方文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542

 

带参数的二维码二位码分为临时二维码和永久二维码,永久二维码有数量限制;

这里生成二维码对已关注的用户返回消息的实例;

 

<?php

require "public.php";


// http请求方式: POST
// URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
// POST数据格式:json
// POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

// 或者也可以使用以下POST数据创建字符串形式的二维码参数:
// {"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
$fun = new PublicFunction();
$access_token = $fun -> getWxAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$access_token;
$res = $fun -> http_curl($url);
// var_dump($access_token);
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
$arr = array(
    "expire_seconds" => 604800,
    "action_name" => "QR_SCENE",
    "action_info" => array(
        "scene" => array(
            "scene_id" => 123   
        )   
    )
);
$post_arr = json_encode($arr);
$res = $fun -> http_curl($url, 'post', 'json', $post_arr);
// var_dump($res);
// 通过ticket换取二维码
$ticket = $res['ticket'];
$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
// $res = $fun -> http_curl($url);
// var_dump($res);
echo '<img src="'.$url.'" />';
// 永久二维码就是post数组上不一样

 

二维码扫码已关注用户返回消息

官方文档地址(接收事件推送):https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454

//判断该数据包是否是订阅的事件推送
        if (strtolower($postObj->MsgType) == 'event') {
            //如果是关注 subscribe事件
            if (strtolower($postObj->Event) == 'subscribe') {
                $info = array(
                    'toUser' => $postObj->FromUserName,
                    'fromUser' => $postObj->ToUserName,
                    'time' => time(),
                    'msgType' => 'text',
                    'content' => '欢迎关注我的微信公众号!'
                );
                $response -> res_text($info);
            }// if end
            // 二维码关注,用户已关注事件
            if (strtolower($postObj->Event) == 'scan') {
                $info = array(
                    'toUser' => $postObj->FromUserName,
                    'fromUser' => $postObj->ToUserName,
                    'time' => time(),
                    'msgType' => 'text',
                    'content' => '二维码关注!'
                );
                $response -> res_text($info);
            }// if end
        }//if end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值