Home > Article > Backend Development > Golang implements payment function
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.
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.
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.
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.
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.
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!