ホームページ  >  記事  >  バックエンド開発  >  Golangが決済機能を実装

Golangが決済機能を実装

WBOY
WBOYオリジナル
2023-05-13 10:11:071172ブラウズ

電子商取引時代の到来により、決済機能は多くの Web サイトやアプリに必要な機能になりました。中でも golang は効率的なプログラミング言語として多くの開発者に愛用されています。この記事では、golangを使って決済機能を実装する方法を紹介します。

  1. 支払いアカウントの登録

まず、支払いアカウントを登録し、対応する API キーを取得する必要があります。一般的に、決済インターフェースのプロバイダーには詳細なドキュメントが用意されており、ドキュメントを読むことで API キーの取得方法を知ることができます。

  1. golang の支払い SDK をインストールする

次に、golang の支払い SDK をインストールする必要があります。現在、市場には alipay や wechatpay など、選択できる golang 支払い SDK が多数あります。ここではalipayを例に挙げて説明します。次のコマンドを使用して、alipay SDK をインストールできます:

go get github.com/smartwalle/alipay/v3

インストールが完了したら、開発に alipay SDK を使用できます。

  1. 支払いインターフェイスの作成

次に、支払いインターフェイスを作成する必要があります。支払いインターフェイスには通常、販売者の注文番号、支払い金額、製品名、非同期通知 URL、同期ジャンプ URL などのパラメータが必要です。

以下は支払いインターフェイスのサンプル コードです:

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)
}

上記のコードでは、alipay の SDK を使用して新しい支払いクライアントを作成し、支払いパラメータを設定します。このうち、「appID」は最初のステップで支払いアカウントを登録した後に取得したもので、「privateKey」はAPIキーです。

  1. 支払い通知の処理

支払い通知は、支払いインターフェイスがサーバーにコールバックして支払い結果を通知するための重要な手段です。サーバー上で支払い通知を受信するためのインターフェイスを実装する必要があります。このインターフェイスは次のコードを使用して実装できます:

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)
}

上記のコードでは、「appID」と「」を置き換える必要があることに注意してください。 privateKey」を実際の API キーに入力します。

  1. 支払い結果の処理

最後に、支払い完了後に支払い結果を処理する必要があります。具体的には、支払い注文をクエリして支払い結果を取得する必要があります。以下は、支払い注文をクエリするためのサンプル コードです。

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)
}

上記は、golang を使用して支払い関数を実装するプロセス全体です。一般的に、golang は優れたサポートと API を提供しており、支払い機能を簡単に実装できます。

以上がGolangが決済機能を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。