Saya telah membaca blog tentang pembayaran WeChat yang saya tulis hari ini, dan ada beberapa orang yang membacanya. Saya tidak tahu apakah itu karena blog tidak cukup rinci atau apa yang sedang terjadi. Sebagian besar dari mereka meminta saya untuk kode sumber. Saya pikir programmer masih perlu memiliki proses berpikir seperti itu, sehingga mereka tidak memberikan kode sumber secara langsung. Seperti kata pepatah, "Lebih baik mengajari orang cara memancing daripada memancing." Karena itu, saya berharap untuk meluangkan waktu untuk melambangkan kode sendiri saat membaca artikel. Oke, jangan katakan banyak omong kosong. Kali ini saya akan membagikan penggunaan antarmuka amplop merah WeChat Cash.
Berikut ini adalah pengantar amplop tunai merah oleh dokumen pengembangan weChat:
Amplop tunai merah adalah salah satu alat pemasaran yang disediakan oleh Platform Pedagang Pembayaran WeChat. Sejak diluncurkan, mereka telah dicintai oleh pedagang dan pengguna. Pedagang dapat mendistribusikan amplop merah tunai ke pengguna pembayaran weChat melalui platform ini. Setelah pengguna menerima amplop merah, dana tiba di akun perubahan pembayaran WeChat pengguna, yang memiliki ekspor penggunaan yang sama dengan dana lain di dompet koin; Jika pengguna tidak menerimanya, dana akan dikembalikan ke akun pembayaran WeChat pedagang setelah 24 jam.
Makna produk
WeChat Payment Cash Red Amplop selalu disukai oleh pengguna karena cara mereka membawa dana secara tunai. Dalam beberapa tahun terakhir, amplop tunai merah telah memainkan peran penting; Mereka juga telah membawa tanggapan hangat terhadap kegiatan pemasaran pedagang dalam operasi harian. Secara umum, amplop tunai merah memainkan peran penting dalam skenario termasuk tetapi tidak terbatas pada:
Singkatnya, WeChat Cash Red Amplop adalah alat pemasaran yang dapat meningkatkan kekakuan pengguna dengan mengikuti akun resmi, mendaftar, dll. Kali ini, saya fokus berbagi pengalaman saya dari perspektif pengembangan program
1. Ketentuan yang diperlukan untuk menggunakan fungsi amplop merah WeChat
1. Memiliki platform pedagang weChat dan sertifikat rahasia lengkap
2. Pedagang harus memiliki keseimbangan yang cukup untuk digunakan (jika tidak cukup, Anda dapat menggunakan TenPay untuk mengisi ulang dari platform pedagang)
3. Yayasan Pengembangan yang Lebih Baik untuk Pembayaran WeChat
Poin -poin utama dan kesulitan pengembangan kedua
1 algoritma tanda tangan wechat
2 httppclient dan penggunaan sertifikat
3 Membaca Dokumen WeChat (https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3)
Jika Anda memiliki pembayaran WeChat H5 atau memindai kode QR yang harus dibayar, Anda dapat membaca bagian dokumen ini, yang merupakan sepotong kue. Sangat mudah untuk dipahami. Pada saat yang sama, selama Anda menguasai pengetahuan httpclient, semuanya akan siap.
Tiga kode langsung
public static void sendReDpack (string mch_billno, string openId, string send_name, string total_fee, string total_num, string wishing, string act_name, string komentar, string ip) melempar pengecualian {string non = paycommonutil.createNceCestr (); Sortedmap <object, object> p = new treemap <object, object> (); p.put ("nonce_str", non); p.put ("mch_billno", mch_billno); p.put ("mch_id", configutil.mch_id); p.put ("wxappid", configutil.appid); p.put ("re_openid", openId); p.put ("total_amount", total_fee); p.put ("total_num", "1"); p.put ("client_ip", "127.0.0.1"); p.put ("act_name", act_name); p.put ("send_name", send_name); p.put ("Wishing", Wishing); p.put ("komentar", komentar); String Sign = paycommonutil.createSign ("UTF-8", p); System.out.println (tanda); p.put ("tanda", tanda); String reuqestxml = paycommoneTil.getRequestXml (p); Keystore keystore = keystore.getInstance ("pkcs12"); FileInputStream instream = new fileInputStream (file baru (configutil.cert_path)); coba {keystore.load (instream, configutil.mch_id.tochararray ()); } akhirnya {enterstream.close (); } SslContext sslcontext = sslcontexts.custom (). LoadKeyMaterial (keystore, configutil.mch_id.tochararray ()). Build (); SSLConnectionCocketFactory sslsf = SSLConnectionCockFactory baru (sslcontext, string baru [] {"tlsv1"}, null, sslconnectionCocketfactory.browser_compatible_hostname_verifier); CloseableHttpClient httpClient = httpclients.custom () .setsslsocketfactory (sslsf) .build (); Coba {httppost httppost = httppost baru ("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"); // pengembalian antarmuka httppost.addheader ("tipe konten", "aplikasi/x-www-form--forppost.addheader (" content-type "," aplikasi/x-www-form--form--form--form--form--porm ("content-type", "Application/X-WWW-FORM-FORM-FORM-FORM-FORM-FORMPOCE- System.out.println ("Execting Request" + httppost.getRequestline ()); // XML yang diminta harus ditranskode ke pengkodean ISO8859-1, jika tidak, ia rentan terhadap kesalahan tanda tangan atau teks pada kesalahan tampilan amplop merah, reqentity = string baru (string baru (reuqestxml.getbytes (), "iso8859-1")); // atur ketik httppost.setentity (reqentity); CloseableHttpresponse response = httpclient.execute (httppost); coba {httpentity entity = response.getEntity (); System.out.println ("----------------------------------------"); System.out.println (response.getStatusLine ()); if (entitas! = null) {System.out.println ("Panjang konten respons:" + entity.getContentLength ()); BufferedReader bufferedReader = baru bufferedReader (inputStreamReader baru (entity.getContent (), "UTF-8")); Teks String; while ((text = bufferedreader.readline ())! = null) {System.out.println (teks); }} Entityutils.consume (entitas); } akhirnya {response.close (); }} akhirnya {httpclient.close (); }} Poin -poin berikut yang perlu diperhatikan adalah:
// XML yang diminta harus ditranskode ke pengkodean ISO8859-1, jika tidak, ia cenderung menandatangani kesalahan atau tampilan teks pada amplop merah tidak benar.
StringEntity reqentity = new stringEntity (string baru (reuqestxml.getbytes (), "iso8859-1"));
Tempat ini dapat dikatakan hampir menabrak saya dan mencoba berbagai debugging. Tidak apa-apa untuk menambahkannya dengan sikap mencoba-dan-lihat. Ini mungkin karena perbedaan antara httpClient dan httpsconnection asli dalam transmisi data. Tidak ada banyak penelitian yang dilakukan di sini.
Menyebut metode ini lebih mudah, seperti halnya berikut
public static void main (string args []) {try {sendredpack ("12828839012016101420", "penerima openId", "xxx", "100", "1", "ucapan selamat dari UNVELOP RED," 12.127, "12.17. } catch (Exception e) {// TODO Auto-Entoerated Catch Block E.PrintStackTrace (); }} Informasi yang dicetak setelah amplop merah dikirim adalah sebagai berikut:
TTP/1.1 200 OK Panjang konten respons: 567 <xml> <return_code> <! [Cdata [sukses]]> </err_code> <err_code_des> <! [Cdata [Success]]> </err_code> <err_code_des> <! <cch_billno> <! [Cdata [12828839012016101421]]> </cch_billno> <cch_id> <! <re_openid> <! [cdata [xxxx]]> </fe_openid> <t total_amount> 100 </t total_amount> <send_listid> <!
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.