国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

微信公眾平臺開發教程(六)獲取個性二維碼的實例

2019-11-19 18:43:04
字體:
來源:轉載
供稿:網友

一、功能介紹

在進行推廣時,我們可以告訴對方,我們的微信公眾賬號是什么,客戶可以去搜索,然后關注。二維碼給我們提供了極大的便捷,只要簡單一掃描,即可關注。

如果已經關注過,立刻跳入對話畫面。在我們進行推廣時,不再是簡陋的文字,可以是一個有個性的二維碼,想必會很生動。

微信對二維碼提供了很好的支持,而且還可以根據需要生成不同場景的二維碼。下面我們將介紹如何獲取和使用二維碼。

注意:限服務號,且進行了微信認證,費用300

二、相關接口

為了滿足用戶渠道推廣分析的需要,公眾平臺提供了生成帶參數二維碼的接口。使用該接口可以獲得多個帶不同場景值的二維碼,用戶掃描后,公眾號可以接收到事件推送。

目前有2種類型的二維碼,分別是臨時二維碼和永久二維碼,前者有過期時間,最大為1800秒,但能夠生成較多數量,后者無過期時間,數量較少(目前參數只支持1--1000)。兩種二維碼分別適用于帳號綁定、用戶來源統計等場景。

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

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

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

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

創建二維碼ticket

每次創建二維碼ticket需要提供一個開發者自行設定的參數(scene_id),分別介紹臨時二維碼和永久二維碼的創建二維碼ticket過程。

臨時二維碼請求說明

http請求方式: POSTURL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST數據格式:jsonPOST數據例子:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

永久二維碼請求說明

http請求方式: POSTURL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST數據格式:jsonPOST數據例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

參數說明

參數 說明
expire_seconds 該二維碼有效時間,以秒為單位。 最大不超過1800。
action_name 二維碼類型,QR_SCENE為臨時,QR_LIMIT_SCENE為永久
action_info 二維碼詳細信息
scene_id 場景值ID,臨時二維碼時為32位整型,永久二維碼時最大值為1000

返回說明

正確的Json返回結果:

{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}

參數 說明
ticket 獲取的二維碼ticket,憑借此ticket可以在有效時間內換取二維碼。
expire_seconds 二維碼的有效時間,以秒為單位。最大不超過1800。

錯誤的Json返回示例:

{"errcode":40013,"errmsg":"invalid appid"}

全局返回碼說明

使用網頁調試工具調試該接口 

通過ticket換取二維碼

獲取二維碼ticket后,開發者可用ticket換取二維碼圖片。請注意,本接口無須登錄態即可調用。

請求說明
HTTP GET請求(請使用https協議)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

返回說明

ticket正確情況下,http 返回碼是200,是一張圖片,可以直接展示或者下載。
HTTP頭(示例)如下:

Accept-Ranges:bytesCache-control:max-age=604800Connection:keep-aliveContent-Length:28026Content-Type:image/jpgDate:Wed, 16 Oct 2013 06:37:10 GMTExpires:Wed, 23 Oct 2013 14:37:10 +0800Server:nginx/1.4.1

錯誤情況下(如ticket非法)返回HTTP錯誤碼404。

三、具體實現

 依然基于之前的機器人案例進行功能添加,直接看代碼。

/// <summary> /// 二維碼管理者 /// </summary> public class DimensionalCodeManager { /// <summary> /// 臨時二維碼地址 /// </summary> /// 使用string.format時,報:字符串格式錯誤,因為其中有{ //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> /// 根據場景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> /// 創建臨時二維碼 /// </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> /// 創建臨時二維碼 /// </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)); } }

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵丘县| 温泉县| 常熟市| 阿鲁科尔沁旗| 将乐县| 龙州县| 务川| 旬阳县| 安溪县| 卫辉市| 师宗县| 鲁甸县| 兴业县| 合山市| 石狮市| 台中县| 安岳县| 安福县| 都安| 波密县| 达拉特旗| 德江县| 那曲县| 苏尼特左旗| 波密县| 合作市| 信宜市| 建水县| 陈巴尔虎旗| 沂南县| 宿州市| 拉萨市| 富锦市| 准格尔旗| 弥渡县| 马公市| 弥渡县| 甘德县| 达孜县| 郎溪县| 离岛区|