5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オンライン決済サービスPAY.JPを使ってみた情報をシェアしよう! by PAYAdvent Calendar 2024

Day 7

payjp-goを使ってテスト用APIにリクエストを行うまでを試してみる

Last updated at Posted at 2024-12-14

この記事は「オンライン決済サービス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

テスト用のキーでは、本番の支払い処理を行うサーバーへは接続されず、実際の支払い情報として計上されることもありません。

image.png

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の画面からテスト用の顧客作成を行います。

image.png

image.png

この時の顧客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から取得できている事を確認できました!:tada:

まとめ

payjp-goライブラリを使ってPAY.JP APIにリクエストを送信する手順を解説しました。
記事を書くためにpayjp-goを始めて使ってみたのですが、ドキュメントがわかりやすく調べてからリクエストする所まで1時間もかからなかったです!

PAY.JPはGo以外にも他の言語でも機能を提供しているので、公式ドキュメントを参照して試してみてください!

おわり!

参考資料

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?