Miniprogramme nutzen die Miniprogramm-Cloud zur Implementierung von WeChat-Zahlungsfunktionen

Miniprogramme nutzen die Miniprogramm-Cloud zur Implementierung von WeChat-Zahlungsfunktionen

1. WeChat Pay öffnen

1.1 Partner-Händlernummer

\微信公眾號平臺\功能\微信支付\商戶號管理\關聯商戶號

Bildbeschreibung hier einfügen

1.2 Händlernummer hinzufügen

\云開發平臺\設置\其他設置\微信支付配置\添加商戶號

Bildbeschreibung hier einfügen

1.3 Administratorberechtigung

1.2 Klicken Sie auf diesem Bild auf Autorisieren. Im WeChat des Administrators wird eine Eingabeaufforderung angezeigt. Klicken Sie einfach, um die Autorisierung zu bestätigen.

Andernfalls erscheint bei der Verwendung eine Fehlermeldung, die darauf hinweist sub_mch_id與sub_appid不匹配!

2. Entwicklung von Cloud-Funktionen

2.1 Neue Cloud-Funktion erstellen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

2.2 Cloud-Funktionscode

\pay\index.js

const cloud = erfordern('wx-server-sdk')
cloud.init({
  Umgebung: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (Ereignis, Kontext) => {    
const res = warte auf cloud.cloudPay.unifiedOrder({
    "body" : Ereignis.body,
    "outTradeNo" : Ereignis.outTradeNo,
    "spbillCreateIp" : "127.0.0.1",
    "subMchId" : "0000000000", //Hinweis: Obwohl der Schlüssel die Unterhändler-ID ist, handelt es sich tatsächlich um die normale Händler-ID
    "totalFee" : parseInt(event.totalFee), //Zweite Falle: Beachten Sie, dass es eine Zahl sein muss. Wenn es keine Zahl ist, wird ein Fehler gemeldet: unifiedOrder:fail wx api error: -202
    "envId": "ooo-xxxxxxxxxxxxxxxx", //Dies ist die Cloud-Umgebungs-ID, zu der die Rückruffunktion gehört
    "functionName": "payCallBack", //Dies ist der Name der Rückruffunktion"nonceStr":event.nonceStr, //Die dritte Falle: Der entsprechende Cloud-Funktionscode im offiziellen Dokument hat weder nonceStr noch tradeType. Beim Testen wird ein Fehler gemeldet, dass nonceStr nicht existiert. Ich habe das Dokument durchgesehen und festgestellt, dass dies ein erforderliches Element ist. Nachdem Sie es direkt eingefügt haben, müssen Sie diese beiden Parameter hinzufügen"tradeType":"JSAPI"
  })
  Rückgabewert
}

2.3 Hochladen und Bereitstellen von Cloud-Funktionen

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

3. Mini-Programmaufruf

3.1 Einheitliche Bestellung

  • Die nach einer Bestellung über WeChat erhaltenen Daten sollten zunächst in der Datenbank gespeichert und als Backup aufbewahrt werden.
  • Rufen Sie dann die WeChat-Zahlungsoberfläche auf
//Cloud-Funktion aufrufen, WeChat vereinheitlichte Bestellung cloudPay(){
    var _this = dies
    dies.setData({
      Text: „Rechnungszahlung-xxxxx“,
      outTradeNo: this.data.id+"-"+util.uuid(16),
      totalFee: this.data.totalCost*100 //Zahlungseinheit: Cent})
    app.showLoading(true)
    wx.cloud.callFunktion({
      Name: "Bezahlen",
      Daten: {
        Körper: _this.data.body,
        outTradeNo: _this.data.outTradeNo,
        Gesamtgebühr: _this.data.totalFee,
        nonceStr:util.uuid(32)//Rufen Sie Ihre eigene UUID-Funktion auf},
      Erfolg(res) {
        // Fehlercode: 0
        // Fehlermeldung: "cloudPay.unifiedOrder:ok"
        // Rückgabewert: "FEHLER"
        // returnMsg: "total_fee ist leer."
        console.log("Übermittlung erfolgreich", res.result)
        if(res.result.returnCode!="ERFOLGREICH"){
          app.showToast(res.result.returnMsg)
          zurückkehren
        }
        _this.unifiedOrder(result.ergebnis)
        // _this.requestPayment(result.ergebnis)
      },
      Fehler(res) {
        console.log("Übermittlung fehlgeschlagen", res)
      }
    })
  },

3.2 WeChat-Zahlungsschnittstelle öffnen

  //Offizielle Standardzahlmethode, rufe die Zahlungsschnittstelle auf requestPayment(payData) {
    var _this = dies;
    const payment = payData.payment //Beachten Sie, dass das Ergebnis der vorherigen Funktion die hier zu verwendenden Parameter direkt integriert. Sie können es direkt erweitern und wx.requestPayment({ verwenden.
      ...Zahlung, //...ist die Syntax zum Erweitern von Variablen success(res) {
        console.log("Zahlung erfolgreich", res)
        _this.paySuccess()
      },
      Fehler(res) {
        console.log("Zahlung fehlgeschlagen", res)
      }
    })
  },

