1. 微信公眾號(hào)的三種類型
到網(wǎng)址: https://mp.weixin.qq.com 註冊(cè)微訊號(hào)時(shí),要求我們?cè)谀壳拔⑿殴娞?hào)的三種類型(訂閱號(hào)、服務(wù)號(hào)、企業(yè)號(hào))中進(jìn)行選中,他們的區(qū)別如下所示:
使用得多的公眾號(hào)是訂閱號(hào)碼和服務(wù)號(hào),企業(yè)號(hào)一般是同一個(gè)公司的員工交流協(xié)作使用的,企業(yè)號(hào)對(duì)外是不公開的,不可訪問的,只有企業(yè)的員工可以訪問;訂閱號(hào)和服務(wù)號(hào)是對(duì)外公開的,任何人可以關(guān)注。而訂閱號(hào)碼一般用於向追蹤者定期推送一些圖文訊息,也可以提供一些其他的查詢類的服務(wù),而服務(wù)號(hào)碼具有微信支付功能,所以一般用於商業(yè)用途。例如微商城,微拍賣等等。
2.開啟微信開發(fā)者功能
#在申請(qǐng)了微信公眾號(hào)之後,如果需要在微信平臺(tái)進(jìn)行開發(fā),則必須先若要開啟微信開發(fā)者功能。開啟微信開發(fā)者功能,要寫驗(yàn)證程式碼,而且必須要有可以存取的網(wǎng)址。首先登入微信公眾平臺(tái):https://mp.weixin.qq.com/
點(diǎn)擊“開發(fā)者中心”,勾上“我同意”,點(diǎn)擊“成為開發(fā)者”:
來到下面的頁面:
點(diǎn)擊“設(shè)定項(xiàng)”,其中有URL和Token要我們填寫,URL是指開啟開發(fā)者功能時(shí),微信服務(wù)端會(huì)向該URL的位址發(fā)送get請(qǐng)求,get請(qǐng)求的參數(shù)有:
1)時(shí)間戳記:timestamp
2)隨機(jī)數(shù):nonce
3)隨機(jī)字串:echostr
4)以及上面三個(gè)參數(shù)的值以字典順序組成的字串的SHA-1 演算法的摘要資訊:signature
我們要完成的是:在填寫的URL的get請(qǐng)求處理類別中獲得timestamp,nonce,echostr,signature四個(gè)參數(shù),然後以同樣的方式,對(duì)timestamp,nonce,token一字典順序組成的字串計(jì)算它們的SHA-1 演算法的摘要資訊signature2,然後比較signature2 和signature的值是否一樣,如果一樣的話就原樣回傳echostr,微信伺服器收到echostr ,則開發(fā)者功能開啟成功。注意這裡的token就是上面要填寫的Token.
註:如果你做過支付寶的接入,那麼會(huì)發(fā)現(xiàn)這裡的校驗(yàn)和支付寶的校驗(yàn)有個(gè)小區(qū)別,支付寶校驗(yàn)的字串是依照參數(shù)和參數(shù)的值組成的鍵值對(duì)中的key的字典順序排序的,並且字串的組成是:key1=value1+ & + key2=value2;而微信參與校驗(yàn)的字串為: value1 + value2 + ... 沒有包含key,並且是按照value的欄位順序排序的。
對(duì)應(yīng)的java程式碼如下:
處理微信get請(qǐng)求的servlet:
#/** * 微信請(qǐng)求處理的核心類 */ public class CoreServlet extends HttpServlet { private static final long serialVersionUID = 4440739483644821986L; /** * 請(qǐng)求校驗(yàn)(確認(rèn)請(qǐng)求來自微信服務(wù)器) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 微信服務(wù)端發(fā)來的加密簽名 String signature = request.getParameter("signature"); // 時(shí)間戳 String timestamp = request.getParameter("timestamp"); // 隨機(jī)數(shù) String nonce = request.getParameter("nonce"); // 隨機(jī)字符串 String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); // 請(qǐng)求校驗(yàn),若校驗(yàn)成功則原樣返回echostr,表示接入成功,否則接入失敗 if (SignUtil.checkSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); }
?請(qǐng)求校驗(yàn)工具類別:
package com.sinaapp.wx.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import com.sinaapp.wx.config.ParameterConfig; /** * 請(qǐng)求校驗(yàn)工具類 */ public class SignUtil { /** * 校驗(yàn)簽名 * * @param signature 微信加密簽名 * @param timestamp 時(shí)間 * @param nonce 隨機(jī)字符串 * @return */ public static boolean checkSignature(String signature, String timestamp, String nonce) { String token = ParameterConfig.WX_TOKEN; String[] paramArr = new String[] { token, timestamp, nonce }; Arrays.sort(paramArr); // 對(duì)token、timestamp和nonce按字典排序 // 將排序后的結(jié)果拼接成字符串 StringBuilder sb = new StringBuilder(paramArr[0]); sb.append(paramArr[1]); sb.append(paramArr[2]); String cipherText = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(sb.toString().getBytes()); // 對(duì)接后的字符串進(jìn)行sha1加密 cipherText = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 將加密后的字符串與微信服務(wù)器發(fā)來的簽名signature進(jìn)行對(duì)比 return cipherText != null ? cipherText.equals(signature.toUpperCase()) : false; } /** * 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 將單個(gè)字節(jié)轉(zhuǎn)換為十六進(jìn)制字符 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; // 取一個(gè)字節(jié)的高4位,然后獲得其對(duì)應(yīng)的十六進(jìn)制字符 tempArr[1] = Digit[mByte & 0X0F]; // 取一個(gè)字節(jié)的低4位,然后獲得其對(duì)應(yīng)的十六進(jìn)制字符 return new String(tempArr); } }
?程式碼中String token = ParameterConfig.WX_TOKEN的值必須和上面填寫的Token一致。在web.xml中設(shè)定該servlet:
<servlet> <servlet-name>coreServlet</servlet-name> <servlet-class>com.sinaapp.wx.servlet.CoreServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>coreServlet</servlet-name> <url-pattern>/coreServlet</url-pattern> </servlet-mapping>
?然後放入公網(wǎng)可以存取的網(wǎng)址下面,然後將該servlet的存取位址填入上面的URL中。然後點(diǎn)選「提交」按鈕,如果一切成功就會(huì)有下面的提示訊息:
#到這裡我們成功的開啟了微信的開發(fā)者功能,可以進(jìn)行微信的開發(fā)了。我們拿到了AppID, AppSecret,這兩個(gè)在微信支付中都要使用。
?
附註:
微信的開發(fā)文件位址為:http://mp.weixin.qq.com/wiki/home/index.html
開啟微信開發(fā)者的文件如下:
更多微信開發(fā)之如何成為開發(fā)者相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

PHP是一種開源的腳本語言,廣泛應(yīng)用於網(wǎng)頁開發(fā)和伺服器端編程,尤其在微信開發(fā)中得到了廣泛的應(yīng)用。如今,越來越多的企業(yè)和開發(fā)者開始使用PHP進(jìn)行微信開發(fā),因?yàn)樗蔀榱苏嬲囊讓W(xué)易用的開發(fā)語言。在微信開發(fā)中,訊息的加密和解密是一個(gè)非常重要的問題,因?yàn)樗鼈兩婕百Y料的安全性。對(duì)於沒有加密和解密方式的消息,駭客可以輕鬆取得其中的數(shù)據(jù),對(duì)用戶造成威脅

