Penggunaan amplop merah WeChat sudah sangat lebar. Artikel ini memperkenalkan contoh pengiriman amplop merah ke WeChat. Anda memerlukan akun publik bersertifikat, dan Anda dapat membuka platform pembayaran dan pedagang WeChat dan mengaktifkan izin amplop merah tunai.
https://pay.weixin.qq.com alamat login pedagang. Pilih untuk melihat paket tunai merah di pusat pemasaran
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 Deskripsi dokumen situs web resmi dari amplop merah tunai merah tunai merah
Mari kita lihat beberapa tes sederhana terlebih dahulu. Premisnya adalah Anda perlu mengisi ulang terlebih dahulu di platform pedagang. Prabayar tidak didukung. Artikel ini hanya merangkum panggilan dan implementasi antarmuka amplop Red WeChat Cash. Secara khusus, Anda perlu menerapkan cara memanggil antarmuka ini berdasarkan bisnis Anda sendiri.
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 Ada semua penjelasan untuk amplop merah biasa dalam dokumen. Panggilan harus memiliki sertifikat dari platform pedagang.
Parameter yang diperlukan juga terdaftar. Memutuskan sesuai dengan kebutuhan Anda.
1.java merangkum objek amplop merah
/*** Objek amplop merah* @author xiao shuai shuai* @date 2016-8-17 11:12:19 AM* @Open Sumber China http://my.oschina.net/xshuai*/kelas publik Redpack mengimplementasikan serial {tanda tangan pribadi; // verifikasi yang dihasilkan berdasarkan atribut string pribadi mch_billno; // Pesan Nomor Private String MCH_ID; // Nomor Pedagang Private String WXAppID; // wechat appid pribadi string send_name; // nama pedagang string pribadi re_openid; // pengguna OpenId string pribadi Total_amount; // Jumlah pembayaran Private String Total_num; // Jumlah penerima amplop merah. String nonce_str; // random string // set dapat dihilangkan} 2. Kelas alat yang diperlukan createBillno adalah untuk menghasilkan nomor pesanan pedagang. Persyaratan dokumen situs web resmi adalah sebagai berikut:
/*** Kelas Alat Amplop Merah* @Author Xiao Shuai Shuai* @Date 2016-8-17 11:12:19 AM* @Open Sumber China http://my.oschina.net/xshuai*/Kelas Publik Redpackutil {/** Guitas Nomor Urutan Merchant* @param Mcha Mch {Public Nomor {/** String statis createBillno () {// Komposisi: mch_id+yyyymmdd+10 digit angka yang tidak dapat diulang dalam satu hari // 10 digit nomor yang tidak dapat diulang dalam satu hari adalah sebagai berikut: // setiap pengguna terikat ke userid, userid mereka berbeda, ditambah yang dihasilkan secara acak (10-panjang (pengguna); SimpleDateFormat df = new SimpleDateFormat ("yyyymmdd"); String nowtime = df.format (dt); panjang int = 10; return wxconstants.mch_id + nowtime + getRandomnum (panjang); } / ** * Hasilkan angka acak dengan digit spesifik * @param length * @return * / public static string getRandomnum (panjang int) {string val = ""; Acak acak = acak baru (); untuk (int i = 0; i <panjang; i ++) {val+= string.valueof (random.nextInt (10)); } return val; }} 3. Pekerjaan sebelumnya sangat sederhana dan membutuhkan nomor sertifikat dan pedagang. Dan jika platform pedagang memiliki jumlah, Anda dapat menguji antarmuka amplop merah tunai
Redpack pack = redpack baru (null // Pertama kali kosong, redpackutil.createBillno () // nomor pesanan pedagang, "nomor pedagang Anda sendiri", "appid dari akun resmi", "nama", "OpenId dari pengguna yang akan dikirim", "Jumlah Pengiriman adalah misalnya 100, yang merupakan RMB 1", "" hanya "," 127. " nama "," note "," random string ");
Kecuali untuk masuk dalam tes, itu kosong. Segala sesuatu yang lain bisa diisi. Sekarang kami menghasilkan tanda tangan tanda; menghasilkan tanda sesuai dengan parameter dalam objek paket;
Algoritma tanda tangan spesifik https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 Alamat yang diberikan oleh situs web resmi tersebut
https://pay.weixin.qq.com/wiki/tools/signverify/ Anda dapat membandingkannya di halaman tes ini untuk melihat apakah enkripsi konsisten.
String Signs = Signature.getSign (pack); // Signset yang dihasilkan dikemas ke objek paket.
4. Kirim paket merah
RedPackService Service = redpacservice baru (); String result = service.redpackorder (xml); // Apakah data dikembalikan oleh permintaan berhasil?
RedPackService kelas publik {/*** Alamat Antarmuka Paket Merah*/Private Final Static String redp_order_path = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; / *** Paket Merah* Sertifikat Diperlukan* @param ParamXml* @Return*/ Public Static String RedPackOrder (String ParamXml) {coba {WXBaseService Service = WXBaseService baru (redp_order_path); return service.sendpost (paramxml); } catch (exception e) {log.error (e.toString ()); } return null; }} /** * Pergi ke API Posting Data XML melalui https * * @param URL API Alamat * @param xmlobj XML Objek untuk mengirimkan * @return API mengembalikan data aktual dari paket * @throws IoException * @throws noLstoreException * @ththrows Unrestablexception * @throwscepion noxuchoxception * @throwsception @throwsception * @throwsception * @throwsception @throwsception * KeyManagementException */ Public String SendPost (String URL, String PostDataxML) Melempar IoException, KeyStoreEexception, UncecoverableKeyException, NosuchalgorithMException, KeymanagementException {if (! HasInit) {init (); } Hasil string = null; Httppost httppost = httpppost baru (url); // Selesaikan bug garis bawah ganda untuk xstream // xstream xStreamForRequestPostData = new xstream (domdriver baru ("UTF-8", XMLFriendlyLyNeNCoder baru ("-_", "_"))); // Konversi objek data untuk mengirimkan ke API ke dalam posting data format XML ke API // string postdataxml = xStreamForRequestPostData.toxml (xmlobj); Util.log ("API, data Post masa lalu adalah:"); Util.log (postdataxml); // Ini harus menunjukkan bahwa pengkodean UTF-8 digunakan, jika tidak teks Cina ke server API XML tidak dapat berhasil diidentifikasi postentity strestity = strestity baru (postdataxml, "UTF-8"); httppost.addheader ("tipe konten", "teks/xml"); httppost.setentity (postentity); // atur konfigurasi pemohon httppost.setConfig (requestConfig); Util.log ("Permintaan Eksekusi" + httppost.getRequestline ()); coba {httpresponse response = httpclient.execute (httppost); Httpentity entitas = response.getEntity (); hasil = entityutils.tostring (entitas, "UTF-8"); } catch (ConnectionPoolTimeOutException e) {LOG.E ("http dapatkan Throw ConnectionPoolTimeOutException (Wait Time Out)"); } catch (ConnectTimeOutException e) {LOG.E ("http dapatkan Throw ConnectTimeOutException"); } catch (SocketTimeOutException e) {log.e ("http dapatkan throw socketTimeOutException"); } catch (exception e) {log.e ("http dapatkan lemparan lempar pengecualian"); } akhirnya {httppost.abort (); } hasil pengembalian; } 5. XML yang dikembalikan berhasil. Karena hanya diisi ulang 1 yuan, itu telah diuji dan dikirim beberapa hari yang lalu. Jadi informasi berikut dikembalikan.
<xml> <return_code> <! [Cdata [Success]]> </return_code> <agulat_msg> <! [Cdata [saldo akun tidak cukup, silakan isi ulang pada platform pedagang dan coba Sekali lagi]]> </return_msg> <rence_code> <! [Cdata [fail]]> </rence_code> <cerr_code> <! [Cdata [notenough]]> </ err_code> <err_code_des> <! [Cdata] [saldo akun tidak cukup, silakan uji ulang pada merda dan uji coba lagi dan uji coba lagi dan uji coba lagi, cdata, cdata, uji coba lagi, cData, uji coba lagi, cData, uji coba lagi, cdata quescode, cdata, uji ulang, cdata quescode quescode, soal questipe quescode ore. _billno> <! [Cdata [1371729102201629220149762756]]> </cch_billno> <cch_id> <! appId]]> </wxappid> <re_openid> <! [cdata [od5qqww8e_lbiaw9szzud-2xhtmvx Ini adalah openId pengguna]]> </fe_openid> <t total_amount> 100 </total_amount> </xml>
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.