1. WeChat Official Dokument WeChat Zahlungentwicklungsprozess (öffentliche Kontozahlung)
Gehen wir zunächst zum Abschnitt Entwicklungsschritte der offiziellen Dokumentation von Wechat Pay, um die erforderlichen Einstellungen zu überprüfen.
[Bild-Upload fehlgeschlagen ... (Image-5EB825-1531014079742)]
Da die WeChat -Zahlung hohe Berechtigungen erfordert, können nur zertifizierte Servicekonten die Erlaubnis zur Verwendung der WeChat -Zahlungsschnittstelle haben. Es fällt uns schwer, es persönlich zu beantragen, daher müssen wir ein Konto von anderen Freunden ausleihen.
Kommen Sie zum Geschäftsprozess Teil des Dokuments und überprüfen Sie den WeChat -Zahlungsprozess (ich denke, dies erfordert immer noch ein sehr sorgfältiges Verständnis und eine Sichtweise, die Ihnen hilft, den WeChat -Entwicklungsprozess zu verstehen).
Wenn Sie dann auf die WeChat -Zahlungsschnittstelle zugreifen, müssen viele Parameter übergeben werden. Siehe die einheitliche Single
[Bild-Upload fehlgeschlagen ... (Image-DF7051-1531014079742)]
Nachdem Sie die offiziellen WeChat-Zahlungsdokumente oben überprüft haben, sollten Sie ein gewisses Verständnis für diese haben, aber ich denke immer noch, dass die Entwicklung der WeChat-Zahlung sehr problematisch ist, sodass wir SDK Dritter verwenden werden, um sich zu entwickeln.
2. WeChat zahlen SDK-Entwicklung von Drittanbietern (öffentliche Kontozahlung)
Dies ist eine Zahlung für das offizielle Konto. Wir verwenden Best-Pay-SDK. Dieser SDK verwendet PayRequest und Payresponse, um die Anforderungsschnittstelle und die entsprechenden Ergebnisse zu verringern. Die wichtigsten Parameter, die dynamisch übergeben werden müssen, sind OpenID (Benutzereinzigartige Kennung) und OrderID. Schauen wir uns als nächstes einen Blick auf die Entwicklung.
1. Konfiguration
// WeChat Public Account Zahlungskonfiguration WXPAYH5CONFIG WXPAYH5CONFIG = NEW WXPAYH5CONfig (); wxpayh5config.setAppid ("xxxxx"); wxpayh5config.setAppSecret ("xxxxxxx"); wxpayh5config.setMchid ("xxxxxx"); wxpayh5config.setMChKey ("xxxxxxx"); wxpayh5config.setNotifyUrl ("http: // xxxxx"); // Pay -Klasse sind alle Methoden in dieser Klasse BestpayServiceImPL BESTPAYService = new BESTPAYServiceImpl (); bestpayService.setwxpayh5config (WXPAYH5Config);2. Die Zahlung einleiten
Payrequest payrequest = neuer payrequest (); payRequest.setPaytypeenum (Bestpaytypeenum.wxpay_h5); payRequest.setOrderId ("123456"); payRequest.setOrderName ("WeChat öffentliches Konto Zahlungsauftrag"); payRequest.setOrderAmount (0,01); payRequest.setOpenID ("openID_xxxxxx"); BestpayService.pay (PayRequest);3. Asynchroner Rückruf
bestPayService.asyncNotify();
Dies ist es, was dieser SDK 10 Codezeilen zur Lösung von WeChat -Zahlung sagt.
Nach Abschluss der Zahlung gibt WeChat das Zahlungsergebnis an uns als Zahlungs -XML -Daten zurück. Wir müssen diese Daten an die asynchrone Benachrichtigungs -URL (Notify_url) übergeben, um die Überprüfung des Zahlungsergebnisses zu vervollständigen (Überprüfung der Signatur, den Zahlungsstatus überprüfen). Beide Schritte der SDK sind für uns durchgeführt. Rufen Sie einfach BESTPAYService.asyncnotify (notifyData) an. Nach Abschluss der Überprüfung müssen wir ein Datenstück an WeChat zurückgeben:
<xml> <return_code> <! [CDATA [Erfolg]]> </return_code> <return_msg> <! [CDATA [OK]]> </return_msg> </xml>
Sagen Sie WeChat, dass die Überprüfung abgeschlossen wurde und uns keine Anfragen nach asynchronen Benachrichtigungen senden.
Ist es immer noch nicht klar, wie man in das Projekt integriert wird? Es spielt keine Rolle, es gibt auch eine Beispiel -Demo, die klarer sein kann.
3. Demo Run
Demo-URL ist: https://github.com/pay----Broup/best-pay-demo
Unser Hauptcontroller ist hier:
@Controller @Slf4JPublic Class PayController {@autowired Private BestpayServiceImpl BESTPAYService; /*** Zahlung initiieren*/@getmapping (value = "/pay") public modelAndView pay (@RequestParam ("openID") String OpenID, Karte <String, Objekt> Karte) {PayRequest Request = new payRequest (); Random random = new random (); // Pay Request Parameter Request.SetPayTypeenum (Bestpaytypeenum.wxpay_h5); Request.SetOrderID (string.ValueOf (random.Nextint (1000000000))); Request.SetorderAmount (0,01); request.setOrderName ("Beste Zahlung SDK"); Request.SetopenID (openID); log.info ("【Zahlung initiieren】 request = {}", jsonutil.tojson (request)); Payresponse payresponse = bestpayService.pay (Anfrage); log.info ("【Zahlung initiieren】 response = {}", jsonutil.tojson (payresponse)); map.put ("payresponse", payresponse); Neue ModelAndView zurückgeben ("Pay/Create", Karte); }/*** Asynchroner Rückruf*/@postmapping (value = "/notify") public modelAndView melden (@RequestBody String benachrichtigenData) löst eine Ausnahme aus {log.info ("【Async Rückruf】 Request = {}", notifyData); PayResponse response = bestpayService.asyncnotify (notifyData); log.info ("【asynchrischer Rückruf】 response = {}", jsonutil.tojson (Antwort)); Neue ModelAndView zurückgeben ("Pay/Erfolg"); }}Sie können dies selbst herunterladen. Mal sehen, wie es funktioniert
Projektbeschreibung
Müssen auf JDK -Version> 1.8 ausgeführt werden
Dieses Projekt wurde mit Springboot 1.5.1 entwickelt
Projektstruktur
src/main/java/com/github/llllly835├kräfte paydemoapplication.java ├── ServletInitializer.java ├── Konfiguration
Auslaufbeispiel
Sie müssen den Schlüssel vor dem Ausführen konfigurieren. Siehe payconfig.java
Führen Sie den Befehl aus
Git Clone https://github.com/pay-group/best-pay-democd Best-pay-demomvn Clean Packagejava -jar Ziel/*. Krieg
Browserzugriff http://127.0.0.1:8080/pay
Zusammenfassen
Das oben genannte ist der gesamte Prozess der Zahlungsentwicklung der Java -Version von WeChat Public Account, die Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten!