微信公衆號開發文檔:https://mp.weixin.qq.com/wikijava
微信公衆平臺接口調試工具:https://mp.weixin.qq.com/debug/cgi-bin/apiinfoweb
全部的開發接口API及接口調試都是基於以上兩個官方文檔地址.spring
這裏引用文檔中的描述api
微信公衆平臺是運營者經過公衆號爲微信用戶提供資訊和服務的平臺,而公衆平臺開發接口則是提供服務的基礎,開發者在公衆平臺網站中建立公衆號、獲取接口權限後,能夠經過閱讀本接口文檔來幫助開發。spring-mvc
爲了識別用戶,每一個用戶針對每一個公衆號會產生一個安全的OpenID,若是須要在多公衆號、移動應用之間作用戶共通,則需前往微信開放平臺,將這些公衆號和應用綁定到一個開放平臺帳號下,綁定後,一個用戶雖然對多個公衆號和應用有多個不一樣的OpenID,但他對全部這些同一開放平臺帳號下的公衆號和應用,只有一個UnionID,能夠在用戶管理-獲取用戶基本信息(UnionID機制)文檔瞭解詳情。tomcat
請開發者注意:安全
一、微信公衆平臺開發是指爲微信公衆號進行業務開發,爲移動應用、PC端網站、公衆號第三方平臺(爲各行各業公衆號運營者提供服務)的開發,請前往微信開放平臺接入。服務器
二、在申請到認證公衆號以前,你能夠先經過測試號申請系統,快速申請一個接口測試號,當即開始接口測試開發。 三、在開發過程當中,可使用接口調試工具來在線調試某些接口。微信
四、每一個接口都有每日接口調用頻次限制,能夠在公衆平臺官網-開發者中心處查看具體頻次。 五、在開發出現問題時,能夠經過接口調用的返回碼,以及報警排查指引(在公衆平臺官網-開發者中心處能夠設置接口報警),來發現和解決問題。mvc
六、公衆平臺以access_token爲接口調用憑據,來調用接口,全部接口的調用須要先獲取access_token,access_token在2小時內有效,過時須要從新獲取,但1天內獲取次數有限,開發者需自行存儲,詳見獲取接口調用憑據(access_token)文檔。
七、公衆平臺接口調用僅支持80端口。
使用idea搭建一個基於springmvc的demo項目,新建好maven項目後,首先是配置web.xml文件
web.xml文件的配置
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring內存溢出監聽器,好比quartz --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 編碼過濾器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring mvc servlet--> <servlet> <servlet-name>springMvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
一個簡單的web.xml的配置,須要注意的是url-pattern 路徑配置儘可能配置成'/'或者*.do等 這中形式
接下來就是兩個xml文件的配置
spring-context.xml
<?xml version="1.0" encoding="utf-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.wx4jdemo.*"/> </beans>
spring-mvc.xml
<?xml version="1.0" encoding="utf-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--註解驅動 --> <!-- 會自動註冊RequestMappingHandlerMapping與RequestMappingHandlerAdapter兩個Bean(spring3.0之後的版本), 這是Spring MVC爲@Controller分發請求所必需的,而且提供了數據綁定支持, @NumberFormatannotation支持,@DateTimeFormat支持, @Valid支持讀寫XML的支持(JAXB)和讀寫JSON的支持(默認Jackson)等功能。 --> <mvc:annotation-driven/> <!-- 對靜態資源文件的訪問, 將沒法mapping到Controller的path交給default servlet handler處理 --> <!--<mvc:default-servlet-handler />--> <!-- 自動掃描 @Controller--> <context:component-scan base-package="com.wx4jdemo.controller"/> <!-- 視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"></property> </bean> </beans>
至此簡單的demo案例代碼寫完,接下來須要作的就是將項目放到外網訪問.
這裏使用https://natapp.cn/提供的客戶端來作端口映射,在官網上註冊後購買免費隧道.配置以下
本地端口便是配置的將本地的端口映射到外網的80端口(公衆平臺接口調用僅支持80端口。).
配置複製上圖中的authortoken,接着下載客戶端到本地磁盤
打開CMD定位到客戶端的目錄,
輸入一下命令: natapp -authtoken=6fa8db450371d61a
其中authtoken的值即爲在https://natapp.cn/購買的免費隧道authtoken
配置成功出現一下日誌即爲成功:
這裏的Forwarding 對應的值(紅框內)即爲外網訪問項目的地址,項目測試期間窗口不能關閉
外網端口映射已經完成,接下來運行項目測試外網訪問
(注意tomcat的訪問端口需與natapp官網配置的本地端口保持一致) 本例中配置的爲8081
這裏的/weixin/hello 是我配置的controller的RequestMapping的值.
後臺服務器的搭建已經基本完成,因爲外網映射工具爲免費的,因此訪問域名不是很優雅,這個能夠後期在實戰中購買阿里雲或是騰訊雲的服務器.
微信公衆帳號分爲服務號(企業),訂閱號(我的),這兩種帳號適用於不用的組織,而且接口的調用權限也有所不一樣.
具體的接口權限以及區別不在本章主題中,自行百度.爲了方便學習開發,使用測試號開發.
申請地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421137522
配置URl
其中的url即爲步驟二配置的外網域名,token 爲自定義的參數.須要注意的是在配置URL肯定請求路徑能正確的映射到Controller中的handler方法,不然會提示配置錯誤,具體配置方法見下一章節.