Das Geschäftsszenario des Unternehmens erfordert die Verwendung der WeChat-Kontoaufteilungsfunktion. Ich habe sie einen Nachmittag lang gemäß der Dokumentation auf der offiziellen Website debuggt, bevor sie endlich funktionierte, und den Vorgang der Verwendung der WeChat-Kontoaufteilung von Nodejs aufgezeichnet. Voraussetzungen
Konkrete Umsetzung// @router posten -> teilen -> /common/payment/share asynchron teilen() { const { ctx } = dies const nonce_str = ctx.service.wx.randomStr() //Händler-ID const mch_id = "123456" // x Applet-App-ID const appid = "wx123456" // Bestellnummer const out_order_no = '1609745196755nFvdMaYub2' // WeChat-Zahlungsauftragsnummer const transaction_id = '4200000801202101044301662433' //Händlergeheimnis Konstantschlüssel = "9813490da1ffb80afaa36f6f1265e490" // Die Parameter dieses Blocks werden in der offiziellen Dokumentation ausführlich beschrieben const params = { Appid, mch_id, nonce_str, Out_Order_Nr., Empfänger: `[{"Konto": "123qwe","Betrag": 1,"Beschreibung": "Beschreibung","Typ": "PERSONAL_OPENID"}]`, Zeichentyp: 'HMAC-SHA256', Transaktions-ID, } // Die Signaturmethode muss HMAC-SHA256 sein const sign = ctx.service.wx.sign(Params, Schlüssel, 'HMAC-SHA256') // xmlString const formData = `<xml> <appid>${appid}</appid> <mch_id>${mch_id}</mch_id> <nonce_str>${nonce_str}</nonce_str> <out_order_no>${out_order_no}</out_order_no> <Transaktions-ID>${Transaktions-ID}</Transaktions-ID> <sign>${sign}</sign> <sign_type>HMAC-SHA256</sign_type> <receivers>${params.receivers}</receivers> </xml>` const res = warte auf ctx.curl( „https://api.mch.weixin.qq.com/secapi/pay/profitsharing“, { // Sie müssen das Zertifikat apiclient_cert verwenden Zertifikat: fs.readFileSync(Pfad.join(__dirname,'../../../cert/apiclient_cert.pem')), // Sie müssen das Zertifikat apiclient_key verwenden Schlüssel: fs.readFileSync(Pfad.join(__dirname,'../../../cert/apiclient_key.pem')), Methode: "post", Daten: Formulardaten, } ) const datastring = res.data.toString() xml2js.parseString(Datenstring, (Fehler, Ergebnis) => { wenn (Fehler) { ctx.throw(422, Fehler) } console.log(Ergebnis) }) } //randomStr // Erzeuge einen zufälligen String randomStr(len = 24) { const str = „abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789“; lass Ergebnis = ''; für (sei i = 0; i < len; i++) { Ergebnis += str[Math.floor(Math.random() * str.length)]; } Ergebnis zurückgeben; } // Signatur // mchKey ist das Geheimnis des Händlers, sonst wird die Signatur nicht bestanden sign(data, mchKey, signType = 'MD5') { const-Schlüssel = []; für (const Schlüssel in Daten) { if (data[key] !== undefiniert) { Tasten.drücken(Taste); } } // Wörterbuchsortierung => Schlüssel=Wert const stringA = Schlüssel .Sortieren() .map(Schlüssel => `${Schlüssel}=${decodeURIComponent(Daten[Schlüssel])}`) .verbinden('&'); // Händlerschlüssel verketten const stringSignTemp = stringA + '&key=' + mchKey; // verschlüsseln let hash; wenn (Zeichentyp === 'MD5') { Hash = crypto.createHash('md5').update(stringSignTemp); } anders { Hash = crypto.createHmac('sha256', mchKey).update(stringSignTemp, 'utf8'); } const paySign = hash.digest('hex').toUpperCase(); paySign zurückgeben; } Wenn bei Ihnen das Problem eines Signaturfehlers auftritt. Sie können die von Ihnen generierten Formulardaten zur schrittweisen Überprüfung in das Tool zur Überprüfung der Schnittstellensignatur einfügen. Weitere häufige Probleme mit der Schnittstelle zur Kontenaufteilung Dies ist das Ende dieses Artikels über den Beispielcode zur Implementierung der WeChat-Kontoaufteilung mit Nodejs. Weitere relevante Inhalte zur WeChat-Kontoaufteilung mit Nodejs finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Grafisches Tutorial zur kostenlosen Installationsversion von MySQL 5.7.17 winx64
>>: Eine Methode zum Verbergen von Prozessen unter Linux und die dabei auftretenden Fallstricke
<br />Dieses Beispiel untersucht hauptsächli...
Einführung: Die Nachteile der Speicherung aller D...
Inhaltsverzeichnis Vorwort Einführung in SessionS...
Inhaltsverzeichnis 1 Redis-Konfigurationsdatei 2 ...
Vorwort Wenn Sie jemand fragt: „Was sind die Merk...
Im Allgemeinen : [1 wichtige Flagge] > [4 beson...
Einführung in die Sicherheitslücke Die SigRed-Sic...
Durch die Verwendung von Abkürzungen können Sie di...
Inhaltsverzeichnis Vorwort 1. Was ist Skalierbark...
Reine Front-End-Implementierung:切片上傳斷點續傳.斷點續傳muss...
In diesem Artikel finden Sie den spezifischen Cod...
0x0 Einführung Zunächst einmal: Was ist ein Hash-...
Vorwort: Die Funktion „Gruppieren nach“ ruft das ...
Installation, Konfiguration, Start, Anmeldung und...
Inhaltsverzeichnis Kurze Einleitung 1. Überprüfen...