為了識別用戶,每個用戶針對每個公眾號會產生一個安全的OpenID,如果需要在多公眾號、移動應用之間做用戶共通,則需前往微信開放平台,將這些公眾號和應用綁定到一個開放平台賬號下,綁定后,一個用戶雖然對多個公眾號和應用有多個不同的OpenID,但他對所有這些同一開放平台賬號下的公眾號和應用,只有一個UnionID,可以在用戶管理-獲取用戶基本信息(UnionID機制)文檔了解詳情。
用戶向公眾號發送消息時,公眾號方收到的消息發送者是一個OpenID,是使用用戶微信號加密后的結果,每個用戶對每個公眾號有一個唯一的OpenID。
此外,由於開發者經常有需在多個平台(移動應用、網站、公眾帳號)之間共通用戶帳號,統一帳號體系的需求,微信開放平台(open.weixin.qq.com)提供了UnionID機制。開發者可通過OpenID來獲取用戶基本信息,而如果開發者擁有多個應用(移動應用、網站應用和公眾帳號,公眾帳號只有在被綁定到微信開放平台帳號下后,才會獲取UnionID),可通過獲取用戶基本信息中的UnionID來區分用戶的唯一性,因為只要是同一個微信開放平台帳號下的移動應用、網站應用和公眾帳號,用戶的UnionID是唯一的。換句話說,同一用戶,對同一個微信開放平台帳號下的不同應用,UnionID是相同的。
公眾平台以access_token為接口調用憑據,來調用接口,所有接口的調用需要先獲取access_token,access_token在2小時內有效,過期需要重新獲取,但1天內獲取次數有限,開發者需自行存儲,詳見獲取接口調用憑據(access_token)文檔。
公眾平台接口調用僅支持80端口。
1、公眾號消息會話
1)群發消息:公眾號可以以一定頻次(訂閱號為每天1次,服務號為每月4次),向用戶群發消息,包括文字消息、圖文消息、圖片、視頻、語音等。 2)被動回復消息:在用戶給公眾號發消息后,微信服務器會將消息發到開發者預先在開發者中心設置的服務器地址(開發者需要進行消息真實性驗證),公眾號可以在5秒內做出回復,可以回復一個消息,
也可以回復命令告訴微信服務器這條消息暫不回復。被動回復消息可以設置加密(在公眾平台官網的開發者中心處設置,設置后,按照消息加解密文檔來進行處理。其他3種消息的調用因為是API調用而不是對請求的返回,所以不需要加解密)。 3)客服消息:在用戶給公眾號發消息后的48小時內,公眾號可以給用戶發送不限數量的消息,主要用於客服場景。用戶的行為會觸發事件推送,某些事件推送是支持公眾號據此發送客服消息的,詳見微信推送消息與事件說明文檔。 4)模板消息:在需要對用戶發送服務通知(如刷卡提醒、服務預約成功通知等)時,公眾號可以用特定內容模板,主動向用戶發送消息。
2、公眾號內網頁
1)網頁授權獲取用戶基本信息:通過該接口,可以獲取用戶的基本信息(獲取用戶的OpenID是無需用戶同意的,獲取用戶的基本信息則需用戶同意) 2)微信JS-SDK:是開發者在網頁上通過JavaScript代碼使用微信原生功能的工具包,開發者可以使用它在網頁上錄制和播放微信語音、監聽微信分享、上傳手機本地圖片、拍照等許多能力。
公眾號每次調用接口時,可能獲得正確或錯誤的返回碼,開發者可以根據返回碼信息調試接口,排查錯誤。
全局返回碼說明如下:
返回碼 | 說明 |
---|---|
-1 | 系統繁忙,此時請開發者稍候再試 |
0 | 請求成功 |
40001 | 獲取access_token時AppSecret錯誤,或者access_token無效。請開發者認真比對AppSecret的正確性,或查看是否正在為恰當的公眾號調用接口 |
40002 | 不合法的憑證類型 |
40003 | 不合法的OpenID,請開發者確認OpenID(該用戶)是否已關注公眾號,或是否是其他公眾號的OpenID |
40004 | 不合法的媒體文件類型 |
40005 | 不合法的文件類型 |
40006 | 不合法的文件大小 |
40007 | 不合法的媒體文件id |
40008 | 不合法的消息類型 |
40009 | 不合法的圖片文件大小 |
40010 | 不合法的語音文件大小 |
40011 | 不合法的視頻文件大小 |
40012 | 不合法的縮略圖文件大小 |
40013 | 不合法的AppID,請開發者檢查AppID的正確性,避免異常字符,注意大小寫 |
40014 | 不合法的access_token,請開發者認真比對access_token的有效性(如是否過期),或查看是否正在為恰當的公眾號調用接口 |
40015 | 不合法的菜單類型 |
40016 | 不合法的按鈕個數 |
40017 | 不合法的按鈕個數 |
40018 | 不合法的按鈕名字長度 |
40019 | 不合法的按鈕KEY長度 |
40020 | 不合法的按鈕URL長度 |
40021 | 不合法的菜單版本號 |
40022 | 不合法的子菜單級數 |
40023 | 不合法的子菜單按鈕個數 |
40024 | 不合法的子菜單按鈕類型 |
40025 | 不合法的子菜單按鈕名字長度 |
40026 | 不合法的子菜單按鈕KEY長度 |
40027 | 不合法的子菜單按鈕URL長度 |
40028 | 不合法的自定義菜單使用用戶 |
40029 | 不合法的oauth_code |
40030 | 不合法的refresh_token |
40031 | 不合法的openid列表 |
40032 | 不合法的openid列表長度 |
40033 | 不合法的請求字符,不能包含\uxxxx格式的字符 |
40035 | 不合法的參數 |
40038 | 不合法的請求格式 |
40039 | 不合法的URL長度 |
40050 | 不合法的分組id |
40051 | 分組名字不合法 |
40117 | 分組名字不合法 |
40118 | media_id大小不合法 |
40119 | button類型錯誤 |
40120 | button類型錯誤 |
40121 | 不合法的media_id類型 |
40132 | 微信號不合法 |
40137 | 不支持的圖片格式 |
41001 | 缺少access_token參數 |
41002 | 缺少appid參數 |
41003 | 缺少refresh_token參數 |
41004 | 缺少secret參數 |
41005 | 缺少多媒體文件數據 |
41006 | 缺少media_id參數 |
41007 | 缺少子菜單數據 |
41008 | 缺少oauth code |
41009 | 缺少openid |
42001 | access_token超時,請檢查access_token的有效期,請參考基礎支持-獲取access_token中,對access_token的詳細機制說明 |
42002 | refresh_token超時 |
42003 | oauth_code超時 |
42007 | 用戶修改微信密碼,accesstoken和refreshtoken失效,需要重新授權 |
43001 | 需要GET請求 |
43002 | 需要POST請求 |
43003 | 需要HTTPS請求 |
43004 | 需要接收者關注 |
43005 | 需要好友關系 |
44001 | 多媒體文件為空 |
44002 | POST的數據包為空 |
44003 | 圖文消息內容為空 |
44004 | 文本消息內容為空 |
45001 | 多媒體文件大小超過限制 |
45002 | 消息內容超過限制 |
45003 | 標題字段超過限制 |
45004 | 描述字段超過限制 |
45005 | 鏈接字段超過限制 |
45006 | 圖片鏈接字段超過限制 |
45007 | 語音播放時間超過限制 |
45008 | 圖文消息超過限制 |
45009 | 接口調用超過限制 |
45010 | 創建菜單個數超過限制 |
45015 | 回復時間超過限制 |
45016 | 系統分組,不允許修改 |
45017 | 分組名字過長 |
45018 | 分組數量超過上限 |
45047 | 客服接口下行條數超過上限 |
46001 | 不存在媒體數據 |
46002 | 不存在的菜單版本 |
46003 | 不存在的菜單數據 |
46004 | 不存在的用戶 |
47001 | 解析JSON/XML內容錯誤 |
48001 | api功能未授權,請確認公眾號已獲得該接口,可以在公眾平台官網-開發者中心頁中查看接口權限 |
48004 | api接口被封禁,請登錄mp.weixin.qq.com查看詳情 |
50001 | 用戶未授權該api |
50002 | 用戶受限,可能是違規后接口被封禁 |
61451 | 參數錯誤(invalid parameter) |
61452 | 無效客服賬號(invalid kf_account) |
61453 | 客服帳號已存在(kf_account exsited) |
61454 | 客服帳號名長度超過限制(僅允許10個英文字符,不包括@及@后的公眾號的微信號)(invalid kf_acount length) |
61455 | 客服帳號名包含非法字符(僅允許英文+數字)(illegal character in kf_account) |
61456 | 客服帳號個數超過限制(10個客服賬號)(kf_account count exceeded) |
61457 | 無效頭像文件類型(invalid file type) |
61450 | 系統錯誤(system error) |
61500 | 日期格式錯誤 |
65301 | 不存在此menuid對應的個性化菜單 |
65302 | 沒有相應的用戶 |
65303 | 沒有默認菜單,不能創建個性化菜單 |
65304 | MatchRule信息為空 |
65305 | 個性化菜單數量受限 |
65306 | 不支持個性化菜單的帳號 |
65307 | 個性化菜單信息為空 |
65308 | 包含沒有響應類型的button |
65309 | 個性化菜單開關處於關閉狀態 |
65310 | 填寫了省份或城市信息,國家信息不能為空 |
65311 | 填寫了城市信息,省份信息不能為空 |
65312 | 不合法的國家信息 |
65313 | 不合法的省份信息 |
65314 | 不合法的城市信息 |
65316 | 該公眾號的菜單設置了過多的域名外跳(最多跳轉到3個域名的鏈接) |
65317 | 不合法的URL |
9001001 | POST數據參數不合法 |
9001002 | 遠端服務不可用 |
9001003 | Ticket不合法 |
9001004 | 獲取搖周邊用戶信息失敗 |
9001005 | 獲取商戶信息失敗 |
9001006 | 獲取OpenID失敗 |
9001007 | 上傳文件缺失 |
9001008 | 上傳素材的文件類型不合法 |
9001009 | 上傳素材的文件尺寸不合法 |
9001010 | 上傳失敗 |
9001020 | 帳號不合法 |
9001021 | 已有設備激活率低於50%,不能新增設備 |
9001022 | 設備申請數不合法,必須為大於0的數字 |
9001023 | 已存在審核中的設備ID申請 |
9001024 | 一次查詢設備ID數量不能超過50 |
9001025 | 設備ID不合法 |
9001026 | 頁面ID不合法 |
9001027 | 頁面參數不合法 |
9001028 | 一次刪除頁面ID數量不能超過10 |
9001029 | 頁面已應用在設備中,請先解除應用關系再刪除 |
9001030 | 一次查詢頁面ID數量不能超過50 |
9001031 | 時間區間不合法 |
9001032 | 保存設備與頁面的綁定關系參數錯誤 |
9001033 | 門店ID不合法 |
9001034 | 設備備注信息過長 |
9001035 | 設備申請參數不合法 |
9001036 | 查詢起始值begin不合法 |