Die Verwendung von Wechat Red -Umschlägen ist bereits sehr breit. In diesem Artikel wird Beispiele für das Senden von roten Umschlägen auf WeChat vorgestellt. Sie benötigen ein zertifiziertes öffentliches Konto und können die WeChat -Zahlungs- und Händlerplattform eröffnen und die Berechtigungen für rotes Umschlag ermöglichen.
https://pay.weixin.qqq.com Händleranmeldeadresse. Wählen Sie die Cash -Red -Pakete im Marketingzentrum anzusehen
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 Offizielle Website -Dokument Beschreibung von Bargeld -Red -Umschlägen
Schauen wir uns zuerst einige einfache Tests an. Die Prämisse ist, dass Sie zuerst auf der Handelsplattform aufladen müssen. Vorauszahlung wird nicht unterstützt. Dieser Artikel fasst nur die Anrufe und die Implementierung der WeChat -Cash -Red -Hüllkurve -Schnittstelle zusammen. Insbesondere müssen Sie implementieren, wie Sie diese Schnittstelle basierend auf Ihrem eigenen Unternehmen aufrufen.
https://pay.weixin.qqq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3 Es gibt alle Erklärungen für gewöhnliche rote Umschläge im Dokument. Der Anruf muss ein Zertifikat von der Händlerplattform haben.
Die erforderlichen Parameter sind ebenfalls aufgeführt. Entscheiden Sie nach Ihren Bedürfnissen.
1.Java verkapuliert ein rotes Umschlagobjekt
/*** Red Envelope-Objekt* @author xiao shuai shuai* @date 2016-8-17 11:12:19 AM* @Open Quelle China http://my.oschina.net/xshuai*/Public Class Retpack implements serializable {privates Zeichenfolgenschild; // Überprüfung erzeugt basierend auf Attributen private Zeichenfolge mch_billno; // Bestellnummer private Zeichenfolge mch_id; // Händlernummer private String wxAppid; // WeChat Appid private String send_name; // Händlername private String re_openid; // Benutzer openID private String Total_amount; // Zahlungsmenge private String Total_num; // Die Anzahl der roten Umschlagempfänger, die rotes Umschlag nur sein. String nonce_str; // zufällige String // Setzen Sie abgelassen} 2. Die erforderliche Werkzeugklasse CreateBillno besteht darin, die Händlerbestellnummer zu generieren. Die offiziellen Dokumentanforderungen der Website sind wie folgt:
/** * Red envelope tool class* @author Xiao Shuai Shuai* @date 2016-8-17 11:12:19 am * @Open Source China http://my.oschina.net/xshuai */public class RedPackUtil { /** * Generate merchant order number* @param mch_id Merchant number* @param userId userID of this user * @return */ public statische String createBillno () {// Komposition: MCH_ID+YYYYymmdd+10-Mitte-Nummern, die nicht innerhalb eines Tages wiederholt werden können // 10-Meldungsnummern, die nicht innerhalb eines Tages wiederholt werden können, sind wie folgt: //, da jeder Benutzer an Benutzer gebunden ist, sein Benutzerid ist unterschiedlich und zufällig erzeugt. SimpleDateFormat df = new SimpledateFormat ("yyyymmdd"); String NowTime = df.format (dt); int länge = 10; return wxConstants.mch_id + Now Time + getRandomnum (Länge); } / ** * Generieren Sie zufällige Zahlen mit spezifischen Ziffern * @param Länge * @return * / public static String getRandomnum (int länge) {string val = ""; Random random = new random (); für (int i = 0; i <länge; i ++) {val+= string.Valueof (random.nextint (10)); } return val; }} 3. Die vorherige Arbeit ist sehr einfach und erfordert ein Zertifikat und eine Händlernummer. Und wenn die Händlerplattform einen Betrag hat, können Sie die Cash Red Envelope -Schnittstelle testen
Redpack pack = neuer redpack (null // Das erste Mal ist leer, redpackUtil.createbillno () // Händlerbestellnummer "Ihre eigene Händlernummer", "Appid of the Official Account", "Name", "," Open ID des Benutzers, der gesendet werden soll ". Name "," Hinweis "," zufällige Zeichenfolge ");
Mit Ausnahme des Anmeldes im Test ist es leer. Alles andere kann gefüllt werden. Jetzt erzeugen wir eine Zeichensignatur; Generieren Sie ein Zeichen gemäß den Parametern im Packobjekt;
Spezifischer Signaturalgorithmus https://pay.wexin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3 Adresse von der offiziellen Website angegeben
https://pay.weixin.qq.com/wiki/tools/signverify/ Sie können es auf dieser Testseite vergleichen, um festzustellen, ob die Verschlüsselung konsistent ist.
String Signs = Signature.GetSign (Pack); // Das generierte Zeichen wird in das Pack -Objekt gepackt.
4. Senden Sie rote Pakete
RedpackService Service = new RedpacService (); String result = service.redpackorder (xml); // sind die Daten, die von der Anforderung erfolgreich sind?
public class RedpackService {/*** Redpaket -Schnittstellenadresse*/private endgültige statische String redp_order_path = "https://api.mch.Weixin.qq.com/mmpaymkttransfers/sendredpack"; / *** rotes Paket* Zertifikat erforderlich* @param paramxml* @return*/ public static String redPackorder (String paramxml) {try {wxBaseService service = new WXBaseService (rotcorder_path); return Service.SendPost (paramxml); } catch (Ausnahme e) {log.Error (e.toString ()); } return null; }} /** * Go to API post xml data via Https* * @param url API address* @param xmlObj XML data object to submit* @return API return the actual data of the package* @throws IOException * @throws KeyStoreException * @throws UnrecoverableKeyException * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public String SendPost (String -URL, String postdataxMl) löst IOException, KeystoreException, nicht recoverableKeyException, NoSuchalgorithmException, KeyManagementException {if (! hasInit) {init () aus; } String result = null; Httppost httppost = new httppost (URL); // Lösen Sie den Fehler von doppelten Unterzügen für Xstream // Xstream xstreamforRequestPostData = new Xstream (neuer Domdriver ("UTF-8", neuer XMLFriendLyNameCoder ("-_", "_")); // Das Datenobjekt umwandeln, um der API in den XML -Formatdatenposten in die API // String postdataxml = xstreamforRequestPostData.toxml (xmlobj) zu senden; Util.log ("API, Posts vergangene Daten lautet:"); Util.log (postdataxml); // Es muss angeben, dass die UTF-8-Codierung verwendet wird, da der chinesische Text an den API-Server XML ansonsten nicht erfolgreich identifiziert werden kann, die die Stripentity postentity = new strackentity (postdataxml, "utf-8") identifiziert werden kann. httppost.addHeader ("Inhaltstyp", "text/xml"); httppost.setentity (Postentität); // Setzen Sie die Konfiguration des Anforderers httppost.setConfig (RequestConfig); Util.log ("Anforderung ausführen" + httppost.getRequestline ()); try {httPresponse response = httpclient.execute (httppost); Httpentity entity = response.getEntity (); result = entityutils.tostring (Entity, "utf-8"); } catch (ConnectionPoolTimeOutException e) {log.e ("http Get Throw ConnectionPoolTimeOutException (Wartezeit)"); } catch (ConnectTimeOutException e) {log.e ("Http Get Throw ConnectTimeOutException"); } catch (SockettimeoutException e) {log.e ("http to Throw -SockettimeoutException"); } catch (Ausnahme e) {log.e ("http to Twerfen Ausnahme"); } endlich {httppost.abort (); } Rückgabeergebnis; } 5. Der zurückgegebene XML ist erfolgreich. Da es nur 1 Yuan aufgeladen hat, wurde es vor einigen Tagen getestet und gesendet. Die folgenden Informationen werden also zurückgegeben.
<xml> <return_code> <! [CDATA [Erfolg]]> </return_code> <return_msg> <! [CDATA [Kontoauslastung ist unzureichend, bitte auf der Handelsplattform aufladen und versuchen wieder]]> </return_msg> <result_code> <! [cdata [fail]]> </result_code> <err_code> <! [CDATA [NOTENOUGH]> </err_code> <err_code_des> <! [CDATA [Account Balance is ungerecht, bitte liefern Sie sich auf der Merchant -Plattform. _billno> <! [cdata [1371729102201629220149762756]> </mch_billno> <mch_id> <! [CDATA [Dies ist die für die Vertraulichkeit gelöschte Händlernummer. appid]]> </wxappid> <re_openid> <! [CDATA [OD5QQW8E_LBIAW9SZUD-2XHTMVX Dies ist das OpenID des Benutzers]]> </re_openid> <Total_amount> 100 </Total_amount> </xml> </xml> </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.