Vor kurzem ist die Entwicklung des WeChat-Applets in die Zahlungsphase eingetreten. Ich beschäftige mich mit der App-Entwicklung und kenne den Zahlungsvorgang daher immer noch auswendig. Die Zahlung für das WeChat-Miniprogramm ist jedoch etwas seltsam. Der Antrag wird im offiziellen Konto erstellt, aber die Einführung des Dokuments ist im offiziellen Konto nicht zu finden Auch der Umfang bzw. die Reichweite der App-Zahlung ist fraglich. Das Folgende ist der Eingang zum Miniprogramm-Zahlungsdokument (verschachtelt in der Miniprogramm-API):
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php? Kapitel= 7_3&index=1
Miniprogramm-Zahlungsschritte:
1, Vorauszahlung
2, basierend auf Vorauszahlungsdaten + Unterschrift——> Zahlung einleiten
3. Zahlungsrückruf
Im Folgenden finden Sie eine kurze Beschreibung dieser drei Schritte:
1. Diese Schnittstelle übermittelt die Zahlungsinformationen (Bestellnummer, Preis usw.) über das Frontend an den Entwicklerserver und gibt dann einige Informationen zurück, die das eigentliche Frontend bezahlen muss, z. B.
Vorauszahlungsschnittstelle des Entwicklerservers:
https://()htm?total_fee=100&cid=6001&orderCodes=2016120119 { "sign":"A2****************A6", "timestamp":"14****************68", "package":"Sign=WXPay", "partnerId":"14****************02", "appid":"wx****************ab", "nonceStr":"9f****************37", "prepayId":"wx****************54" }
2. Zahlung einleiten (es ist zu beachten, dass zum Einleiten der Zahlung kein Hochladen einer App-ID erforderlich ist,
, aber zum Signieren von PaySign ist eine App-ID erforderlich, und das ist auch der Fall zuerst platziert) )
wx.requestPayment({ nonceStr: res.data.nonceStr, package: "prepay_id="+res.data.prepayId, signType: 'MD5', timeStamp: res.data.timestamp, paySign: sign,//<strong><span style="color:#ff0000;">五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp(需要注意的是,这5个参数签名排序的顺序按照ASCII字典序排序)</span></strong> success: function(res){ console.log("支付成功"); }, fail: function() { }, complete: function() { } })
Signaturzeichen generieren
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index= 1&t=20161122
Downloadadresse des WeChat-Applets MD5-Verschlüsselungstool: https://code.csdn.net/snippets/2019875/master/download
var MD5Util = require('../../../utils/md5.js'); var sign = ''; //<strong><span style="color:#ff0000;">顺序按照ASCII字典序排序</span></strong> var signA = "appId="+app.appId+"&nonceStr="+res.data.nonceStr+"&package=prepay_id="+res.data.prepayId+"&signType=MD5&timeStamp="+res.data.timestamp; var signB = signA+"&key="+app.key; sign = MD5Util.MD5(signB).toUpperCase();
Der obige Code zum Generieren der Signatur ist mein Code, nicht Es ist sehr klar. Die detaillierte Beschreibung des offiziellen Dokuments ist unten aufgeführt:
Gehen Sie davon aus, dass die übertragenen Parameter wie folgt sind:
appid: wxd930ea5d5a258f4f(需要注意的是appid 在wx.requestPayment({})发起支付是不上传,但是签名时需要) mch_id: 10000100 device_info: 1000 body: test nonce_str: ibuaiVcKdpRxkhJA
Schritt 1: Befolgen Sie die Schlüssel=Wert-Format für die Parameter und folgen Sie dem Parameternamen. Die lexikografische ASCII-Reihenfolge ist wie folgt:
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
Schritt 2: Spleißen Sie den API-Schlüssel:
stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d" sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"
Das Zeichen wird zu diesem Zeitpunkt für den wx.requestPayment-Upload-Parameter paySign verwendet.
Endlich die endgültigen gesendeten Daten abrufen:
<xml> <appid>wxd930ea5d5a258f4f</appid> <mch_id>10000100</mch_id> <device_info>1000<device_info> <body>test</body> <nonce_str>ibuaiVcKdpRxkhJA</nonce_str> <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> <xml>
Das Obige ist das vom Herausgeber eingeführte WeChat-Applet für WeChat-Zahlungsschritte. Ich hoffe, es hilft allen