1.1 Menganalisis data panggilan balik WeChat
InputStream instream = request.getInputStream (); bytearrayoutputStream outSteam = bytearrayoutputStream (); byte [] buffer = byte baru [1024]; int len = 0; while ((len = instream.read (buffer))! = -1) {outsteam.wrow (len = instream.read (buffer)))! len);} outsteam.close (); instream.close ();/** Dapatkan informasi xml pengembalian dari panggilan weChat notify_url*/string hasil = string baru (outsteam.tobyteArray (), "UTF-8"); Hasilnya adalah data XML yang dikembalikan oleh panggilan balik WeChat.
1.2 Menguras data XML yang dikembalikan oleh WeChat
/*** informasi XML dikembalikan oleh panggilan balik WeChat yang masuk* mengembalikan nilai mudah dalam bentuk peta* dom4j parses xml dan mengembalikan pasangan nilai kunci elemen tingkat pertama. If the first-level element has children, the value of this node is empty* @param strXML* @return* @throws DocumentException */@SuppressWarnings("rawtypes")public static SortedMap<String, String> dom4jXMLParse(String strXML) throws DocumentException {SortedMap<String, String> scratch = new TreeMap<String, String>();Document doc = DocumentHelper.parsetext (strxml); elemen root = doc.getrooteLement (); untuk (iterator iterator = root.elementiterator (); iterator.hasnext ();) {elemen e = (elemen) iterator.next (); smap.put (e.getname (), e.gettext ()); Mengembalikan data format peta yang dipesan, dan nilainya digunakan untuk mendapatkan data menggunakan smap.get ("nama bidang").
1.3 Verifikasi legalitas tanda tangan pengembalian WeChat
/*** Apakah akan menandatangani WeChat v3, aturannya adalah: mengurutkan nama parameter az, dan parameter yang menghadapi nilai kosong tidak berpartisipasi dalam tanda tangan* lulus di weChat untuk mengembalikan data parameter format sortedmap setelah analisis informasi* memverifikasi apakah pesan yang dikirimkan oleh wechat* @param smile* @param apikey set Kunci oleh* RAUTED @RET @RREK* @param @param @param apikey set kuncinya* rangka @Ret @Ret @Ret* static boolean isWeChatSign (sortedmap <string, string> gores, string apikey) {stringBuffer sb = stringBuffer baru (); set es = smoke.entryset (); iterator it = es.iterator (); while (it.hasnext ()) {map.entry entri = (map.entry) it.next (); string k = (string) entri.getKey (); string v = (string) entri.getValue (); if (! "Sign" .sequals (k) && null! = v &&! " + "&");}} SB.Append ("key =" + apikey);/** Tanda Tangan Terverifikasi*/String Sign = md5util.md5Encode (sb.toString (), "UTF-8"). Touppercase ();/** Tanda tangan hukum yang dikembalikan oleh sisi wechat*/string = () (); smap.get ("tanda")). Touppercase (); return validSign.equals (tanda);} Saran Pribadi: Sebelum memverifikasi legitimasi tanda tangan WeChat, Anda dapat menentukan apakah return_code dan result_code yang dikembalikan oleh WeChat berhasil.
Di atas adalah legalitas dari data verifikasi Versi V3 WeChat Pay yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!