Home  >  Article  >  Backend Development  >  Golang implements payment function

Golang implements payment function

WBOY
WBOYOriginal
2023-05-13 10:11:071172browse

With the advent of the e-commerce era, payment functions have become a necessary function for many websites and APPs. Among them, golang, as an efficient programming language, has been favored by many developers. This article will introduce how to use golang to implement payment functions.

  1. Register a payment account

First, we need to register a payment account and obtain the corresponding API key. Generally speaking, the payment interface provider will have detailed documentation, and we can learn how to obtain the API key by reading the documentation.

  1. Install golang’s payment SDK

Next, we need to install golang’s payment SDK. Currently, there are many golang payment SDKs on the market to choose from, such as alipay and wechatpay. Here we take alipay as an example to explain. You can use the following command to install alipay SDK:

go get github.com/smartwalle/alipay/v3

After the installation is complete, we can use alipay SDK for development.

  1. Create payment interface

Next, we need to create a payment interface. The payment interface usually requires the following parameters: merchant order number, payment amount, product name, asynchronous notification URL, synchronous jump URL, etc.

The following is a sample code for a payment interface:

package main

import (
    "fmt"
    "github.com/smartwalle/alipay/v3"
    "log"
)

func main() {
    aClient, err := alipay.New("appID", "privateKey", false)
    if err != nil {
        log.Fatalf("new alipay client error:%v", err)
    }

    var p = alipay.TradePagePay{}
    p.Subject = "test"
    p.OutTradeNo = "123456"
    p.TotalAmount = "0.01"
    p.ProductCode = "FAST_INSTANT_TRADE_PAY"
    var url, err = aClient.TradePagePay(p)
    if err != nil {
        log.Fatalf("trade page pay error:%v", err)
    }

    fmt.Println(url)
}

In the above code, we use alipay's SDK to create a new payment client and set the payment parameters. Among them, "appID" is what we got after registering the payment account in the first step, and "privateKey" is our API key.

  1. Processing payment notifications

Payment notifications are an important means for the payment interface to call back to our server and notify us of the payment results. We need to implement an interface for receiving payment notifications on our server. The interface can be implemented using the following code:

package main

import (
    "fmt"
    "github.com/smartwalle/alipay/v3"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/notify_url", func(writer http.ResponseWriter, request *http.Request) {
        bytes, err := ioutil.ReadAll(request.Body)
        if err != nil {
            log.Fatalf("read request body error:%v", err)
        }

        aClient, err := alipay.New("appID", "privateKey", false)
        if err != nil {
            log.Fatalf("new alipay client error:%v", err)
        }

        var result alipay.TradeNotifyResponse
        err = aClient.TradeNotify(bytes, &result)
        if err != nil {
            log.Fatalf("alipay trade notify error:%v", err)
        }

        fmt.Println(result)
    })

    http.ListenAndServe(":8080", nil)
}

It should be noted that in the above code, we need to replace "appID" and "privateKey" into the actual API key.

  1. Processing payment results

Finally, we need to process the payment results after the payment is completed. Specifically, we need to obtain the payment results by querying the payment order. The following is a sample code for querying payment orders:

package main

import (
    "fmt"
    "github.com/smartwalle/alipay/v3"
    "log"
)

func main() {
    aClient, err := alipay.New("appID", "privateKey", false)
    if err != nil {
        log.Fatalf("new alipay client error:%v", err)
    }

    var p = alipay.TradeQuery{}
    p.OutTradeNo = "123456"
    p.QueryOptions = []string{"TRADE_SETTLE_INFO"}
    var result, err = aClient.TradeQuery(p)
    if err != nil {
        log.Fatalf("alipay trade query error:%v", err)
    }

    fmt.Println(result)
}

The above is the entire process of using golang to implement the payment function. Generally speaking, golang provides good support and API, which can easily implement payment functions.

The above is the detailed content of Golang implements payment function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:golang int castNext article:golang int cast