Ich habe den Blog über WeChat -Zahlung gelesen, die ich heutzutage geschrieben habe, und es gibt einige Leute, die ihn lesen. Ich weiß nicht, ob es daran liegt, dass der Blog nicht detailliert genug ist oder was los ist. Die meisten von ihnen fragen mich nach Quellcode. Ich denke, Programmierer müssen noch einen solchen Denkprozess haben, sodass sie dem Quellcode nicht direkt angegeben haben. Wie das Sprichwort sagt: "Es ist besser, den Menschen beizubringen, wie man fischt, als zu fischen." Daher hoffe ich, dass ich mir etwas Zeit in Anspruch nehmen kann, um den Code selbst beim Lesen des Artikels zu typisieren. Ok, sagen wir nicht viel Unsinn. Dieses Mal werde ich die Verwendung der WeChat Cash Red Envelope -Schnittstelle teilen.
Das Folgende ist eine Einführung in Cash Red -Umschläge durch WeChat -Entwicklungsdokumente:
Cash Red -Umschläge sind eines der von der WeChat Payment Merchant Platform bereitgestellten Marketing -Tools. Seit ihrem Start wurden sie von Händlern und Benutzern geliebt. Händler können rotes Umschläge an WeChat -Zahlungsbenutzer über diese Plattform verteilen. Nachdem der Benutzer den roten Umschlag erhalten hat, gelangen die Mittel zum WeChat -Zahlungsänderungskonto des Benutzers, das den gleichen Nutzungsexport wie andere Mittel in der Münzbrieftasche aufweist. Wenn der Benutzer sie nicht erhält, werden die Mittel nach 24 Stunden auf das WeChat -Zahlungskonto des Händlers zurückgegeben.
Produktbedeutung
WeChat Payment Cash -Rote Umschläge wurden von den Benutzern immer bevorzugt, da sie Geld in bar tragen. In den letzten Jahren haben Cash Red -Umschläge eine wichtige Rolle gespielt. Sie haben auch warme Reaktionen auf die Marketingaktivitäten der Händler im täglichen Betrieb gebracht. Im Allgemeinen spielen Cash Red -Umschläge eine wichtige Rolle in Szenarien, einschließlich, aber nicht beschränkt auf:
Zusammenfassend lässt sich sagen
1.
1. Haben Sie eine WeChat -Händlerplattform und komplette geheime Zertifikate
2. Händler müssen über genügend Gleichgewicht verfügen (falls nicht genug, können Sie TenPay verwenden, um sich von der Händlerplattform aufzuladen).
3.. Bessere Entwicklungsstiftung für die WeChat -Zahlung
Die wichtigsten Punkte und Schwierigkeiten der zweiten Entwicklung
1 Wechat -Signaturalgorithmus
2 Httppclient und die Verwendung von Zertifikaten
3 Lesen von WeChat -Dokumenten (https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3)
Wenn Sie eine WeChat -H5 -Zahlung haben oder den QR -Code scannen, können Sie diesen Teil des Dokuments lesen, der ein Kinderspiel ist. Es ist mühelos zu verstehen. Gleichzeitig wird alles fertig sein, solange Sie das Wissen von httpclient beherrschen.
Drei Direktcode
public static void sendRedpack (String mch_billno, String OpenID, String send_name, String Total_fee, String Total_num, String -Wunsch, String act_name, String Bemerkung, String ip) löst Ausnahme aus {String non = paycommonutil.createTenonCestrear (); SortEdMap <Objekt, Objekt> p = Neues Treemap <Objekt, Objekt> (); 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 ("Wunsch", Wunsch); P.put ("Bemerkung", Bemerkung); String Sign = paycommonutil.createSign ("utf-8", p); System.out.println (Zeichen); P.put ("Zeichen", Zeichen); String reuqestxml = paycommonutil.getRequestXML (p); Keystore keystore = keystore.getInstance ("pkcs12"); FileInputStream instream = new FileInputStream (neue Datei (configUtil.cert_path)); try {keystore.load (instrenm, configUtil.mch_id.toCharArray ()); } endlich {Enterstream.close (); } SSLContext sslContext = sslContexts.custom (). LoadKeymaterial (Keystore, configUtil.mch_id.toCharArray ()). Build (); SSLConnectionsOCKETFACTORY SSLSF = NEU SSLCONNEctionsOCKETFACTORY (SSLCONTEXT, NEUE STRING [] {"TLSV1"}, NULL, SSLCONNECTIONSOCKETFACTORY.BROWER_COMPATIBLE_HOSTNAME_VERIFIER); CloseableHttpclient httpclient = httpclients.custom () .setsSlsocketFactory (SSLSF) .build (); try { HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack");// Refund interface httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); System.out.println ("Ausführung von Anforderungen" + httppost.getRequestline ()); // Das angeforderte XML muss auf die Codierung von ISO8859-1 transcodiert werden. Andernfalls ist es anfällig für Signaturfehler oder Text in den roten Hüllkurven-Anzeigen-Fehlern Strietentity Reqentity = new strietEntity (neuer String (reuqestxml.getBytes (), "ISO8859-1"); // Typ httppost.setentity (Reqentity) festlegen; ClodableHttPesponse -Antwort = httpclient.execute (httppost); try {httpentity entity = response.getEntity (); System.out.println ("------------------------------------"); System.out.println (response.getStatusline ()); if (entity! BufferedReader bufferedReader = new bufferedReader (neuer InputStreamReader (entity.getContent (), "utf-8"); Stringtext; while ((text = bufferedReader.readline ())! = null) {System.out.println (text); }} EntityUtils.consume (Entity); } endlich {response.close (); }} schließlich {httpclient.close (); }} Die folgenden Punkte sind zu beachten:
// Der angeforderte XML muss auf die Codierung von ISO8859-1 transcodiert werden, da es anfällig für Zeichenfehler oder Textanzeigen auf dem roten Umschlag ist, ist falsch.
StrackEntity reqentity = new strackentity (neuer String (reuqestxml.getBytes (), "ISO8859-1"));
Es kann gesagt werden, dass dieser Ort mich fast zum Debuggen gestürzt und versucht haben. Es wäre in Ordnung, es mit einer Try-and-See-Haltung hinzuzufügen. Dies kann auf den Unterschied zwischen httpclient und der nativen HTTPSConnection in der Datenübertragung liegen. Hier gibt es keine viel Nachforschungen.
Das Aufrufen dieser Methode ist einfacher, genau wie die folgenden
public static void main (String args []) {try {sendRedpack ("12828839012016101420", "Empfängers OpenID", "xxx", "100", "1", "Glückwunsch zum Rich, jedes Jahr", "Neujahrsrückumschlag", "New Year's New Year's Red Envelope". } catch (Ausnahme e) {// Todo automatisch generierter Block E. printstacktrace (); }} Die nach dem roten Umschlag gesendeten Informationen lautet wie folgt:
TTP/1.1 200 OK -Antwortinhaltslänge: 567 <xml> <return_code> <! [CDATA [Erfolg]> </err_code> <restcode_des> <! [CDATA [Erfolg]> </err_code> <err_code_des> <! <mch_billno> <! [cdata [12828839012016101421]> </mch_billno> <mch_id> <! [cdata [12828883901]]> </mch_id> <wxappid> <! [CDATA [xxxx]] <RE_OPENID> <! [CDATA [xxxx]]> </re_openid> <totholes_amount> 100 </total_amount> <send_listid> <! [CDATA [1000041701201610143000090813093]] </send_listId> </xml>> </xml>> </xml>
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.