一、初始微信公眾平臺(tái)
微信公眾平臺(tái),即我們平時(shí)所說的“公眾號(hào)”,曾用名“官方平臺(tái)”、“媒體平臺(tái)”,但最終命名為“公眾平臺(tái)”。從微信的命名我可以發(fā)現(xiàn),公眾平臺(tái)不只是官方、媒體使用的平臺(tái),而是對(duì)所有公眾都開放的統(tǒng)一平臺(tái)。
微信公眾平臺(tái)地址:https://mp.weixin.qq.com/
微信公眾平臺(tái)公分4大板塊:訂閱號(hào)、服務(wù)號(hào)、小程序、企業(yè)號(hào)。按照微信2016年公開課規(guī)劃,企業(yè)號(hào)后續(xù)將與企業(yè)微信合并,因此我們主要針對(duì)前三部分開始講解:
微信平臺(tái)四大板塊
簡單的對(duì)比一下前三者的區(qū)別以及本次課程即后續(xù)課程的講解重點(diǎn):
1、訂閱號(hào)和服務(wù)號(hào)均為傳統(tǒng)意義的“公眾號(hào)”,具有消息群發(fā)能力,詳細(xì)區(qū)別可在官方平臺(tái)查看:http://kf.qq.com/faq/140806zARbmm140826M36RJF.html我們將注重于服務(wù)能力開發(fā),而在服務(wù)方面,兩者開發(fā)模式完全相同,只不過服務(wù)號(hào)可以使用更多的服務(wù)接口,而訂閱號(hào)則是“閹割版”的服務(wù)號(hào)。因此,后續(xù)課程我們將使用服務(wù)號(hào)為案例進(jìn)行操作。
2、微信小程序,原本為“微信應(yīng)用號(hào)”,即一個(gè)根植在微信生態(tài)系統(tǒng)內(nèi)的APP。因蘋果和谷歌的限制,“應(yīng)用號(hào)”未上線便已夭折,取而代之的是適度閹割功能的“微信小程序”,而其堪比原生APP的操作體驗(yàn),也使得小程序成為時(shí)下大火的開發(fā)方向。而杰瑞教育全新的H5開發(fā)課程,也將加入時(shí)下火爆的微信小程序開發(fā)。
二、開發(fā)賬號(hào)準(zhǔn)備
1、賬號(hào)注冊
進(jìn)入微信公眾平臺(tái)https://mp.weixin.qq.com,點(diǎn)擊右上角立即注冊,選擇“服務(wù)號(hào)”或“訂閱號(hào)”注冊(服務(wù)號(hào)僅限機(jī)構(gòu)用戶注冊,個(gè)人用戶只能選擇訂閱號(hào))
注冊時(shí)需填寫一系列信息,根據(jù)提示填寫即可,此處不做贅述。
2、測試賬號(hào)申請
如果暫時(shí)不想注冊賬號(hào),或者無法注冊服務(wù)號(hào),可選擇官方提供的測試賬號(hào)申請。申請地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login點(diǎn)擊后掃描二維碼,即可獲得一個(gè)測試賬號(hào),擁有服務(wù)號(hào)全部權(quán)限。
測試賬號(hào)界面
三、開發(fā)環(huán)境準(zhǔn)備
1、外網(wǎng)映射工具
微信公眾平臺(tái)在訪問后臺(tái)時(shí),必須提供能夠正確訪問的外網(wǎng)地址,微信平臺(tái)對(duì)后臺(tái)URL的要求有兩點(diǎn):
①必須能夠用公網(wǎng)訪問②必須使用80端口
要實(shí)現(xiàn)以上兩點(diǎn),我們可以選擇購買外網(wǎng)服務(wù)器,例如:阿里云、百度云、騰訊云…都是不錯(cuò)的選擇。如果沒有服務(wù)器,可以選擇用外網(wǎng)映射工具,將我們的內(nèi)網(wǎng)鏈接映射為公網(wǎng),比較不錯(cuò)的映射軟件有:花生殼、ngrok、nat123等…
這幾款軟件都可以百度很容易搜索到并下載,下面簡單講解一下用法:
① Ngrock:
進(jìn)入dos環(huán)境,切換到ngrock所在盤符,輸入ngrock8080回車:
ngrock操作
回車后等待一會(huì),即可得到公網(wǎng)鏈接,下圖所示陰影區(qū)域給出的鏈接,即可直接訪問本機(jī)127.0.0.1:8080下的鏈接內(nèi)容,分別是http協(xié)議和https協(xié)議對(duì)應(yīng)的地址:
ngrock操作成功界面
②花生殼、nat123,均可安裝軟件后,在軟件中操作,詳情可查看百度經(jīng)驗(yàn):http://jingyan.baidu.com/article/363872ec361d3f6e4ba16ff9.html此處不做贅述
四、微信公眾平臺(tái)數(shù)據(jù)交互原理
搭建好公網(wǎng)訪問地址后,我們自己開發(fā)的后臺(tái)代碼就可以放到公網(wǎng)地址了,那么用戶是怎么樣訪問到我們的代碼呢?
下面我們來看一下微信公眾平臺(tái)的數(shù)據(jù)交互原理:
從上圖可以看到,微信公眾平臺(tái)實(shí)際只是起到一個(gè)橋梁作用,實(shí)際處理業(yè)務(wù)、提供服務(wù)的代碼,依然是放在我們自己的服務(wù)器或者公網(wǎng)映射上面。
那么,我們就可以在我們自己的電腦(服務(wù)器)上面編寫后臺(tái)代碼,并通過映射工具提供公網(wǎng)能夠訪問的URL,然后將此URL綁定到微信后臺(tái)即可。
五、開發(fā)模式接入
下面將進(jìn)入實(shí)際開發(fā)過程,我們可以參考官方提供的開發(fā)文檔:https://mp.weixin.qq.com/wiki
1、填寫服務(wù)器配置
進(jìn)入微信公眾平臺(tái),點(diǎn)擊左側(cè)【開發(fā)——基本配置】,選擇【服務(wù)器配置】。即可進(jìn)入配置頁面:
微信平臺(tái)服務(wù)器配置
其中:
URL:即我們上述所說的后臺(tái)服務(wù)器公網(wǎng)訪問地址
Token:開發(fā)者自定的驗(yàn)證口令
2、驗(yàn)證消息是否有效
當(dāng)我們點(diǎn)擊提交時(shí),微信服務(wù)器將會(huì)發(fā)送一個(gè)Get請求,到我們上述地址,同時(shí)傳遞四個(gè)參數(shù):
微信服務(wù)器Get請求參數(shù)
我們通過檢驗(yàn)signature對(duì)請求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷?a href="http://www.miracleart.cn/wiki/1343.html" target="_blank">echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。加密/校驗(yàn)流程如下:
下面,我們實(shí)現(xiàn)代碼操作。
六、開發(fā)接入后臺(tái)代碼
1、使用MyEclipse創(chuàng)建Web項(xiàng)目,并新建一個(gè)servlet:
新建一個(gè)servlet
2、在servlet的doGet方法中,獲取上述四個(gè)校驗(yàn)參數(shù):
獲取上述四個(gè)校驗(yàn)參數(shù)
3、編寫工具類,進(jìn)行校驗(yàn)方法的操作:
編寫工具類
校驗(yàn)步驟,參考上述【五-2】三大步操作流程
校驗(yàn)步驟
使用sha1加密方法↓
sha1加密方法
4、 Servlet中調(diào)用校驗(yàn)方法,并驗(yàn)證結(jié)果,如果檢驗(yàn)成功,將得到的隨機(jī)字符串eahostr原路返回結(jié)果給微信平臺(tái):
Servlet中調(diào)用校驗(yàn)方法
至此,Servlet及Check工具類,編寫完成。
5、啟動(dòng)Tomcat,將Servlet的本地地址(例如本機(jī)為:localhost:8080/WeiXin/servlet/WeiXinServlet)進(jìn)行公網(wǎng)映射,參照上述第三大部分內(nèi)容,進(jìn)行公網(wǎng)映射,確定公網(wǎng)地址能夠正確訪問。
我將直接將將代碼放到公網(wǎng)服務(wù)器進(jìn)行訪問。獲得如下地址
七、配置公眾平臺(tái)后臺(tái)
進(jìn)入微信后臺(tái)配置相關(guān)信息:
微信后臺(tái)配置相關(guān)信息
點(diǎn)擊提交,微信將發(fā)送Get指令到Servlet,并調(diào)用doGet方法,進(jìn)行我們編寫的驗(yàn)證操作,最后如果順利返回隨機(jī)字符串,則綁定成功。
八、源碼共享
1、 Servlet源碼(只保留doGet部分):
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ //如果校驗(yàn)成功,將得到的隨機(jī)字符串原路返回 out.print(echostr); } }
2、 CheckUtil源碼(可直接Copy其中的getSha1加密方法):
package com.jredu.util; import java.security.MessageDigest; import java.util.Arrays; public class CheckUtil { public static final String tooken = "jredu100"; //開發(fā)者自行定義Tooken public static boolean checkSignature(String signature,String timestamp,String nonce){ //1.定義數(shù)組存放tooken,timestamp,nonce String[] arr = {tooken,timestamp,nonce}; //2.對(duì)數(shù)組進(jìn)行排序 Arrays.sort(arr); //3.生成字符串 StringBuffer sb = new StringBuffer(); for(String s : arr){ sb.append(s); }
//4.sha1加密,網(wǎng)上均有現(xiàn)成代碼 String temp = getSha1(sb.toString()); //5.將加密后的字符串,與微信傳來的加密簽名比較,返回結(jié)果 return temp.equals(signature); } public static String getSha1(String str){ if(str==null||str.length()==0){ return null; } char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char buf[] = new char[j*2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf];}
char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f'}; try { MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); mdTemp.update(str.getBytes("UTF-8")); byte[] md = mdTemp.digest(); int j = md.length; char buf[] = new char[j*2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; buf[k++] = hexDigits[byte0 & 0xf]; } return new String(buf); } catch (Exception e) { // TODO: handle exception return null; } } }
Atas ialah kandungan terperinci 用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk mengendalikan transaksi JDBC dengan betul, anda mesti terlebih dahulu mematikan mod komit automatik, kemudian melakukan pelbagai operasi, dan akhirnya melakukan atau mengembalikan semula hasilnya; 1. Panggil Conn.SetAutOcommit (palsu) untuk memulakan transaksi; 2. Melaksanakan pelbagai operasi SQL, seperti memasukkan dan mengemaskini; 3. Panggil Conn.Commit () jika semua operasi berjaya, dan hubungi conn.rollback () jika pengecualian berlaku untuk memastikan konsistensi data; Pada masa yang sama, cuba-dengan-sumber harus digunakan untuk menguruskan sumber, mengendalikan pengecualian dengan betul dan menutup sambungan untuk mengelakkan kebocoran sambungan; Di samping itu, adalah disyorkan untuk menggunakan kolam sambungan dan menetapkan mata simpan untuk mencapai rollback separa, dan menyimpan urus niaga sesingkat mungkin untuk meningkatkan prestasi.

Gunakan kelas dalam pakej Java.Time untuk menggantikan kelas lama dan kelas kalendar; 2. Dapatkan tarikh dan masa semasa melalui LocalDate, LocalDateTime dan Tempatan Tempatan; 3. Buat tarikh dan masa tertentu menggunakan kaedah (); 4. Gunakan kaedah tambah/tolak untuk meningkatkan dan mengurangkan masa; 5. Gunakan zoneddatetime dan zonid untuk memproses zon waktu; 6. Format dan parse date string melalui DateTimeFormatter; 7. Gunakan segera untuk bersesuaian dengan jenis tarikh lama apabila perlu; pemprosesan tarikh di java moden harus memberi keutamaan untuk menggunakan java.timeapi, yang memberikan jelas, tidak berubah dan linear

Pra-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless scenarios.tyvelopecosyste,

NetworkPortsandFireWallSworkTogethertoenableCommunicationWileensuringsecurity.1.networkportsarevirtualendpointsNumbered0-655 35, Withwell-KnownportsLike80 (http), 443 (https), 22 (ssh), dan25 (smtp) identitispecificservices.2.portsoperateovertcp (boleh dipercayai, c

Koleksi Sampah Java (GC) adalah mekanisme yang secara automatik menguruskan ingatan, yang mengurangkan risiko kebocoran ingatan dengan menuntut semula objek yang tidak dapat dicapai. 1.GC menghakimi kebolehcapaian objek dari objek akar (seperti pembolehubah stack, benang aktif, medan statik, dan lain -lain), dan objek yang tidak dapat dicapai ditandakan sebagai sampah. 2. Berdasarkan algoritma penandaan tanda, tandakan semua objek yang dapat dicapai dan objek yang tidak ditandai. 3. Mengamalkan strategi pengumpulan generasi: Generasi Baru (Eden, S0, S1) sering melaksanakan MinorGC; Orang tua melakukan kurang tetapi mengambil masa lebih lama untuk melakukan MajorGC; Metaspace Stores Metadata kelas. 4. JVM menyediakan pelbagai peranti GC: SerialGC sesuai untuk aplikasi kecil; ParallelGC meningkatkan throughput; CMS mengurangkan

GradleisthebetterChoiceFormostNewProjectSduetoitSsuperiorflexibility, Prestasi, danModernToolingSupport.1.Gradle'sGroovy/KOT lindslismoreconciseandexpressivethanmaven'sverbosexml.2.GradleOutPerformsMaveninBuildSpeedWithIncrementalcompilation, BuildCac

Defer digunakan untuk melaksanakan operasi tertentu sebelum fungsi pulangan, seperti sumber pembersihan; Parameter dinilai dengan serta-merta apabila menangguhkan, dan fungsi-fungsi dilaksanakan mengikut urutan terakhir (LIFO); 1. Pelbagai penahanan dilaksanakan dalam urutan terbalik pengisytiharan; 2. Biasanya digunakan untuk pembersihan yang selamat seperti penutupan fail; 3. Nilai pulangan yang dinamakan boleh diubah suai; 4. Ia akan dilaksanakan walaupun panik berlaku, sesuai untuk pemulihan; 5. Elakkan penyalahgunaan menangguhkan gelung untuk mengelakkan kebocoran sumber; Penggunaan yang betul boleh meningkatkan keselamatan kod dan kebolehbacaan.

Memilih jenis htmlinput yang betul dapat meningkatkan ketepatan data, meningkatkan pengalaman pengguna, dan meningkatkan kebolehgunaan. 1. Pilih jenis input yang sepadan mengikut jenis data, seperti teks, e -mel, tel, nombor dan tarikh, yang secara automatik boleh menyemak dan menyesuaikan diri dengan papan kekunci; 2. Gunakan HTML5 untuk menambah jenis baru seperti URL, Warna, Julat dan Carian, yang dapat memberikan kaedah interaksi yang lebih intuitif; 3. Gunakan pemegang tempat dan sifat -sifat yang diperlukan untuk meningkatkan kecekapan dan ketepatan pengisian bentuk, tetapi harus diperhatikan bahawa pemegang tempat tidak dapat menggantikan label.
