لقد قرأت المدونة حول مدفوعات WeChat التي كتبتها هذه الأيام ، وهناك عدد غير قليل من الأشخاص الذين يقرؤونها. لا أعرف ما إذا كان السبب في ذلك هو أن المدونة غير مفصلة بدرجة كافية أو ما يجري. معظمهم يسألني عن رمز المصدر. أعتقد أن المبرمجين ما زالوا بحاجة إلى إجراء مثل هذه التفكير ، لذلك لم يعطوا رمز المصدر مباشرة. كما يقول المثل ، "من الأفضل تعليم الناس كيفية الصيد من الصيد". لذلك ، آمل أن أستغرق بعض الوقت لوصف الكود بنفسك أثناء قراءة المقال. حسنًا ، دعنا لا نقول الكثير من الهراء. هذه المرة سوف أشارك استخدام واجهة WeChat Cash Red Envelope.
فيما يلي مقدمة للأظرف الحمراء النقدية من قبل وثائق تطوير WeChat:
الأظرف الحمراء النقدية هي واحدة من أدوات التسويق التي توفرها منصة WeChat Payment Merchant. منذ إطلاقها ، أحبوا من قبل التجار والمستخدمين. يمكن للتجار توزيع الأظرف النقدية Red على مستخدمي الدفع WeChat من خلال هذا النظام الأساسي. بعد أن يستقبل المستخدم المغلف الأحمر ، تصل الأموال إلى حساب تغيير دفع WeChat للمستخدم ، والذي يتمتع بنفس الاستخدام مثل الأموال الأخرى في محفظة العملة ؛ إذا لم يتلقها المستخدم ، فسيتم إرجاع الأموال إلى حساب دفع WeChat التاجر بعد 24 ساعة.
معنى المنتج
لطالما كان المستخدمون يفضلون المظلات النقدية المدفوعة من WeChat بسبب الطريقة التي يحملون بها الأموال نقدًا. في السنوات الأخيرة ، لعبت الأظرف النقدية Red دورًا مهمًا ؛ كما جلبوا ردود دافئة على أنشطة تسويق التجار في العمليات اليومية. بشكل عام ، تلعب الأظرف النقدية الحمراء دورًا مهمًا في السيناريوهات بما في ذلك على سبيل المثال لا الحصر:
خلاصة القول ، إن الأظرف الحمراء Cash Cash هي أداة تسويقية يمكن أن تزيد من عصي المستخدم من خلال اتباع الحسابات الرسمية ، والتسجيل ، وما إلى ذلك. هذه المرة ، أركز على مشاركة تجاربي من منظور تطوير البرنامج
1. الشروط المطلوبة لاستخدام وظيفة الظرف الأحمر WeChat
1. لديك منصة تاجر WeChat وشهادات سرية كاملة
2. يحتاج التجار إلى تحقيق توازن كافٍ لاستخدامه (إن لم يكن كافيًا ، يمكنك استخدام TenPay لإعادة شحن من منصة التاجر)
3. مؤسسة تطوير أفضل لدفع WeChat
النقاط الرئيسية والصعوبات في التطوير الثاني
1 خوارزمية توقيع WeChat
2 httppclient واستخدام الشهادات
3 قراءة مستندات WeChat (https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php؟chapter=13_4&index=3)
إذا كان لديك دفعة WeChat H5 أو مسح رمز الاستجابة السريعة للدفع ، فيمكنك قراءة هذا الجزء من المستند ، وهو قطعة من الكعكة. من الجهد أن نفهم. في الوقت نفسه ، طالما أنك تتقن معرفة httpclient ، سيكون كل شيء جاهزًا.
ثلاثة رمز مباشر
public static void sendRedPack (String mch_billno ، string openId ، String send_name ، string total_fee ، String Total_num ، string tish ، string act_name ، string compl ، string ip) rems stise {string non = payCommonutil.createenoncestr () ؛ 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 ("التمنيات" ، أتمنى) ؛ P.Put ("ملاحظة" ، ملاحظة) ؛ STRING SIGN = PAYCOMMONUTIL.CRATESIGN ("UTF-8" ، P) ؛ System.out.println (علامة) ؛ P.Put ("علامة" ، علامة) ؛ String reuqestxml = paycommonutil.getRequestxMl (p) ؛ keystore keystore = keystore.getInstance ("PKCS12") ؛ FileInputStream instream = new FileInputStream (ملف جديد (configutil.cert_path)) ؛ Try {keystore.load (instream ، configutil.mch_id.tochararray ()) ؛ } أخيرًا {entersream.close () ؛ } sslContext sslContext = sslcontexts.custom (). loadkeymaterial (keystore ، configutil.mch_id.tochararray ()). build () ؛ sslConnectionsCoundFactory sslsf = new SSLConnectionSocketFactory (sslContext ، سلسلة جديدة [] {"tlsv1" ، null ، sslconnectionsocketfactory.browser_compatible_hostname_verifier) ؛ closablehttpclient httpclient = httpclients.custom () .SetSslsocketFactory (sslsf) .build () ؛ جرب {httppost httppost = new httppost ("https://api.mch.wixin.qq.com/mmpaymkttransfers/sendredpack") ؛ // reected interface httpost.addheader ("content-ype" ، "application/xwwwwrlenced ؛ system.out.println ("request request" + httppost.getRequestLine ()) ؛ // يجب نقل XML المطلوبة إلى تشفير ISO8859-1 ، وإلا فإنه عرضة للأخطاء المميزة أو النص على أخطاء عرض المغلف الأحمر requentity = new Striterity (سلسلة جديدة (reuqestxml.getbytes () ، "ISO8859-1")) ؛ // set type httppost.setentity (reqentity) ؛ closablehttpresponse استجابة = httpclient.execute (httppost) ؛ حاول {httpentity unitity = response.getentity () ؛ System.out.println ("----------------------------------------------") ؛ System.out.println (response.getStatusLine ()) ؛ if (ectity! = null) {system.out.println ("طول محتوى الاستجابة:" + entity.getContentLength ()) ؛ BufferedReader BufferedReader = جديد BufferedReader (New InputStreamReader (entity.getContent () ، "UTF-8")) ؛ نص سلسلة بينما ((text = bufferedReader.ReadLine ())! = null) {system.out.println (text) ؛ }} intityUtils.consume (الكيان) ؛ } أخيرًا {desponse.close () ؛ }} أخيرًا {httpclient.close () ؛ }} النقاط التالية التي يجب ملاحظتها هي:
// يجب نقل XML المطلوب إلى ترميز ISO8859-1 ، وإلا فإنه عرضة لتوقيع الأخطاء أو عرض النص على المغلف الأحمر غير صحيح.
requentity requentity = جديد (سلسلة جديدة (reuqestxml.getbytes () ، "ISO8859-1")) ؛
يمكن القول أن هذا المكان قد تحطمت لي تقريبًا وحاول تصحيح الأخطاء المختلفة. سيكون من المقبول إضافته بموقف محاولة. قد يكون هذا بسبب الفرق بين httpclient و httpsconnection الأصلي في نقل البيانات. لا يوجد الكثير من الأبحاث التي أجريت هنا.
استدعاء هذه الطريقة أسهل ، تمامًا مثل ما يلي
Public Static Void Main (String args []) {try {sendRedPack ("12828839012016101420" ، "المتلقي OpenID" ، "XXX" ، "100" ، "1" ، "Congrat ton Get Rich ، كل عام" ، "New Year Red Red" ، "Red Renvelope New Year". } catch (استثناء e) {// todo catch e.printstacktrace () ؛ }} المعلومات المطبوعة بعد إرسال المغلف الأحمر هي كما يلي:
TTP/1.1 200 OK OK RESPONT LECTION: 567 <XML> <REPTREAT_CODE> <! <mch_billno> <! <re_openid> <!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.