在微信公眾號(hào)開發(fā)中,投票功能經(jīng)常被運(yùn)用。投票功能是讓使用者快速參與互動(dòng)的好方式,也是舉辦活動(dòng)和調(diào)查意見的重要工具。本文將為您介紹如何使用PHP實(shí)作微信投票功能。在取得微信公眾號(hào)授權(quán)首先,你需要取得微信公眾號(hào)的授權(quán)。在微信公眾平臺(tái)上,你需要設(shè)定微信公眾號(hào)碼的api地址、官方帳號(hào)和公眾號(hào)碼對(duì)應(yīng)的token。在我們使用PHP語言開發(fā)的過程中,我們需要使用微信官方提供的PH

隨著微信的普及,越來越多的企業(yè)開始將其作為行銷工具。而微信群發(fā)功能,則是企業(yè)進(jìn)行微信行銷的重要手段之一。但是,如果只依靠手動(dòng)發(fā)送,對(duì)於行銷人員來說是一件極為費(fèi)時(shí)費(fèi)力的工作。所以,開發(fā)一款微信群發(fā)工具就顯得格外重要。本文將介紹如何使用PHP開發(fā)微信群發(fā)工具。一、準(zhǔn)備工作開發(fā)微信群發(fā)工具,我們需要掌握以下幾個(gè)技術(shù)點(diǎn):PHP基礎(chǔ)知識(shí)微信公眾平臺(tái)開發(fā)開發(fā)工具:Sub