3.2 Rückruf bei erfolgreicher Zahlung

  • Es wird nicht empfohlen, den Zahlungserfolgsvorgang direkt in der Erfolgsrückruffunktion von requestPayment auszuführen
  • Es ist besser, eine andere Cloud-Funktion payCallBack zu erstellen
  • Diese Cloud-Funktion payCallBack ruft die Schnittstelle unseres selbstgebauten Servers auf, um den Zahlungserfolgsvorgang auszuführen
  • Dabei geht es darum, wie die http-Schnittstelle in der Cloud-Funktion aufgerufen wird. Ich werde es später erklären.

Damit ist dieser Artikel über die Verwendung der WeChat-Zahlungsfunktion in einem Miniprogramm über die Miniprogramm-Cloud abgeschlossen. Weitere Informationen zur WeChat-Zahlung in einem Miniprogramm 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:
  • So rufen Sie die WeChat-Zahlung aus einem Miniprogramm auf
  • So implementieren Sie ein WeChat-Applet, das die WeChat-Zahlungsschnittstelle aufruft
  • Ein einfaches Beispiel für eine WeChat-Zahlung mit WeChat-Applet und PHP
  • WeChat-Applet WeChat-Zahlungszugang – Entwicklungsbeispiel – detaillierte Erläuterung
  • Schritte des WeChat-Miniprogramms zur WeChat-Zahlung
  • WeChat Mini-Programme - Detaillierte Erklärung der WeChat-Anmeldung, WeChat-Zahlung und Vorlagennachrichten

<<:  So zeigen Sie die Zeitzone in MySQL an und ändern sie

>>:  Verwenden Sie den Linux-Befehl „seq“, um eine Zahlenfolge zu generieren (empfohlen)

Artikel empfehlen

Einige Parameterbeschreibungen von Texteingabefeldern im Webdesign

<br />In Gästebüchern, Foren und anderen Ort...

Zusammenfassung der Ausnahmen bei der MySQL-Datenbankverbindung (sammelwürdig)

Beim Bereitstellen des Projekts auf Centos ist mi...

MySql Group By implementiert die Gruppierung mehrerer Felder

Bei täglichen Entwicklungsaufgaben verwenden wir ...

Beschreibung des Meta-Viewport-Attributs in der HTML-Webseite

Beschreibung der HTML-Meta-Viewport-Attribute Was...

Eine detaillierte Einführung in die Linux-Verzeichnisstruktur

Wenn Sie mit dem Erlernen von Linux beginnen, müs...

Detaillierte Erklärung der Docker-Einstiegspunktdatei

Schließen Sie beim Schreiben einer Docker-Datei e...

So konvertieren Sie MySQL horizontal in vertikal und vertikal in horizontal

Daten initialisieren Tabelle löschen, wenn `test_...

Verwendung und Ausführungsprozess des HTTP-Moduls im Knoten

Welche Rolle spielt http im Knoten? Die Aufgabe d...

So ändern Sie das ROOT-Passwort in MySql8.0 und höheren Versionen richtig

Bereitstellungsumgebung: Installationsversion Red...