微信公眾號開發(十一)生成帶參數二維碼


公眾平台提供了生成帶參數二維碼的接口。使用該接口可以獲得多個帶不同場景值的二維碼,用戶掃描后,公眾號可以接收到事件推送。

目前有2種類型的二維碼:

1、臨時二維碼,是有過期時間的,最長可以設置為在二維碼生成后的30天(即2592000秒)后過期,但能夠生成較多數量。臨時二維碼主要用於帳號綁定等不要求二維碼永久保存的業務場景
2、永久二維碼,是無過期時間的,但數量較少(目前為最多10萬個)。永久二維碼主要用於適用於帳號綁定、用戶來源統計等場景。

用戶掃描帶場景值二維碼時,可能推送以下兩種事件:

如果用戶還未關注公眾號,則用戶可以關注公眾號,關注后微信會將帶場景值關注事件推送給開發者。

如果用戶已經關注公眾號,在用戶掃描后會自動進入會話,微信也會將帶場景值掃描事件推送給開發者。

獲取帶參數的二維碼的過程包括兩步,首先創建二維碼ticket,然后憑借ticket到指定URL換取二維碼。


獲取帶參數的二維碼的過程包括兩步,首先創建二維碼ticket,然后憑借ticket到指定URL換取二維碼。

每次創建二維碼ticket需要提供一個開發者自行設定的參數(scene_id:整數)或者(scene_str:字符串)。

1、創建臨時二維碼ticket
接口:https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
當參數為整數時,tmp_ticket_id.php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once("../Utils.php");
$data = '{
    "expire_seconds": 604800,
    "action_name": "QR_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 100
        }
    }
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
    ."access_token=".Utils::get_access_token();
$result = Utils::https_request($url, $data);
echo $result;
返回:
{
    "ticket": "gQHv8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyRW52QnMxeEZlcGkxLXFNNWhwMS0AAgQatrxZAwSAOgkA",
    "expire_seconds": 604800,
    "url": "http://weixin.qq.com/q/02EnvBs1xFepi1-qM5hp1-"
}
當參數為字符串時,tmp_ticket_str.php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once("../Utils.php");
$data = '{
    "expire_seconds": 604800,
    "action_name": "QR_STR_SCENE",
    "action_info": {
        "scene": {
            "scene_str": "abcd"
        }
    }
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
    ."access_token=".Utils::get_access_token();
$result = Utils::https_request($url, $data);
echo $result;
返回:
{
    "ticket": "gQEN8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyNGZPSnRXeEZlcGkxLWhQNTFwYzEAAgQRubxZAwSAOgkA",
    "expire_seconds": 604800,
    "url": "http://weixin.qq.com/q/024fOJtWxFepi1-hP51pc1"
}
2、創建永久二維碼ticket
當參數為數字時,never_ticket_id,php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once("../Utils.php");
$data = '{
    "action_name": "QR_LIMIT_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 111
        }
    }
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
    ."access_token=".Utils::get_access_token();
$result = Utils::https_request($url, $data);
echo $result;
返回:
{
    "ticket": "gQH88DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyYk44LXNGeEZlcGkxMDAwMHcwM2gAAgRiubxZAwQAAAAA",
    "url": "http://weixin.qq.com/q/02bN8-sFxFepi10000w03h"
}
當參數為字符串時,never_ticket_str.php
<?php
@header('Content-type: text/plain;charset=UTF-8');
require_once("../Utils.php");
$data = '{
    "action_name": "QR_LIMIT_STR_SCENE",
    "action_info": {
        "scene": {
            "scene_str": "haha"
        }
    }
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
    ."access_token=".Utils::get_access_token();
$result = Utils::https_request($url, $data);
echo $result;
返回:
{
    "ticket": "gQHf8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydmhZenQzeEZlcGkxMDAwMHcwN1EAAgQGu7xZAwQAAAAA",
    "url": "http://weixin.qq.com/q/02vhYzt3xFepi10000w07Q"
}
3、通過ticket換取二維碼圖片
接口:https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET,TICKET記得進行UrlEncode
該操作無需登錄或授權即可調用,也就是說可以直接在瀏覽器中打開該鏈接獲取圖片。
例如打開以上永久二維碼的id圖片:
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQH88DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyYk44LXNGeEZlcGkxMDAwMHcwM2gAAgRiubxZAwQAAAAA



打開以上永久二維碼str圖片
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHf8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydmhZenQzeEZlcGkxMDAwMHcwN1EAAgQGu7xZAwQAAAAA




4、掃碼
調用微信掃一掃功能,掃描上面的二維碼,如果已關注會發送以下XML數據給開發者,並跳轉到公眾號,開發者此時不能回復空字符串,否則會報錯。
<xml>
    <ToUserName>
        <![CDATA[gh_6b9aa8a6f1e2]]>
    </ToUserName>
    <FromUserName>
        <![CDATA[o4WmZ0h-4huBUVQUczx2ezaxIL9c]]>
    </FromUserName>
    <CreateTime>1505542211</CreateTime>
    <MsgType>
        <![CDATA[event]]>
    </MsgType>
    <Event>
        <![CDATA[SCAN]]>
    </Event>
    <EventKey>
        <![CDATA[haha]]>
    </EventKey>
    <Ticket>
        <![CDATA[gQHf8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydmhZenQzeEZlcGkxMDAwMHcwN1EAAgQGu7xZAwQAAAAA]]>
    </Ticket>
</xml>
如果用戶未關注,掃描后會彈出以下界面讓用戶關注
點擊關注后會推送給開發者如下消息,事件為subscribe關注事件,EventKey為qrscene_  +二維碼參數值。
<xml>
    <ToUserName>
        <![CDATA[gh_6b9aa8a6f1e2]]>
    </ToUserName>
    <FromUserName>
        <![CDATA[o4WmZ0h-4huBUVQUczx2ezaxIL9c]]>
    </FromUserName>
    <CreateTime>1505542651</CreateTime>
    <MsgType>
        <![CDATA[event]]>
    </MsgType>
    <Event>
        <![CDATA[subscribe]]>
    </Event>
    <EventKey>
        <![CDATA[qrscene_haha]]>
    </EventKey>
    <Ticket>
        <![CDATA[gQHf8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydmhZenQzeEZlcGkxMDAwMHcwN1EAAgQGu7xZAwQAAAAA]]>
    </Ticket>
</xml>









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM