Schauen Sie sich ohne weiteres den Code an.
RequestHandler RequestHandler = New RequestHandler (Super.GetRequest (), Super.getResponse ()); // token // innerhalb von zwei Stunden gültig und tagen Sie Token nach zwei Stunden erneut. // Token in der Anwendung requestHandler.getTokenReal () aktualisieren; System.out.println ("Wechat Pay Get Token ============================" +Token); // RequestHandler initialisieren requestHandler.init (); RequestHandler.init (Appid, Appsecret, Appey, PartnerKey, Key); Code: Lokales System generiert Bestellungen
// Paketbestellparameter SortedMap <String, String> packageParams = new treemap <string, string> (); packageParams.put ("bank_type", "wx"); // Zahlungstyp packageparams.put ("Körper", "xxxx"); // Produktbeschreibung PackageParks.put ("fee_type", "1"); // Bankwährungspaketpacks.put ("input_charset", "utf-8"); // Zeichen set packageParams.put ("notify_url", "http://xxxx.com/xxxx/wxcallback"); // Die Benachrichtigungsadresse hier wird unter Verwendung der externen Netzwerkadresse getestet und achten Sie darauf, ob Port 80 geöffnet ist. packageParams.put ("out_trade_no", no); // Händlerbestellnummer PackageParks.put ("Partner", Partnerrid); // Händlernummernpackungspaket festlegen ("SPBILL_CREATE_IP", Super.getRequest (). GetRemotehost ()); // Die von der Bestellung generierte Maschine IP bezieht sich auf den Browser -IP -Paketpaket des Benutzers ("Total_fee", String.ValueOf (rstotal)); // Der Gesamtbetrag des Produkts ist in Einheiten unterteilt // Zahlungsparameter SortedMap <String, String> Signparams = New TREEMAP <String, String> (); Signparams.put ("Appid", Appid); Signparams.put ("Noncester", Noncester); Signparams.put ("Traceid", PropertiesUtils.getOrderno ()); Signparams.put ("Timestamp", TimeStamp); Signparams.put ("Paket", packageValue); Signparams.put ("appey", this.appkey); // Um eine Zahlungssignatur zu generieren, muss der ursprüngliche Wert des Urlencoders für den SHA1 -Algorithmus verwendet werden! String Sign = ""; try {sign = sha1util.createSha1sign (Signparams); } catch (Ausnahme e) {e.printstacktrace (); } // Zusätzliche Parameter für nicht teilnehmende Signaturen zu Signparams.put ("Sign_method", "SHA1") hinzufügen; Signparams.put ("app_signature", sign); // API-Zahlungspaket endet ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CODE: Erstellen Sie Prepaid Fast -Bestellabschluss
// Prepaid schneller Reihenfolge generieren, um sie zu vervollständigen, zu Android, iOS zurückzukehren und die erforderlichen Parameter für WeChat fallen zu lassen. SortEdMap <String, String> payParams = new Treemap <String, String> (); payParams.put ("Appid", Appid); payParams.put ("noncester", noncestre); payParams.put ("Paket", "Sign = wxPay"); PayParams.put ("Partnerid", partnerrid); payParams.put ("prepayid", vorbereiten); payParams.put ("appey", this.appkey); // Die Differenz ist hier 1000 aufgrund der Parameterlängengrenze. int time = (int) (system.currentTimemillis () / 1000); payParams.put ("timestamp", String.Valueof (Zeit)); System.out.println ("Timestamp:" + Zeit); // Signature String paysign = ""; try {paySign = SHA1UTIL.CreateSha1Sign (PayParams); } catch (Ausnahme e) {e.printstacktrace (); } payParams.put ("Zeichen", paysign); // Spoof -JSON -Daten werden an den Client BasicDBObject BackObject = new BasicDBObject () zurückgegeben. backObject.put ("Appid", Appid); backObject.put ("noncester", payParams.get ("noncestern")); BackObject.put ("Paket", "Sign = wxPay"); BackObject.put ("Partnerid", payParams.get ("Partnerid")); backObject.put ("prepayid", payParams.get ("prepayid"); backObject.put ("appey", this.appkey); backObject.put ("timestamp", payParams.get ("timestamp")); backObject.put ("Zeichen", payParams.get ("Zeichen")); String backstr = dataObject.toString (); System.out.println ("Backstr:" + Backstr); Rückstufe zurück; Bisher wurde die Vorauszahlungsreihenfolge generiert und an den Client zurückgegeben und darauf gewartet, dass der WeChat -Server benachrichtigt wird. Die Adresse der Benachrichtigung ist Benachrichtigung_url, der die Vorauszahlungsreihenfolge generiert.
ReaktionsHandler reshandler = new reaktionshandler (Anfrage, Antwort); Reshandler.SetKey (PartnerKey); // Anforderungsobjekt erstellen // RequestHandler queryReq = new RequestHandler (Anfrage, Antwort); //queryreq.init (); if (reshandler.istenpaysign () == true) {// Händlerbestellnummer String out_trade_no = reshandler.getParameter ("out_trade_no"); System.out.println ("out_trade_no:" + out_trade_no); // Tenpay Order Number String transaction_id = resHandler.getParameter ("transaction_id"); System.out.println ("Transaction_id:" + Transaction_id); // Betrag, in Einheiten der Divisionsstring Total_fee = resHandler.getParameter ("Total_fee"); // Wenn ein Rabattkupon verwendet wird, hat Rabatt einen Wert, Total_fee+Rabatt = das ursprünglich angeforderte Total_Fee String Rabatt = reshandler.getParameter ("Rabatt"); // Zahlungsergebnis String fracing_state = resHandler.getParameter ("Trade_State"); // Signatur und Ergebnis beurteilen, wenn ("0" .Equals (Trade_state)) { // ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ // Senden Sie eine erfolgreiche Nachricht an Tenpay -System. Das Tenpay -System enthält nach Erhalt dieses Ergebnisses reshandler.sendTocft ("Erfolg") keine späteren Benachrichtigungen mehr. // Erfolg an den WeChat -Server zurückgeben, andernfalls 8 Benachrichtigungen in 30 Minuten zurückgeben "Erfolg"; } else {system.out.println ("Signaturverifizierung fehlgeschlagen"); reshandler.sendtocft ("fail"); response.setcharactercoding ("utf-8"); }} else {System.out.println ("fail -md5 fehlgeschlagen"); }Der obige Code ist der Code, den Java WeChat Payment Server implementiert. Ich hoffe, jeder wird es sorgfältig studieren, um die WeChat -Zahlung zu erkennen.