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

Erfahren Sie, wie nginx hohe Leistung und Skalierbarkeit erreicht.

Die Gesamtarchitektur von NGINX ist durch eine Re...

So rufen Sie das unterbrochene System in Linux auf

Vorwort Langsame Systemaufrufe beziehen sich auf ...

So ändern Sie das MySQL-Tabellenpartitionierungsprogramm

So ändern Sie das MySQL-Tabellenpartitionierungsp...

So implementieren Sie das N-Grid-Layout in CSS

Häufige Anwendungsszenarien Die Schnittstellen ak...

React Native JSI implementiert Beispielcode für RN und native Kommunikation

Inhaltsverzeichnis Was ist JSI Was ist anders an ...

Implementierung der Navigationsleiste und des Dropdown-Menüs in CSS

1. CSS-Navigationsleiste (1) Funktion der Navigat...

Was tun, wenn der Auto-Increment-Primärschlüssel in MySQL aufgebraucht ist?

Im Vorstellungsgespräch sollten Sie folgende Szen...

960 Grid System – Grundprinzipien und Verwendung

Natürlich gibt es auch viele Leute, die die gegent...

MySQL deaktiviert die Überprüfung der Kennwortstärke

Informationen zur Überprüfung der Kennwortstärke:...

JavaScript-Closures erklärt

Inhaltsverzeichnis 1. Was ist ein Abschluss? 1.2 ...

Tiefgreifendes Verständnis der Rolle von Vuex

Inhaltsverzeichnis Überblick So teilen Sie Daten ...

Über React Native, das keine Verbindung zum Simulator herstellen kann

React Native kann native iOS- und Android-Apps ba...