首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

微信開發:生成帶參數二維碼(臨時/永久)完整流程與應用場景

     編輯:PHP 綜合知識

核心概念

  • Scene ID/Str:開發者自定義的場景值,掃碼後通過事件推送回傳,用於標識具體業務場景。
  • Ticket:憑證,用於換取二維碼圖片,有一定有效期。
  • 兩類二維碼:
    • 臨時二維碼:有效期最大 1800 秒(30 分鐘),數量無限制,適合營銷活動。
    • 永久二維碼:無過期時間,數量限制(目前 1~100000),適合戶外物料、店員推廣。

創建 Ticket 請求示例

臨時二維碼

POST https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=ACCESS_TOKEN
{
    "expire_seconds": 1800,
    "action_name": "QR_SCENE",
    "action_info": { "scene": { "scene_id": 123 } }
}

永久二維碼(數字場景值)

{
    "action_name": "QR_LIMIT_SCENE",
    "action_info": { "scene": { "scene_id": 123 } }
}

永久二維碼(字符串場景值)

{
    "action_name": "QR_LIMIT_STR_SCENE",
    "action_info": { "scene": { "scene_str": "promo_2024_q4" } }
}

響應示例

{
    "ticket": "gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==",
    "expire_seconds": 1800,
    "url": "https://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"
}

換取二維碼圖片

GET 請求:https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
注意:ticket 需 urlencode 後拼接。

掃碼事件推送數據結構

<xml>
  <ToUserName><![CDATA[gh_xxx]]></ToUserName>
  <FromUserName><![CDATA[oxxx]]></FromUserName>
  <CreateTime>1429416610</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[SCAN]]></Event>       <!-- 或 subscribe -->
  <EventKey><![CDATA[123]]></EventKey>      <!-- 場景值 -->
  <Ticket><![CDATA[gQH47jo...]]></Ticket>
</xml>

典型應用場景

場景Scene 設計業務邏輯
渠道推廣統計渠道代碼(如 channel_01)掃碼關注後記錄來源,生成渠道效果報表
猜謎/答題游戲謎題 ID掃碼直接返回謎底,免去輸入
掃碼領紅包活動 ID + 用戶標識驗證資格後發放紅包,防刷
設備綁定設備序列號掃碼綁定設備到用戶賬號

PHP 實現片段

function createQrTicket($access_token, $scene_id, $type = 'permanent') {
    $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$access_token}";
    $data = [
        'action_name' => $type === 'temp' ? 'QR_SCENE' : 'QR_LIMIT_SCENE',
        'action_info' => ['scene' => ['scene_id' => $scene_id]]
    ];
    if ($type === 'temp') $data['expire_seconds'] = 1800;

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    return json_decode(curl_exec($ch), true);
}

總結

帶參數二維碼是連接線下場景與線上業務的關鍵橋樑,靈活運用 Scene 值可實現精準營銷、用戶分層、設備綁定等豐富玩法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved