Cara Terhubung ke Server dengan WeChat Development API, mari kita perkenalkan kepada Anda di bawah ini
1. Penjelasan
* Contoh ini dikembangkan dan ditunjukkan menurut dokumen pengembangan WeChat: http://mp.weixin.qq.com/wiki/home/index.html Versi terbaru (4/3/2016 5:34:36 pm).
* Platform pengeditan: myeclipse10.7+win32+jdk1.7+tomcat7.0
* Server: Alibaba Cloud Windows Server 2008 64bits
* Persyaratan Platform: Metode Anotasi Penggunaan Servlet, Persyaratan Platform: J2EE6.0+, JDK6.0+, TomCat7.0+
* Demo lebih fokus pada parsing API.
* Demi instruksi pengujian, setiap kasus uji independen dan tidak bergantung pada metode lain. Jangan banyak mempertimbangkan kemasannya.
* Demonstrasi dilakukan sebanyak mungkin sesuai dengan persyaratan API. Tujuan: Pahami bagaimana dokumen digunakan dan mencapai efek pembelajaran dari satu contoh dan menerapkannya kepada orang lain.
* Persyaratan Pengetahuan: Yayasan Java yang Solid, Memahami Pengetahuan Komunikasi Jaringan HTTP, memiliki pemahaman yang cukup tentang Javaweb, Analisis JSON
* Waktu saat ini: 4/3/2016 5:32:57 PM, kali ini akan menang.
2. Dokumen Asli (Abstrak)
Alamat dokumen: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Untuk mengakses pengembangan platform publik WeChat, pengembang perlu mengikuti langkah -langkah berikut:
1. Isi konfigurasi server
2. Verifikasi validitas alamat server
3. Menerapkan logika bisnis berdasarkan dokumen antarmuka
3. Pemahaman dokumen
Verifikasi validitas alamat server
1. API diperkenalkan seperti ini:
Setelah pengembang mengirimkan informasi, server WeChat akan mengirim permintaan GET ke URL alamat server yang diisi. Permintaan GET membawa empat parameter: tanda tangan, stempel waktu, nonce, echostr
Pengembang memeriksa permintaan dengan memverifikasi tanda tangan (ada metode verifikasi di bawah).
Jika Anda mengonfirmasi bahwa permintaan GET berasal dari server WeChat, silakan kembalikan konten parameter EchoStr sebagaimana mestinya, dan akses mulai berlaku dan menjadi pengembang dengan sukses. Kalau tidak, aksesnya gagal.
Proses enkripsi/pemeriksaan adalah sebagai berikut:
1) Urutkan Urutan Kamus Token, Timestamp, dan Nonce
2) Sambungkan tiga string parameter menjadi satu string untuk enkripsi SHA1
3) String yang diperoleh pengembang dapat dibandingkan dengan tanda tangan untuk mengidentifikasi permintaan yang berasal dari WeChat.
2. Mengerti
Ini berarti bahwa permintaan tersebut ada dalam mode "Dapatkan", dan mengakses permintaan akan mengembalikan empat parameter: tanda tangan, cap waktu, nonce, echostr.
Kita perlu menerima parameter ini dan kemudian memprosesnya. Jika verifikasi berhasil, "echostr" yang diterima dikembalikan, jika tidak verifikasi gagal.
Metode verifikasi adalah untuk mengurutkan token tiga parameter yang diterima, cap waktu, dan nonce, kemudian enkripsi SHA1, dan akhirnya membandingkannya dengan tanda tangan.
*String terenkripsi dapat dibandingkan dengan tanda tangan. Jika sama [API mungkin tidak menjelaskannya dengan sangat jelas], kembalikan "Echostr" dan berhasil memverifikasi.
3. Sadarilah
Buat servlet coreserVlet untuk mengimplementasikan httpservlet dan membebani metode doGet.
Persiapan parameter
// Tetapkan token global, pengembang menetapkannya sendiri. API menjelaskan cara ini: token dapat diisi oleh pengembang sesuka hati, // digunakan sebagai tanda tangan generasi (token akan dibandingkan dengan token yang terkandung dalam url antarmuka untuk memverifikasi keamanan) token string = "wgyscsf"; // sesuai dengan deskripsi API, dapatkan empat parameter di atas string tanda tangan = req.getparparameter ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaioner ("tandaioner (" tandaion ("tandaioner (" tandaioner ("tandaioner (" tandaion. " String timestamp = req.getParameter ("timestamp"); String nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("echostr");Operasi Menurut tiga langkah yang disebutkan oleh API
// Langkah 1: Urutkan Urutan Kamus Token, Timestamp, Nonce String [] PARMS = string baru [] {token, timestamp, nonce}; // Masukkan string yang perlu diurutkan kamus dalam array array. enkripsi [Baidu: java sha1 enkripsi] // splice string string parmsstring = ""; // Perhatikan bahwa itu tidak dapat = nol di sini. untuk (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i];} // string enkripsi sha1 mparms = null; // hasilnya setelah enkripsi ... // tempat ini adalah implementasi dari enkripsi SHA1, tidak ada kode yang diposting mparms = hexstring.tostring ini; Server WeChat, silakan kembalikan konten parameter Echostr sebagaimana mestinya, dan akses mulai berlaku dan menjadi pengembang dengan sukses, jika tidak akses gagal. */// Langkah 3: Pengembang memperoleh string terenkripsi dan dapat membandingkannya dengan tanda tangan untuk mengidentifikasi bahwa permintaan tersebut berasal dari akses WeChat yang berhasil. System.out.println (tag + ":" + mparms + "--->" + Signature); if (mparms.equals (Signature)) {// system.out.println (tag + ":" + mparms + "---->" + tanda tangan); printwriter.write (echoStr);} else {// akses gagal, tidak perlu menulis kembali // system.out.println (tag + "akses gagal");}4. Isi konfigurasi server
1) Termasuk konfigurasi server konten terutama adalah server dan antarmuka akses WeChat yang perlu kita konfigurasi setelah kita menulis kode kita sendiri untuk mengakses platform pengembangan WeChat.
2) Operasi Server Buka tomcat server dan masukkan kode tertulis ke dalam file WebApps.
3) Operasi Platform Publik WeChat
*Berlaku untuk akun uji weChat (pindai langsung dengan weChat ke login): http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
*Buka nomor uji platform publik WeChat dan konfigurasikan informasi konfigurasi antarmuka. Konfigurasinya adalah sebagai berikut
URL: http: // ip/weixinapidemo/coreservlet
Token: wgyscsf
*Akan ada yang diingatkan saat mengirimkan, keberhasilan dan kegagalan konfigurasi.
Semua kode sumber operasi di bagian ini dapat digunakan secara langsung
Paket com.gist.servlet; impor java.io.ioException; impor java.io.printwriter; impor java.security.messagedigest; impor java.security.nosuchalgorityMexception; impor java.utilrays; impor javax.servlet.servletsception; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; http://blog.csdn.net/wgyscsf </n> * periode penulisan 2016-4-3 4:34:05 PM */@WebServer ("/coreserver") CoreserVlet kelas publik memperluas httpservlet {string tag = "coreserver"; / * * Langkah 2: Verifikasi validitas alamat server setelah pengembang mengirimkan informasi, server WeChat akan mengirim permintaan GET ke URL alamat server yang diisi. * Permintaan GET membawa empat parameter: tanda tangan, stempel waktu, nonce, echostr * Pengembang memverifikasi permintaan dengan memverifikasi tanda tangan (ada metode verifikasi di bawah). Jika Anda mengonfirmasi bahwa permintaan GET berasal dari server WeChat, silakan kembalikan konten parameter EchoStr sebagaimana adanya, *, akses mulai berlaku dan menjadi pengembang dengan sukses, jika tidak, akses gagal. * * Proses enkripsi/pemeriksaan adalah sebagai berikut: 1. Urutkan Urutan Kamus Token, Timestamp, dan Nonce 2. * Penyambungan Tiga String Parameter ke dalam String untuk Enkripsi SHA1. untuk membentuk urutan. Metode ini adalah membentuk urutan dari kecil hingga besar dalam urutan abjad atau dalam urutan jumlah kecil dan besar. */ @Override Protected void doGet (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {// atur encoding req.setcharacterencoding ("UTF-8"); resp.setContentType ("html/text; charset = utf-8"); resp.setcharacterencoding ("UTF-8"); // dapatkan output stream printwriter printwriter = resp.getWriter (); // Tetapkan token global, pengembang menetapkannya sendiri. API menjelaskan ini: token dapat diisi sesuka hati oleh pengembang, // digunakan sebagai tanda tangan generasi (token akan dibandingkan dengan token yang terkandung dalam URL antarmuka untuk memverifikasi keamanan) token string = "wgyscsf"; // Menurut deskripsi API, dapatkan empat parameter di atas string Signature = req.getParameter ("Signature"); String timestamp = req.getParameter ("timestamp"); String nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("echostr"); // // temp: pencetakan sementara, saksikan situasi parameter pengembalian // system.out.println (tag + ": tanda tangan:" + tanda tangan + ", cap waktu:" // + timestamp + ", nonce:" + nonce + ", echostr:" + echostr); // akses sesuai dengan "proses enkripsi/verifikasi" yang disebutkan oleh API. Ada tiga langkah secara total // Langkah 1: Urutkan Urutan Kamus Token, Timestamp, Nonce Three Parameter String [] PARMS = string baru [] {token, timestamp, nonce}; // Masukkan string yang perlu diurutkan pada string (Parms (Parm); // Sambungkan string string parmsString = ""; // Perhatikan bahwa itu tidak dapat = nol di sini. untuk (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i]; } // string enkripsi SHA1 mparms = null; // hasil terenkripsi messagedigest digest = null; coba {digest = java.security.messagedigest.getInstance ("sha"); } catch (nosuchalgorithMexception e) {// todo auto-generated catch block e.printstacktrace (); } digest.update (parmsString.getBytes ()); byte messagedigest [] = digest.gigest (); // buat hex string stringBuffer hexString = new stringBuffer (); // Konversi array byte menjadi hexadecimal number untuk (int i = 0; i <messagedigest.length; i ++) {string shahex = integer.toHexString (messageDigest [i] & 0xff); if (shahex.length () <2) {hexString.append (0); } hexstring.append (shahex); } mparms = hexString.toString (); // Hasil enkripsi/ * * Persyaratan API: Jika Anda mengonfirmasi bahwa permintaan GET berasal dari server WeChat, silakan kembalikan konten parameter EchoStr sebagaimana adanya, dan akses akan berlaku dan menjadi pengembang dengan sukses. Kalau tidak, akses akan gagal. */ // Langkah 3: Pengembang memperoleh string terenkripsi dan dapat membandingkannya dengan tanda tangan untuk mengidentifikasi bahwa permintaan tersebut berasal dari akses WeChat yang berhasil. System.out.println (tag + ":" + mparms + "--->" + tanda tangan); if (mparms.equals (Signature)) {// System.out.println (tag + ":" + mparms + "---->" + Signature); printwriter.write (echostr); } else {// akses gagal, tidak perlu menulis kembali // system.out.println (tag + "akses gagal"); }} @Override Protected void dopost (httpservletRequest req, httpservletResponse resp) melempar servletException, ioException {doG (req, resp); }}Artikel pertama Java WeChat Development API diperkenalkan kepada Anda di sini. Saya harap Anda akan terus memperhatikan konten yang diperbarui di masa mendatang. Terima kasih!