Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 16619|Antwort: 0

[Schnittstelle] C# implementiert WeChat-Zahlung

[Link kopieren]
Veröffentlicht am 15.03.2019 11:59:31 | | |

Kürzlich habe ich die offizielle WeChat-Kontoentwicklung gemacht und hatte einige Probleme mit der WeChat-Zahlung, war drei Tage lang verwirrt, aber heute habe ich es endlich geschafft. In dieser Zeit möchte ich einigen großen Göttern für ihre Hilfe danken und meine Erfahrungen mit ihnen teilen, solange sie heiß sind.

Bevor wir WeChat Pay einführen,

Ich muss zur WeChat-Entwicklungsplattform zur Zertifizierung gehen, ich werde nicht viel zu diesen Authentifizierungs- und Konfigurationsinformationen sagen, hier stammt hauptsächlich von der Codeebene, um die Bezahlung zu realisieren.

Offizielle Dokumentation: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Angesichts mehrerer Parameter in JS gebe ich eine Haupterklärung:


Während des Entwicklungsprozesses gibt es vier sehr wichtige Parameter: einer ist appid, AppSecret, apikey und Händlernummer. Die appID in js oben ist eine davon. timeStamp ist ein Zeitstempel mit 10 Ziffern, nonceStr ist eine Zufallszahl innerhalb von 32 Bits, die beiden wichtigsten hier und die fehleranfälligsten sind package und paySign. Lass mich es dir eins nach dem anderen sagen. Sprechen wir zuerst über das Paket, wir müssen hier prepay_id verwenden, dieser Parameter ist die von WeChat generierte Bestellnummer, wir müssen die einheitliche Bestellschnittstelle aufrufen, um sie zu erhalten. Offizielle Dokumentation: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Wie Sie in der Dokumentation sehen können, werden viele Parameter benötigt, um prepay_id zu erhalten, und einer der wichtigsten Parameter ist die Signatur. Hinweis: Die Unterschrift hier unterscheidet sich von der Zahlungssignatur in JS. Im signierten Algorithmus-Dokument gibt es zwei Punkte, und ich betone nur zwei Punkte. Die eine ist die Reihenfolge der Parameter, die gemäß ASCII von klein zu groß gespleißt werden müssen, und die andere ist, dass der Apikey nicht falsch sein darf – wo befindet sich dieser Apikey? Melden Sie sich auf der Händlerplattform an, um es einzurichten.

Nachdem die für die Signatur benötigten Strings verschlissen wurden, kann MD5-Verschlüsselung verwendet werden, um die Signatur zu erhalten. Dann kombinieren Sie die Signatur und alle vorherigen Parameter zu einer XML-Formatzeichenkette und rufen die URL-Adresse der Schnittstelle auf:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Sprechen wir über den letzten Parameter in JS, PaySign: PaySign. Das Gleiche gilt für den Zahlungssignaturalgorithmus, bei dem die anderen 5 Parameter in JS der Reihe nach zusammengefügt werden, plus apikey, MD5-Verschlüsselung, okay.
Der Signaturalgorithmus ist derselbe, aber die Parameterwerte sind unterschiedlich. Hier ist eine Sache, die man beachten sollte. Beim Bezahlen der Unterschrift werden die Zufallszahl nonceStr und der Zeitstempel verwendet, und diese beiden Parameter werden beim Signieren verwendet
Wenn die Werte dieser beiden Parameter in JS gleich sind, sind sie dieselbe Zufallszahl und derselbe Zeitstempel. Warum? Obwohl die Dokumentation das nicht sagt, verstehe ich, dass Zahlungssignaturen durch zufällige Zahlen und Zeitstempel generiert werden.
Dann senden Sie beim Bezahlen die zufällige Zahl, den Zeitstempel und die Zahlungssignatur zusammen, und wenn WeChat verifiziert, basiert es auch auf der zufälligen Zahl und dem Zeitstempel in JS, um eine Signatur zu erstellen und mit der von Ihnen gesendeten Zahlungssignatur zu vergleichen.
Wenn Sie die neue Zufallszahl und den Zeitstempel in js erneut erhalten, unterscheidet sich die berechnete Signatur von der von Ihnen gesendeten Signatur und es wird ein Fehler gemeldet: Signatur fehlgeschlagen.

Das gilt nur für die Code-Ebene, und natürlich gibt es noch ein paar weitere Punkte zu beachten. Zum Beispiel muss der nützliche Openid-Parameter auch durch das Aufrufen der Schnittstelle erhalten werden und ob das Verzeichnis für die Zahlungsautorisierung korrekt konfiguriert ist.
Die letzte Satzzusammenfassung: Schau dir das Dokument genau an und frag schließlich andere, du kannst WeChat-Zahlungsgruppen finden, darin gibt es viele Götter, ich hatte schon einmal ein Problem und habe zwei Tage lang gekämpft, ohne es zu lösen (manchmal reicht es nicht, nur das Dokument anzuschauen),
Dann fügte er wütend acht WeChat-Entwicklungsgruppen hinzu und kam schließlich unter der Anleitung der Experten heraus. Nochmals vielen Dank. Programmierer sind eine Gruppe von Menschen, die es lieben zu teilen, und sie teilen gerne ihr Wissen. Wenn du es also nicht verstehst, frag mehr.






Vorhergehend:Beispiel für die Push-Template-Nachrichtenfunktion der C# WeChat-Oberfläche
Nächster:Ich habe ein Verständnis für das Kundenservicesystem großer Unternehmen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com