この記事は「オンライン決済サービスPAY.JPを使ってみた情報をシェアしよう! by PAY Advent Calendar 2024」の7日目の記事です!
投稿日付が12/14という事で1週間遅れての記事になります!すみません!
今回はタイトルにあるようにPAY.JPが提供しているSDKで「payjp-go」を使ってみてリクエストを行う所までをやってみます。普段業務で使っている言語はPHPなのですが、普段慣れてないGo言語を使う事でGoの勉強にもなって、PAY.JPの記事も書ける、一石二鳥スタイルで書いていきます。
※注意としてpayjp-goは今betaブランチに移行中なので、masterではなくbetaブランチに切り替えて試してください。
Step1. 環境構築
まずはGoの開発環境を用意しましょう。
Goがまだインストールされていない場合は、公式サイトからインストールするか以下のコマンドを実行してください。
公式サイト: https://go.dev/doc/install
$brew install go
$go version #go version go1.21.0 darwin/arm64
モジュール管理をするために、go mod init
を設定します。
mkdir my-project
cd payjp-go-tutorial
go mod init my-project
次にpayjp-goライブラリをインストールしてください。
go get github.com/payjp/payjp-go@beta
Step.2 PAY.JPにリクエストを行うためにテスト用の秘密鍵を確認する
PAY.JPのAPIを利用するにはユーザー登録を行い、APIページからAPIキーを取得します。
参考: PAY.JP の本番利用申請なしでどこまで試せるかやってみた。 - zan memo
テスト用のキーでは、本番の支払い処理を行うサーバーへは接続されず、実際の支払い情報として計上されることもありません。
APIキーをgoから読み取るためにgoenv
をインストールして、.env
ファイルから読み取るようにします。
go get github.com/joho/godotenv
.env
ファイルに秘匿情報を載せるため、.gitignore
に追記してコミットには含めないようお願いします。
テスト秘密鍵の値を.envに追加します。
PAYJP_SECRET_TEST_KEY=sk_test_XXXXXXXXXXXXXXXXXXXXXXXX
Step.3 payjp-goを使って顧客情報をAPIから取得する。
PAY.JPのAPIにリクエストを送信するコードを書いてみます。ここでは、顧客リストを取得するサンプルを作成します。
事前に顧客を取得するためにPAY.JPの画面からテスト用の顧客作成を行います。
この時の顧客IDはこの後のリクエストで使うので.env
に追加しておきます。
PAYJP_CUSTOMER_ID=***
次に実際に以下に顧客情報を取得してくる簡単なサンプルコードを書いてみました。
package main
import (
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"github.com/payjp/payjp-go/v1"
)
func main() {
// .envファイルの読み込み
err := godotenv.Load()
if err != nil {
log.Fatalf("Error loading .env file: %v", err)
}
secretKey := os.Getenv("PAYJP_SECRET_TEST_KEY")
customerId := os.Getenv("PAYJP_CUSTOMER_ID")
if secretKey == "" {
log.Fatal("PAYJP_SECRET_KEY is not set in .env file")
}
// PAY.JPクライアントの初期化
pay := payjp.New(secretKey, nil)
fmt.Println("PAY.JP client initialized successfully")
// 顧客情報の取得
customer, err := pay.Customer.Retrieve(customerId)
if err != nil {
log.Fatalf("Error retrieving customer: %v", err)
}
fmt.Printf("Customer: %+v\n", customer)
}
このコードを実行してみます。
go run main.go
出力結果はこちらです!
PAY.JP client initialized successfully
Customer: &{RawCards:{Count:0 Data:[] HasMore:false Object:list URL:/v1/customers/cus_****/cards} Cards:[] DefaultCard: Description:こんにちは! Email:hogefuga@mail.com ID:cus_**** LiveMode:false Object:customer RawSubscriptions:{Count:0 Data:[] HasMore:false Object:list URL:/v1/customers/cus_***/subscriptions} Subscriptions:[] Metadata:map[] Created:0x140000a1c68 CreatedAt:2024-12-14 12:18:58 +0900 JST service:0x14000120370}
先ほど作成した顧客情報がAPIから取得できている事を確認できました!
まとめ
payjp-go
ライブラリを使ってPAY.JP APIにリクエストを送信する手順を解説しました。
記事を書くためにpayjp-go
を始めて使ってみたのですが、ドキュメントがわかりやすく調べてからリクエストする所まで1時間もかからなかったです!
PAY.JPはGo以外にも他の言語でも機能を提供しているので、公式ドキュメントを参照して試してみてください!
おわり!