In jüngster Zeit wurde die Entwicklung der WeChat Public Account -Zahlung für einige Tage untersucht, da sie erstmals durchgeführt wurde und nur die Implementierungsfunktion erreicht hat
Die allgemeine Zahlung des WeChat Public Account ist eigentlich sehr einfach und ist grob in drei Schritte unterteilt. Der erste Schritt muss durch die Benutzeringenehmigung erhalten werden. Im Folgenden wird der Entwicklungsprozess jedes Schritts eingeführt.
Zunächst muss klargestellt werden, dass die Bezahlung der WeChat Public -Account eine Webversionszahlung ist. Daher ist es erforderlich, einen Schritt mehr WeChat -Autorisierung als die App direkt abzunehmen. Das heißt, Sie müssen das OpenID des Benutzers erhalten. Die Art der Transaktion, die von WeChat Public Account verwendet wird
Daher müssen wir OpenID bekommen, und gleichzeitig können wir eine Logik bewältigen, die wir brauchen. Es gibt zwei Möglichkeiten, um die Benutzerautorisierung zu erhalten: 1.Scope = snsapi_base;
SCOPE ist snsapi_base
https://open.weixin.qqq Paytitle% 3D1%26VB2CTAG%3D4_2030_5_1194_60 & response_type = code & scope = snsapi_base & state = 123#wechat_redirect
Scope ist SNSAPI_USERINFO
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http% 3a%2f%2fnba.BLUEWEBGame.com%2FoAntp < Status#Wechat_Redirect
Das offizielle Dokument von Wechat enthält auch eine detaillierte Erklärung für jeden Parameter, und ich werde die Schlüsselparameter sorgfältig erklären. Zunächst ist der Anhang nicht viel zu sagen, dass der Anhang Ihres WeChat -öffentlichen Kontos bis zum Tode festgelegt ist. Sie können die Parameter auf diesem Link nähern. Zustandsparameter können als erweiterte Felder verstanden werden. Das Folgende ist der Codeclip von OpenID.
// OpenID httpclientil util = httpclientil.getInstance (); WXPAYCONFIG.Appsecret); /Sns/oAuth2/access_token ", null, map); logger.info (" returnstr: [" + returnstr +"] ");AccessToken.java
öffentliche Klasse accessoken {private String access_token; Return expires_in;} public void setExpires_in (String expires_in) {this.expires_in = expires_in; OpenID;} public void setOpenID (String OpenID) {this.openid = openID;} public String e () {return scope;} public void setScop UnionId;} public void setUnionId (String UnionId) {this.unionId = UnionId; OpenID = " + OpenID +", Scope = " + Scope +", UnionId = " + UnionId +"] "]"] "]"Zweitens können wir nach dem Erhalten von OpenID die nächste einheitliche Platzierung von Bestellungen durchführen. Das Dokument der einzelnen Schnittstelle auf WeChat ist detaillierter, und ich werde die spezifische Parameterbedeutung nicht einführen. Der intuitivste Code ist unten veröffentlicht, insbesondere daran, dass Sie auf die richtige Signatur achten müssen. Der in der Signatur verwendete Schlüssel ist nicht AppSecret, sondern der Händlerschlüssel, den Sie bei der Bewerbung definiert haben.
// Uniform die Bestellung WXPaysendData Daten ; IP); alias ("xml", wxpayreturnData.class);UnifiedOrderService.java
Öffentliche Klasse UnifiedOrneService {private endgültige statische Logger = loggerfactory.getLogger (UnifiedOnderService.class); Objekt, Parameter = neuer Treemap <Objekt, Objekt> (); ; .Getout_trade_no ()); ", Data.getOpenid ()); Parameter.put (" Device_info ", d ata.getDevice_info ()); Logger.info (" Sign: "+wxSign.CreateSign (Parameter, Schlüssel)); XmlfriendlynameCoder ("- _", "_"); xml); " + ReturnXml);} catch (Ausnahme E) {e.printstacktrace ();} return returnXml;}}}}}}}}}WxSign
Public class wxSInen {private statische String charakterienerCoding = "utf-8"; Parameter.EntrySet (); IT. {sb.append (k + "=" + v + "&");}} sb.append ("key =" + key); ); {Return string.ValueOf (System.currentTtimemillis () / 1000);}}Das Letzte, was zu erwähnen ist, ist die Notify_url Callback -Adresse, um die Asynchron -Benachrichtigungs -Rückrufadresse der WeChat -Zahlung zu erhalten.
Wir haben die Vorbereitung der Vorbereitung der Vorbezahlungstransaktion erhalten, damit wir den letzten Schrittbetrieb ausführen können. Verwenden Sie H5, um die Zahlungs -API anzupassen.
// H5 -Zahlung attr.addattribute ("Appid", redata.getappid ()); ; ; "Appid", redata.getappid ()); ); ", wxSIGN.CreateSign (SignMap, wxPayConfig.Key));Verwenden Sie nach dem Übergeben der erforderlichen Parameter an die Seite WeChat, um eine Methode zur Einrichtung der Zahlung bereitzustellen.
<Script> Funktion geturlParam (Name) {// Konstruieren Sie ein reguläres Ausdrucksobjekt, das Zielparameter enthält var reg = new Regexp ("(^| &)" + name + "= ([^&]*) (& | $)) "); // übereinstimmen dem Zielparameter var r = window.location.search.substr (1) .Match (reg); // Rückgabe des Parameterwerts if (r! NULL;} Funktion Onbridgeready () {var appid = GeturlParam ('Appid'); 'SignType'); TIMESTAMP, // "1395712654", // Timelia, die zweite Anzahl von Sekunden seit 1970 "Noncestern": Noncestern, // "E61463f8efa94090b1f366cccfbb444", // Random String "Ge, //" Prepay_Id = U802345JSDGSDG- "/ "Prepay_Id = U802345JSDG -", // "Prepay_Id = U802345JSDGSD. ": SignType, //" Md5 ", // WeChat Signature Methode:" Paysign ": Paysign, //" 70ea570631e4bbb79628fbca905343ffadd89 Zurück erinnert das WeChat -Team feierlich: res.err_msg kehrt zu OK zurück, nachdem der Benutzer erfolgreich bezahlt hat, aber es garantiert nicht, dass es absolut zuverlässig ist ("Zahlungserfolg");} if (res.err_msg == " get_brand_wcpay_request: civiling ") {alert (" Transaktionsanschläge ");} if (res.err_msg ==" get_wcpay_request: fail ") lert (" Zahlungsfehler ");}}); == "untergesteckt") {if (document.addeVentristener) {document.adDeventListener ('Wei xinjsbridgeready', Onbridgeready, Falsch);} else if (document .atachevent) {Dokument.attacheDevent ('wixinjsBridgeeidy', onBridGeidy. AttachEvent ('OnWeixinjsbridgeready', Onbridgeready);}} else {Onbridgeready ();}} </script>Sie können Ihre eigene Rückgabeseite anpassen, auf der Sie das Ergebnis zurückgeben.
Zusammenfassung: Da ich es zum ersten Mal tue, kann ich diesen Artikel schreiben, und Freunde, die mit Anfängern teilen, können schließlich gute Einblicke haben, um eine Nachricht zu hinterlassen und zu diskutieren Fortschritt.
Das oben genannte ist der Inhalt der Entwicklung von WeChat -Bezahlung von Java.