With the rapid development of e-commerce, more and more companies are beginning to choose online payment to complete the transaction process. Among them, JD Pay, as one of the well-known three-party payment service providers in China, is favored by enterprises and consumers. As Golang is an efficient and concise programming language, more and more companies are beginning to consider using it to develop web applications. This article will introduce how to use Golang to implement JD payment for web applications.
$ go mod init example.com/myproject
Among them, example.com/myproject can be replaced with the project name and path you want. After execution, a go.mod file will be generated for managing project dependencies.
$ go get github.com/smartwalle/alipay/v3
This package is the Alibaba Cloud Alipay SDK developed using Golang and can be used to implement JD.com’s payment function. After the installation is complete, import the package into the project:
import "github.com/smartwalle/alipay/v3"
alipayClient := alipay.NewClient("商户号", "密钥") // 设置公钥 alipayClient.SetAliPayPublicKey("支付宝公钥") // 设置签名类型 alipayClient.SetSignType(alipay.RSA2)
Among them, the "merchant number" and "key" can be obtained in the JD payment console, and the "Alipay public key" also needs to be downloaded in the console. In addition, you also need to set the signature type. JD Pay supports three signature methods: MD5, RSA, and RSA2. It is recommended to use RSA2 signature.
func MakePayment(orderNo string, amount float64) (string, error) { var p = alipay.TradePagePay{} p.NotifyURL = "http://xxx.com/notify" p.ReturnURL = "http://xxx.com/return" p.Subject = "订单名称" p.Body = "订单描述" p.OutTradeNo = orderNo p.ProductCode = "FAST_INSTANT_TRADE_PAY" p.TotalAmount = amount url, err := alipayClient.TradePagePay(p) if err != nil { return "", err } return url.String(), nil }
where orderNo is the order number and amount is the order amount. NotifyURL and ReturnURL are the payment result notification URL and the return URL after payment is completed respectively. Subject and Body represent the order name and order description. OutTradeNo is the only order number on the merchant's website and needs to ensure the uniqueness of each payment. ProductCode is Alipay’s preset product code.
func VerifyPayment(notification *alipay.TradeNotification) error { var err = alipayClient.VerifySign(notification) if err != nil { return err } if notification.TradeStatus != "TRADE_SUCCESS" { return errors.New("支付失败") } return nil }
Among them, the VerifySign function is used to verify whether the signature of the payment result is correct. If an error is returned, the payment result is incorrect. You can determine whether the payment was successful based on the TradeStatus field.
Conclusion:
This article introduces how to use Golang to implement the JD payment function of web applications, including registering a developer account, creating a Golang project, installing third-party packages, configuring payment parameters, implementing payment functions and verification Pay the results. If you are interested in Golang and payment functions, you can continue to learn more.
The above is the detailed content of How to use Golang to implement JD payment for web applications. For more information, please follow other related articles on the PHP Chinese website!