Go 言語は、コンパイル、同時実行、ガベージ コレクションを行うプログラミング言語であり、シンプルさ、速度、セキュリティという利点があるため、近年ますます多くの開発者や企業に好まれています。 Go 言語アプリケーションに支払い機能を実装することは非常に一般的な要件です。この記事では、Go 言語を使用して支払い機能を実装する方法を簡単に紹介します。
1. 支払いチャネルの選択
支払い機能を実装する前に、最初に行う必要があるのは、信頼できる支払いチャネルを選択することです。現在、市場では Alipay、WeChat Pay、UnionPay Pay などの多数の支払いチャネルが提供されています。この記事では、Alipayを例に、Go言語を使用して決済機能を実装する方法を簡単に紹介します。
2. Alipay 開発者アカウントを開設する
Alipay を使用して支払いを行う前に、Alipay 公式 Web サイトで開発者アカウントを開設し、必要に応じて対応するアクセス方法を選択する必要があります。ここでは詳細には触れませんが、読者は Alipay の開発ドキュメントをご自身で参照していただけます。
3. Alipay SDK のインストール
Alipay SDK は、Alipay 支払い機能の実装に役立つ公式に提供されたツールキットです。 Go 言語では、次のコマンドを使用して開発パッケージをインストールできます。
go get -u github.com/smartwalle/alipay/v3
このうち、「smartwalle/alipay/v3」はオープンソースの Go 言語 Alipay SDK であり、Alipay に必要なすべての機能を提供します。支払い。
4. Alipay クライアントの作成
Alipay 支払いを行う前に、まず Alipay クライアントを作成する必要があります。コードは次のとおりです:
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 }
このうち、appID、privateKeyと publicKey は Alipay Developer Backend から取得されます。
5. 支払いの開始
Alipay クライアントを作成した後、支払いリクエストを開始できます。 Alipay 支払い QR コードの作成を例にとると、サンプル コードは次のとおりです。
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) } }
ここでは、TradePrecreate インターフェイスが BuildAlipayQROrder メソッドにカプセル化されています。このうち、subject は商品名、outTradeNo は加盟店注文番号、totalAmount は注文金額、notifyURL は決済結果通知アドレス、QRCode は生成された Alipay スキャン決済 QR コードです。
6. 支払い結果の処理
ユーザーが支払いを完了すると、Alipay は販売者に支払い結果を非同期的に通知しますが、開発中にタイムリーに処理する必要があります。コード例は次のとおりです。
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 }
Alipay 非同期通知のパラメーターに従って、TradeQuery インターフェイスを呼び出して注文の支払いステータスをクエリし、最終的に実際の支払い結果に基づいて独自のビジネス ロジックを実行できます。
7. 概要
この記事では、Go 言語を使用して Alipay の決済機能を実装する方法を紹介します。まず、Alipay 開発者アカウントを開き、対応するアクセス方法を選択する必要があります。そして、Alipay SDKをインストールし、Alipayクライアントを作成し、支払いリクエストを開始し、支払い結果を処理することで、最終的にシンプルなAlipay支払い機能が実現されました。実際のアプリケーションでは、必要に応じてさらに調整が必要になる場合があります。
以上がgolang決済の使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。