国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
二、開發(fā)賬號(hào)準(zhǔn)備
2、測試賬號(hào)申請
1、外網(wǎng)映射工具
四、微信公眾平臺(tái)數(shù)據(jù)交互原理
五、開發(fā)模式接入
1、填寫服務(wù)器配置
2、驗(yàn)證消息是否有效
六、開發(fā)接入后臺(tái)代碼
七、配置公眾平臺(tái)后臺(tái)
八、源碼共享
1、 Servlet源碼(只保留doGet部分):
Copy其中的getSha1加密方法):" >2、 CheckUtil源碼(可直接Copy其中的getSha1加密方法):
Rumah applet WeChat pembangunan WeChat 用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

Apr 04, 2017 am 10:32 AM

一、初始微信公眾平臺(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ì)前三部分開始講解:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

微信平臺(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)限。

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

測試賬號(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回車:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

ngrock操作

回車后等待一會(huì),即可得到公網(wǎng)鏈接,下圖所示陰影區(qū)域給出的鏈接,即可直接訪問本機(jī)127.0.0.1:8080下的鏈接內(nèi)容,分別是http協(xié)議和https協(xié)議對(duì)應(yīng)的地址:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

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ù)交互原理:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入


從上圖可以看到,微信公眾平臺(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)入配置頁面:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

微信平臺(tái)服務(wù)器配置

其中:

URL:即我們上述所說的后臺(tái)服務(wù)器公網(wǎng)訪問地址

Token:開發(fā)者自定的驗(yàn)證口令

EncodingAESKey:隨機(jī)字符串,如果消息加解密方式采用安全模式才需驗(yàn)證

2、驗(yàn)證消息是否有效

當(dāng)我們點(diǎn)擊提交時(shí),微信服務(wù)器將會(huì)發(fā)送一個(gè)Get請求,到我們上述地址,同時(shí)傳遞四個(gè)參數(shù):

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

微信服務(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

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

新建一個(gè)servlet

2、在servlet的doGet方法中,獲取上述四個(gè)校驗(yàn)參數(shù):

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

獲取上述四個(gè)校驗(yàn)參數(shù)

3、編寫工具類,進(jìn)行校驗(yàn)方法的操作:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

編寫工具類

校驗(yàn)步驟,參考上述【五-2】三大步操作流程

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

校驗(yàn)步驟

使用sha1加密方法↓

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

sha1加密方法

4、 Servlet中調(diào)用校驗(yàn)方法,并驗(yàn)證結(jié)果,如果檢驗(yàn)成功,將得到的隨機(jī)字符串eahostr原路返回結(jié)果給微信平臺(tái):

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

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)信息:

用JAVA開發(fā)微信公眾平臺(tái)(一)-環(huán)境搭建與開發(fā)接入

微信后臺(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[] = {&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;,&#39;6&#39;,&#39;7&#39;,&#39;8&#39;,&#39;9&#39;,
&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;,&#39;f&#39;};
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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Bagaimana menangani transaksi di Java dengan JDBC? Bagaimana menangani transaksi di Java dengan JDBC? Aug 02, 2025 pm 12:29 PM

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.

Bagaimana untuk bekerja dengan kalendar di Jawa? Bagaimana untuk bekerja dengan kalendar di Jawa? Aug 02, 2025 am 02:38 AM

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

Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Membandingkan kerangka Java: Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

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

Memahami Pelabuhan Rangkaian dan Firewall Memahami Pelabuhan Rangkaian dan Firewall Aug 01, 2025 am 06:40 AM

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

Bagaimana pengumpulan sampah berfungsi di java? Bagaimana pengumpulan sampah berfungsi di java? Aug 02, 2025 pm 01:55 PM

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

Membandingkan Java Build Tools: Maven vs Gradle Membandingkan Java Build Tools: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

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

Pergi dengan contoh penangguhan yang dijelaskan Pergi dengan contoh penangguhan yang dijelaskan Aug 02, 2025 am 06:26 AM

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.

Menggunakan jenis html `input` untuk data pengguna Menggunakan jenis html `input` untuk data pengguna Aug 03, 2025 am 11:07 AM

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.

See all articles