?一、功能介紹
在進(jìn)行推廣時,我們可以告訴對方,我們的微信公眾賬號是什么,客戶可以去搜索,然后關(guān)注。二維碼給我們提供了極大的便捷,只要簡單一掃描,即可關(guān)注。
如果已經(jīng)關(guān)注過,立刻跳入對話畫面。在我們進(jìn)行推廣時,不再是簡陋的文字,可以是一個有個性的二維碼,想必會很生動。
微信對二維碼提供了很好的支持,而且還可以根據(jù)需要生成不同場景的二維碼。下面我們將介紹如何獲取和使用二維碼。?
注意:限服務(wù)號,且進(jìn)行了微信認(rèn)證,費(fèi)用300
?
二、相關(guān)接口
為了滿足用戶渠道推廣分析的需要,公眾平臺提供了生成帶參數(shù)二維碼的接口。使用該接口可以獲得多個帶不同場景值的二維碼,用戶掃描后,公眾號可以接收到事件推送。
目前有2種類型的二維碼,分別是臨時二維碼和永久二維碼,前者有過期時間,最大為1800秒,但能夠生成較多數(shù)量,后者無過期時間,數(shù)量較少(目前參數(shù)只支持1--1000)。兩種二維碼分別適用于帳號綁定、用戶來源統(tǒng)計等場景。
用戶掃描帶場景值二維碼時,可能推送以下兩種事件:
如果用戶還未關(guān)注公眾號,則用戶可以關(guān)注公眾號,關(guān)注后微信會將帶場景值關(guān)注事件推送給開發(fā)者。
如果用戶已經(jīng)關(guān)注公眾號,在用戶掃描后會自動進(jìn)入會話,微信也會將帶場景值掃描事件推送給開發(fā)者。
獲取帶參數(shù)的二維碼的過程包括兩步,首先創(chuàng)建二維碼ticket,然后憑借ticket到指定URL換取二維碼。
創(chuàng)建二維碼ticket
每次創(chuàng)建二維碼ticket需要提供一個開發(fā)者自行設(shè)定的參數(shù)(scene_id),分別介紹臨時二維碼和永久二維碼的創(chuàng)建二維碼ticket過程。
臨時二維碼請求說明
http請求方式:?POST URL:?https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST數(shù)據(jù)格式:json POST數(shù)據(jù)例子:{"expire_seconds":?1800,?"action_name":?"QR_SCENE",?"action_info":?{"scene":?{"scene_id":?123}}}
?
永久二維碼請求說明
http請求方式:?POST URL:?https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST數(shù)據(jù)格式:json POST數(shù)據(jù)例子:{"action_name":?"QR_LIMIT_SCENE",?"action_info":?{"scene":?{"scene_id":?123}}}
?
參數(shù)說明
參數(shù) | 說明 |
---|---|
expire_seconds | 該二維碼有效時間,以秒為單位。 最大不超過1800。 |
action_name | 二維碼類型,QR_SCENE為臨時,QR_LIMIT_SCENE為永久 |
action_info | 二維碼詳細(xì)信息 |
scene_id | 場景值ID,臨時二維碼時為32位整型,永久二維碼時最大值為1000 |
返回說明
正確的Json返回結(jié)果:
{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}
?
參數(shù) | 說明 |
---|---|
ticket | 獲取的二維碼ticket,憑借此ticket可以在有效時間內(nèi)換取二維碼。 |
expire_seconds | 二維碼的有效時間,以秒為單位。最大不超過1800。 |
錯誤的Json返回示例:
{"errcode":40013,"errmsg":"invalid?appid"}
?
全局返回碼說明
使用網(wǎng)頁調(diào)試工具調(diào)試該接口
通過ticket換取二維碼
獲取二維碼ticket后,開發(fā)者可用ticket換取二維碼圖片。請注意,本接口無須登錄態(tài)即可調(diào)用。
請求說明
HTTP?GET請求(請使用https協(xié)議) https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
返回說明
ticket正確情況下,http 返回碼是200,是一張圖片,可以直接展示或者下載。
HTTP頭(示例)如下:
Accept-Ranges:bytes Cache-control:max-age=604800Connection:keep-alive Content-Length:28026Content-Type:image/jpg Date:Wed,?16?Oct?2013?06:37:10?GMT Expires:Wed,?23?Oct?2013?14:37:10?+0800Server:nginx/1.4.1
?
錯誤情況下(如ticket非法)返回HTTP錯誤碼404。
三、具體實(shí)現(xiàn)
?依然基于之前的機(jī)器人案例進(jìn)行功能添加,直接看代碼。
///?<summary> ????///?二維碼管理者 ????///?</summary> ????public?class?DimensionalCodeManager ????{ ????????///?<summary> ????????///?臨時二維碼地址 ????????///?</summary> ????????///?使用string.format時,報:字符串格式錯誤,因?yàn)槠渲杏衶 ????????//private?const?string?TEMP_URL?=?"{\"expire_seconds\":?1800,?\"action_name\":?\"QR_SCENE\",?\"action_info\":?{\"scene\":?{\"scene_id\":?{0}}}}"; ????????///?<summary> ????????///?解決辦法,將原有字符串中的一個{用兩個{代替 ????????///?</summary> ????????private?const?string?TEMP_JSON_DATA?=?"{{\"expire_seconds\":?1800,?\"action_name\":?\"QR_SCENE\",?\"action_info\":?{{\"scene\":?{{\"scene_id\":?{0}}}}}}}"; ????????///?<summary> ????????///?永久二維碼地址 ????????///?</summary> ????????private?const?string?PERMANENT_URL?=?"{{\"action_name\":?\"QR_LIMIT_SCENE\",?\"action_info\":?{{\"scene\":?{{\"scene_id\":?{0}}}}}}}"; ????????///?<summary> ????????///?獲取ticket的URL ????????///?</summary> ????????private?const?string?GET_TICKET_URL?=?"?https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}"; ????????///?<summary> ????????///?獲取二維碼URL ????????///?</summary> ????????private?const?string?GET_CODE_URL?=?"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={0}"; ????????///?<summary> ????????///?根據(jù)場景ID獲取ticket ????????///?</summary> ????????///?<param name="sceneID">場景ID</param> ????????///?<param name="isTemp">是否是臨時二維碼</param> ????????///?<returns></returns> ????????private?static?string?GetTicket(int?sceneID,?bool?isTemp) ????????{ ????????????string?result?=?null; ????????????string?data?=?string.Empty; ????????????if?(isTemp) ????????????{ ????????????????data?=?string.Format(TEMP_JSON_DATA,?sceneID.ToString()); ????????????} ????????????else ????????????{ ????????????????if?(sceneID?>?0?&&?sceneID?<=?1000) ????????????????{ ????????????????????data?=?string.Format(PERMANENT_URL,?sceneID); ????????????????} ????????????????else ????????????????{ ????????????????????//scene_id不合法 ????????????????????return?null; ????????????????} ????????????} ????????????string?ticketJson?=?HttpUtility.GetData(string.Format(GET_TICKET_URL,Context.AccessToken)); ????????????XDocument?doc?=?XmlUtility.ParseJson(ticketJson,?"root"); ????????????XElement?root?=?doc.Root; ????????????if?(root?!=?null) ????????????{ ????????????????XElement?ticket?=?root.Element("ticket"); ????????????????if?(ticket?!=?null) ????????????????{ ????????????????????result?=?ticket.Value; ????????????????} ????????????} ????????????return?result; ????????} ????????///?<summary> ????????///?創(chuàng)建臨時二維碼 ????????///?</summary> ????????///?<param name="sceneID">場景id,int類型</param> ????????///?<returns></returns> ????????public?static?string?GenerateTemp(int?sceneID) ????????{ ????????????string?ticket?=?GetTicket(sceneID,true); ????????????if?(ticket?==?null) ????????????{ ????????????????return?null; ????????????} ????????????return?HttpUtility.GetData(string.Format(GET_CODE_URL,?ticket)); ????????} ????????///?<summary> ????????///?創(chuàng)建臨時二維碼 ????????///?</summary> ????????///?<param name="sceneID">場景id,int類型</param> ????????///?<returns></returns> ????????public?static?string?GeneratePermanent(int?sceneID) ????????{ ????????????string?ticket?=?GetTicket(sceneID,?false); ????????????if?(ticket?==?null) ????????????{ ????????????????return?null; ????????????} ????????????return?HttpUtility.GetData(string.Format(GET_CODE_URL,?ticket)); ????????} ????}
?
更多微信公眾平臺開發(fā)獲取個性二維碼?相關(guān)文章請關(guān)注PHP中文網(wǎng)!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)