1. 程式人生 > >微信接入探祕(一)——從零認識微信介面

微信接入探祕(一)——從零認識微信介面

寫在前面

回想起來今年還沒有在CSDN上發過文章,草稿箱裡積攢了很多話題,可由於時間關係最終也沒發出來。不能再拖了,打算寫個系列專題,聊聊微信接入。

隨著微信使用者量的不斷增加,越來越多的企業也將自己的服務加入到了微信當中。微信本身提供的公眾號、服務號的基礎功能難以滿足日趨增長的需求,於是微信為我們打開了一整套自定義功能的API,利用這些API,我們可以彌補原有平臺的不足,創造出更加方便的功能。本篇先對微信介面進行簡單的介紹。

騰訊雖然官方也提供了很多語言版本的開發包(參閱:http://qydev.weixin.qq.com/wiki/index.php?title=加解密庫下載與返回碼),包括C++、Python、php、java和C#,但是筆者發現作為以PHP為主導技術的公司,Java版本的SDK無論是從封裝效能、可維護性還是語法結構上都不夠嚴謹。也正是因此才有了做一套開源API適配庫的想法,目的就是為了讓微信接入更簡單、更容易維護(專案地址為:

https://code.csdn.net/chaijunkun/wechat-common

任何新技術的掌握都是從文件開始的,如果你剛剛接觸微信接入開發,不妨先看看官方的文件:https://mp.weixin.qq.com/wiki(這個地址後來發現有點問題,可能是啟用了refer遮蔽,從部落格跳轉過去會報錯,隨便點個報錯頁面的連結,貼上地址後即可訪問)

通過閱讀文件,我們大概將微信介面分為兩類:被動回撥(集中在文件的訊息管理部分)介面和主動呼叫介面。

被動回撥介面

嚴格意義上來說,該介面的業務邏輯是由我們自定義的。當有相應的事件發生時,微信會按照之前配置好的公眾平臺引數主動請求你的介面。請求引數和請求體都是在文件中明確宣告的,我們要做的就是對其進行適配。

該介面的作用類似於簡訊中心。當用戶訂閱了你的公眾號之後可以向其主動傳送資訊,但訊息不是直接到達了你的後臺系統,而是通過微信的轉發回撥機制,將內容通過統一的格式傳送給接入的後臺系統。你是否還記得有些電視節目中參與互動,發特定的簡訊內容到一個服務號碼上就能參與進去?道理是一樣的。

若需要使用回撥介面,需要在正式使用前對賬號進行配置。方法為:登入微信公眾號平臺. 登入地址:https://mp.weixin.qq.com/,檢視自己的公眾號。

a.若使用正式公眾號除錯,請在左側選單中找到”開發”->”基本配置”->”開發者ID”和”伺服器配置”中找到對應的配置項。

b.若使用公眾號的測試賬號除錯,請在左側選單中找到”開發”->”開發者工具”->”公眾平臺測試帳號”->”進入”->掃描登入二維碼->”測試號資訊”和”介面配置資訊”中找到對應的配置項。

一個通常的業務模式為下圖所示

Created with Raphaël 2.1.0使用者使用者微信微信公眾號後臺公眾號後臺主動傳送訊息讀取公眾號配置格式化訊息,通過回撥通知後臺同步等待返回資料讀取訊息來源(使用者id)分析訊息,實現自定義業務邏輯返回特定格式的應答字串接收到返回資料驗證訊息的格式正確性將內容轉發給使用者客戶端

上述場景中,公眾號處於被動模式,只有使用者主動傳送訊息,才會觸發微信回撥公眾號後臺,併產生相應的應答。實際應用場景有:“回覆XX給你看一張圖”,“給我們的節目留言”等等。

關於該處的配置和除錯方法將會在後續章節中詳細介紹

主動呼叫介面

剛剛我們說過使用者主動向公眾號傳送訊息,那麼有沒有主動發訊息給使用者的場景呢?例如:告警系統,機房中哪臺機器出現問題我們事先是不知道的,監測到異常時需要主動發訊息通知使用者。那麼就涉及到了主動呼叫類介面了。這部分介面包羅永珍,是微信介面的重點和難點。

微信官方針對主動呼叫的介面進行了一些列限制,例如公眾號不能給未關注該號的使用者傳送訊息(旨在保護使用者不被惡意打擾),例如API訪問令牌Token,每天的獲取次數也根據公眾號的型別做了不同的限制。

一個通常的業務模式為下圖所示

Created with Raphaël 2.1.0使用者使用者微信微信公眾號後臺公眾號後臺關注公眾號讀取公眾號配置格式化訊息,通過回調發送"使用者關注"事件讀取訊息來源,將使用者id持久化到DB需要主動傳送訊息給使用者時,讀取使用者資訊獲取訪問令牌返回訪問令牌拿到TokenToken+使用者id+格式化的訊息主動呼叫微信介面驗證訊息的格式正確性、合法性將內容轉發給使用者客戶端

具體實踐,後續章節中也會對其進行介紹。

本節對微信介面進行了分類和原理的粗略解釋,更多內容請關注我的部落格,也歡迎針對該開源框架提出改進性建議。

相關推薦

接入探祕——認識介面

寫在前面 回想起來今年還沒有在CSDN上發過文章,草稿箱裡積攢了很多話題,可由於時間關係最終也沒發出來。不能再拖了,打算寫個系列專題,聊聊微信接入。 隨著微信使用者量的不斷增加,越來越多的企業也將自己的服務加入到了微信當中。微信本身提供的公眾號、服務

springmvc學習筆記 -- 搭建,基礎入門

out hand char webapp core localhost list ges del 1、新建maven項目 參考mybatis學習筆記(五) -- maven+spring+mybatis從零開始搭建整合詳細過程(上)第一部分,修改配置 2、修

優秀開源軟件學習系列——學習Spring4以及學習方法分享

文檔 軟件 準備 相關性 培訓 獎勵 在哪裏 方式 列表 一、目的1.掌握Spring4怎樣使用,以便將這個框架作為自己的一項技能。2.掌握Spring官網是怎樣介紹其產品的,在心中對Spring有最官方的、最直觀的了解。在Spring的相關領域,能夠知道怎麽下載Sprin

Maven系列開始構建Java應用程序

.so 構建java項目 cti maven生命周期 包含 兩個類 簡述 work pil 前段時間面試,面試官要我簡述一下Maven生命周期,what?Maven不就是用來構建一個項目的麽,生命周期是什麽東東(我之前一直做.net,但是想找關於java的工作,之前使用Ma

服務架構學習筆記:重新認識服務

一、什麼是微服務 微服務(Microservice)是服務化思路的一種最佳實踐方向,遵循SOA的思路,各個企業在服務化治理的道路上走的時間長了,踩的坑多了,整個軟體交付鏈路上各個環節的基礎設施逐漸成熟了,微服務自然而然就誕生了。 早些年的服務實現和實施思路是將很多功能從開發到交付都打包成一個

Qt深入淺出 開始寫Qt應用

1 Qt簡單介紹1.1 什麼是Qt​ Qt是1991年由奇趣科技開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI(Graphical User Interface)程式,也可用於開發非GUI程式,比如控制檯程式。與windows上面的MFC是同一類東西。它

Node.js Web開發開始

Node.js不必介紹,已經太火爆了。簡單說是用Javascript開發Web服務端,基於Google V8引擎,單執行緒。不多說從零開始Windows平臺下的Node.js的開發之旅。 環境工具為先 首先到Node.js的官方網站上 下載 安裝包,一步步安裝,現在最

AngularJS——開始AngularJS

雖然已經使用了不短的時間 ,但對於 AngularJS 的瞭解還很淺,也沒有系統的學習過,下面慢慢來,系統的梳理一遍 AngularJS ,順帶學習點之前幾乎沒有自己寫過的 filterdirective service 等等。廢話少說,第一篇就來看看如何開始使用Angula

Re:0開始的服務架構:重識服務架構--轉

相關 推廣 模塊劃分 ati 滿足 face jar 點擊放大 積累 原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_me

0開始的服務架構:重識服務架構

拆分 dock try 快速入門 比較 資源 貼吧 升級維護 頁面 導語 雖然已經紅了很久,但是“微服務架構”正變得越來越重要,也將繼續火下去。 各個公司與技術人員都在分享微服務架構的相關知識與實踐經驗,但我們發現,目前網上的這些相關文章中,要麽上來就是很有借鑒意義的幹貨,

小程序

ase 分鐘 style 自定義 hello move footer 回收 iteration 小程序 WXSS rpx , 僅支持部分 CSS 選擇器 document,window無效 ,用this.route 運行 5分鐘會被微信主動銷毀 內存占用過高回收

使用JAVA開發微公眾平臺——環境搭建與開發接入

iges 微信平臺 校驗 後臺服務 結果 png 交互 package app 一、 初始微信公眾平臺 微信公眾平臺,即我們平時所說的“公眾號”,曾用名“官方平臺”、“媒體平臺”,但最終命名為&ldq

springboot框架開發微公眾號之連線伺服器

前幾個月研究了一下用springboot開發微信公眾號,現在做一下整理總結 開發準備 1.申請微信公眾平臺測試號(測試號適用於開發階段) 2.有jdk和開發工具(這裡筆者選擇jdk1.8和STS) 流程圖 程式碼實現 1.新建springboot專案,在controller層建立一個

小程式小程式與伺服器的簡單鏈接

生活無趣且不易,一起找點樂子吧。歡迎評論,和文章無關的東西也沒關係。 最近在寫小程式,有些問題,搜尋不到太有價值的東西(可能是我對關鍵字的理解不好),這裡總結下我遇到各種問題,可能看來會比較可笑,但對新手來說也許會有些幫助,我會盡量去注重具體的實現。  這篇文章來

小程式http://v.juhe.cn不在合法域名列表中

登入微信公眾平臺。點選設定,在request合法域名下填入你所用到的第三方域名。具體如下: 此時,儲存重新整理頁面。回到你的微信開發者工具,清除快取,重新編譯,開啟專案詳情頁面。可以看到合法域名已經更新了。 到這一步已經配置完畢了。 執行程式

Java開發微公眾號——開發環境搭建

1.開發語言使用Java 2.使用微信介面測試賬號進行本地測試 3.使用natapp(原ngrok)將本地地址對映到外網地址實現微信公眾號的本地除錯 準備工作 最近學習微信公眾平臺的開發,在申請一個微信公眾號的時候,發現如果不是公司或組織只能申請訂閱號(並且是個

小程式——專案基礎架構及頁面組成結構

從2017年年初微信小程式出世以來,因為它不用安裝,不佔記憶體,即點即用等優良特性,受到了廣大人民群眾的喜愛,越來越多的企業、組織和團體把目光投向了微信小程式的開發,微信小程式的熱度也隨之水漲船高。 ▍預設基礎結構(自動建立) 【注意】app.js、app.jso

使用Node.js搭建支付後臺

第一部分前期儲備 1.1 註冊前的概述 從微信公眾平臺可以獲取到公眾號的分類如下: 1. 服務號:主要偏於為使用者傳達資訊(類似報紙雜誌),認證前後都是每天只可以群發一條訊息;【適用人群】:媒體,企業,政府或其他組織 2. 訂閱號: 主要偏於服務互動(類似銀行,114,提供

Java支付總結:獲得prepay_id以及生成支付簽名

預設你已經取得了微信支付相關的許可權,並且有了商戶號,key值等等。 如果你一直簽名錯誤,請看上一篇帖子:http://blog.csdn.net/qq_25821067/article/details/55253399 要想獲取prepay_id,就必須要生成正確的簽名,

初探小遊戲

什麼是微信小遊戲 微信小遊戲是一個非常容易弄混的概念。 首先簡稱小遊戲是一個存在多年的統稱,最為著名的,我們總會在談論小遊戲的同時談到4399,但是現在是移動端的時代。微信也從4399等公司接過了微小型遊戲的大旗,無論是最早的打飛機還是近期的跳一跳,每個微信“親生”的小遊