微信是目前全球用戶規(guī)模最大的社群平臺(tái)之一,隨著行動(dòng)網(wǎng)路的普及,越來越多的企業(yè)開始意識(shí)到微信行銷的重要性。在進(jìn)行微信行銷時(shí),客服服務(wù)是至關(guān)重要的一環(huán)。為了更好地管理客服聊天窗口,我們可以藉助PHP語言進(jìn)行微信開發(fā)。一、PHP微信開發(fā)簡介PHP是一種開源的伺服器端腳本語言,廣泛用於Web開發(fā)領(lǐng)域。結(jié)合微信公眾平臺(tái)提供的開發(fā)接口,我們可以使用PHP語言進(jìn)行微信

在微信公眾號(hào)開發(fā)中,使用者標(biāo)籤管理是一個(gè)非常重要的功能,可以讓開發(fā)者更了解和管理自己的使用者。本篇文章將介紹如何使用PHP實(shí)作微信使用者標(biāo)籤管理功能。一、取得微信用戶openid在使用微信用戶標(biāo)籤管理功能之前,我們首先需要取得用戶的openid。在微信公眾號(hào)開發(fā)中,透過使用者授權(quán)的方式取得openid是比較常見的做法。在使用者授權(quán)完成後,我們可以透過以下程式碼取得用

隨著微信成為了人們生活中越來越重要的通訊工具,其敏捷的訊息傳遞功能迅速受到廣大企業(yè)和個(gè)人的青睞。對(duì)企業(yè)而言,將微信發(fā)展為一個(gè)行銷平臺(tái)已經(jīng)成為趨勢,而微信開發(fā)的重要性也逐漸凸顯。在其中,群發(fā)功能更是被廣泛使用,那麼,作為PHP程式設(shè)計(jì)師,如何實(shí)現(xiàn)群發(fā)訊息發(fā)送記錄呢?以下將為大家簡單介紹一下。 1.了解微信公眾號(hào)相關(guān)開發(fā)知識(shí)在了解如何實(shí)現(xiàn)群發(fā)訊息發(fā)送記錄之前,我

如何使用PHP實(shí)現(xiàn)微信公眾號(hào)開發(fā)微信公眾號(hào)已經(jīng)成為了許多企業(yè)推廣和互動(dòng)的重要管道,而PHP作為常用的Web語言,也可以用來進(jìn)行微信公眾號(hào)的開發(fā)。本文將介紹使用PHP實(shí)現(xiàn)微信公眾號(hào)開發(fā)的具體步驟。第一步:取得微信公眾號(hào)的開發(fā)者帳號(hào)在開始微信公眾號(hào)開發(fā)之前,需要先去申請(qǐng)一個(gè)微信公眾號(hào)的開發(fā)者帳號(hào)。具體的註冊(cè)流程可參考微信公眾平臺(tái)的官方網(wǎng)

隨著網(wǎng)路和行動(dòng)智慧型裝置的發(fā)展,微信成為了社交和行銷領(lǐng)域不可或缺的一部分。在這個(gè)越來越數(shù)位化的時(shí)代,如何使用PHP進(jìn)行微信開發(fā)已經(jīng)成為了許多開發(fā)者的關(guān)注點(diǎn)。本文主要介紹如何使用PHP進(jìn)行微信發(fā)展的相關(guān)知識(shí)點(diǎn),以及其中的一些技巧和注意事項(xiàng)。一、開發(fā)環(huán)境準(zhǔn)備在進(jìn)行微信開發(fā)之前,首先需要準(zhǔn)備好對(duì)應(yīng)的開發(fā)環(huán)境。具體來說,需要安裝PHP的運(yùn)作環(huán)境,以及微信公眾平臺(tái)提
