Heim  >  Artikel  >  Backend-Entwicklung  >  So nutzen Sie die Golang-Zahlung

So nutzen Sie die Golang-Zahlung

王林
王林Original
2023-05-10 10:54:36887Durchsuche

Go-Sprache ist eine kompilierte, gleichzeitige und Garbage-Collection-Programmiersprache. Sie bietet die Vorteile von Einfachheit, Geschwindigkeit und Sicherheit und wird daher in den letzten Jahren von immer mehr Entwicklern und Unternehmen bevorzugt. Es ist eine sehr häufige Anforderung, Zahlungsfunktionen in Go-Sprachanwendungen zu implementieren. In diesem Artikel wird kurz vorgestellt, wie man die Go-Sprache zum Implementieren von Zahlungsfunktionen verwendet.

1. Wählen Sie einen Zahlungskanal

Bevor Sie die Zahlungsfunktion implementieren, müssen Sie zunächst einen zuverlässigen Zahlungskanal auswählen. Derzeit bietet der Markt zahlreiche Zahlungskanäle wie Alipay, WeChat Pay, UnionPay Pay usw. In diesem Artikel wird Alipay als Beispiel verwendet, um kurz vorzustellen, wie die Go-Sprache zum Implementieren von Zahlungsfunktionen verwendet wird.

2. Eröffnen Sie ein Alipay-Entwicklerkonto

Bevor Sie Alipay zum Bezahlen verwenden, müssen Sie ein Entwicklerkonto auf der offiziellen Alipay-Website eröffnen und bei Bedarf die entsprechende Zugriffsmethode auswählen. Ich werde hier nicht auf Details eingehen, Leser können sich selbst auf die Alipay-Entwicklungsdokumente beziehen.

3. Alipay SDK installieren

Alipay SDK ist ein offiziell bereitgestelltes Toolkit, das uns bei der Implementierung von Alipay-Zahlungsfunktionen helfen kann. In der Go-Sprache können Sie den folgenden Befehl verwenden, um das Entwicklungspaket zu installieren:

go get -u github.com/smartwalle/alipay/v3

Unter anderem ist „smartwalle/alipay/v3“ ein Open-Source-Alipay-SDK für die Go-Sprache, das alle erforderlichen Funktionen bereitstellt für Alipay-Zahlung.

4. Alipay-Client erstellen

Bevor Sie eine Alipay-Zahlung durchführen, müssen Sie zunächst einen Alipay-Client erstellen:

import (
    "github.com/smartwalle/alipay/v3"
    "github.com/smartwalle/alipay/v3/constant"
)

func NewAlipayClient(appID, privateKey, publicKey string) *alipay.Client {
    client := alipay.New(appID, privateKey, false)
    client.SetSignType(constant.RSA2)
    client.SetPublicKey(publicKey)
    return client
}

Unter anderem werden appID, privateKey und publicKey vom Alipay Developer Backend bezogen.

5. Zahlung veranlassen

Nachdem Sie den Alipay-Client erstellt haben, können Sie eine Zahlungsanforderung initiieren. Am Beispiel der Erstellung eines Alipay-Zahlungs-QR-Codes lautet der Beispielcode wie folgt:

import (
    "github.com/smartwalle/alipay/v3"
    "github.com/smartwalle/alipay/v3/constant"
    "github.com/smartwalle/alipay/v3/requests"
    "github.com/smartwalle/alipay/v3/sign"
)

func BuildAlipayQROrder(client *alipay.Client, subject, outTradeNo, totalAmount, notifyURL string) (string, error) {
    p := requests.TradePrecreate{
        Subject:     subject,
        OutTradeNo:  outTradeNo,
        TotalAmount: totalAmount,
        NotifyURL:   notifyURL,
    }

    signType := client.GetSignType()
    if signType == constant.RSA || signType == constant.RSA2 {
        b, err := sign.AliPayURLValues(p)
        if err != nil {
            return "", err
        }
        p.Sign = sign.SignWithPKCS1v15(string(b), client.PrivateKey, signType)
    }

    resp, err := client.TradePrecreate(p)
    if err != nil {
        return "", err
    }

    if resp.Content.Code == "10000" {
        return resp.Content.QRCode, nil
    } else {
        return "", fmt.Errorf("[%s] %s", resp.Content.Code, resp.Content.Msg)
    }
}

Hier ist die TradePrecreate-Schnittstelle in die BuildAlipayQROrder-Methode gekapselt. Darunter ist subject der Produktname, outTradeNo die Bestellnummer des Händlers, totalAmount der Bestellbetrag, notifyURL die Benachrichtigungsadresse für das Zahlungsergebnis und QRCode der generierte Alipay-Scan-Zahlungs-QR-Code.

6. Zahlungsergebnisse verarbeiten

Wenn der Benutzer die Zahlung abschließt, benachrichtigt Alipay den Händler asynchron über das Zahlungsergebnis, das während der Entwicklung rechtzeitig verarbeitet werden muss . Das Codebeispiel lautet wie folgt:

import (
    "github.com/smartwalle/alipay/v3"
    "github.com/smartwalle/alipay/v3/constant"
    "github.com/smartwalle/alipay/v3/requests"
)

// 处理支付宝异步通知
func HandleAlipayNotify(client *alipay.Client, params alipay.NotifyParams) error {
    b, err := json.Marshal(params)
    if err != nil {
        return err
    }

    if err := client.CheckNotifySign(string(b)); err != nil {
        return err
    }

    switch params.TradeStatus {
    case "TRADE_SUCCESS":
        tradeQuery, err := client.TradeQuery(requests.TradeQuery{
            OutTradeNo: params.OutTradeNo,
            TradeNo:    params.TradeNo,
        })
        if err != nil {
            return err
        }

        if tradeQuery.Content.TradeStatus == "TRADE_SUCCESS" {
            // 订单处理成功,执行自己的业务逻辑
        }
    case "TRADE_CLOSED":
        // 订单已关闭,执行自己的业务逻辑
    default:
        return fmt.Errorf("unsupported trade status: %s", params.TradeStatus)
    }

    return nil

}

Gemäß den Parametern der asynchronen Alipay-Benachrichtigung können Sie den Zahlungsstatus der Bestellung durch Aufrufen der TradeQuery-Schnittstelle abfragen und schließlich Ihre eigene Geschäftslogik basierend auf der tatsächlichen Zahlung ausführen Ergebnisse.

7. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie die Go-Sprache verwenden, um die Alipay-Zahlungsfunktion zu implementieren. Zunächst müssen Sie ein Alipay-Entwicklerkonto eröffnen und die entsprechende Zugriffsmethode auswählen. Anschließend wurde durch die Installation des Alipay SDK, die Erstellung eines Alipay-Clients, die Initiierung von Zahlungsanfragen und die Verarbeitung von Zahlungsergebnissen schließlich eine einfache Alipay-Zahlungsfunktion realisiert. In tatsächlichen Anwendungen können weitere Anpassungen entsprechend Ihren eigenen Bedürfnissen erforderlich sein.

Das obige ist der detaillierte Inhalt vonSo nutzen Sie die Golang-Zahlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn