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
Die unten zusammengefassten Wissenspunkte werden ...
<br />Worte sind das unvermeidliche Produkt ...
// Ich habe einen ganzen Nachmittag für die Insta...
Wie in der Abbildung gezeigt: Tabellendaten Wie e...
In diesem Artikel wird die Installations- und Kon...
1: Anmeldeeingang der Baidu-Website Website: http:...
Ich lerne derzeit etwas über Front-End-Leistungsop...
Ich habe kürzlich an einem Projekt gearbeitet – Bu...
Wie üblich posten wir zuerst den Bildeffekt: Das ...
Dieser Artikel stellt ein interessantes Pseudoele...
Da immer mehr Entwickler SASS verwenden, müssen w...
Ohne weitere Umschweife werde ich den Code direkt...
Inhaltsverzeichnis 1. Problem 2. Lösung 2.1 Pagin...
Sechs Schritte zur Installation von MySQL (nur da...
Ab diesem Abschnitt erklären wir das Implementier...