Waffo Pancake API で以下が可能です:
- プロダクトの作成と管理(一回限りとサブスクリプション)
- 支払いと返金の処理
- サブスクリプションと請求の管理
- 顧客と注文データへのアクセス
- チェックアウトセッションの生成
ベースURL:https://waffo-pancake-auth-service.vercel.app/v1
認証方式
Waffo Pancake は、すべてのプログラムによる API アクセスに API Key 認証を使用します。API Key はセキュアなサーバー間通信を提供します。
API Key 認証は SDK が自動的に処理します。@waffo/pancake-ts をインストールし、Merchant ID と秘密鍵を提供するだけで、SDK がリクエストの署名を自動的に行います。
公開チェックアウトフローには、X-Store-Slug ヘッダーを使用した Store Slug 認証を使用します。
秘密鍵を保護してください。クライアントコードやバージョン管理で公開しないでください。
リクエストフォーマット
- Content-Type:
application/json
- すべてのタイムスタンプはISO 8601形式(UTC)
- 通貨金額は最小単位(例:
2900 = $29.00)
- IDはUUID v4形式
共通ヘッダー
| ヘッダー | 必須 | 説明 |
|---|
Content-Type | はい | application/json |
X-Store-Slug | 条件付き | ストア slug(公開チェックアウトフロー) |
X-Environment | 条件付き | test または prod(Store Slug 認証必須) |
X-Idempotency-Key | オプション | 書き込み操作の一意のリクエストID |
import { WaffoPancake } from "@waffo/pancake-ts";
const client = new WaffoPancake({
merchantId: process.env.WAFFO_MERCHANT_ID!,
privateKey: process.env.WAFFO_PRIVATE_KEY!,
});
const { store } = await client.stores.create({ name: "My Store" });
レスポンスフォーマット
成功レスポンス
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Pro Plan",
"prices": {
"USD": { "amount": 2900, "taxIncluded": false, "taxCategory": "saas" }
},
"status": "active",
"createdAt": "2024-01-15T10:30:00.000Z"
}
}
エラーレスポンス
{
"data": null,
"errors": [
{
"message": "Missing required field: name",
"layer": "product"
}
]
}
エラーレイヤー:gateway、user、store、product、order、graphql
HTTPステータスコード
| ステータスコード | 説明 |
|---|
| 200 | 成功 |
| 400 | 不正なリクエスト(パラメータが無効) |
| 401 | 未認証(認証失敗) |
| 403 | 禁止(権限不足) |
| 404 | 見つからない |
| 409 | 競合(冪等リクエストが処理中) |
| 429 | レート制限 |
| 500 | サーバーエラー |
| 環境 | ヘッダー値 | 説明 |
|---|
| テスト | X-Environment: test | 開発とテスト |
| 本番 | X-Environment: prod | 実際の取引 |
テストモード:
- 実際の課金は処理されない
- データは本番環境と分離
- 完全なAPI機能
主要エンドポイント
プロダクト
| エンドポイント | メソッド | 説明 |
|---|
/v1/actions/onetime-product/create-product | POST | 一回限りのプロダクト作成 |
/v1/actions/subscription-product/create-product | POST | サブスクリプション作成 |
/v1/actions/onetime-product/update-product | POST | プロダクト更新 |
/v1/actions/onetime-product/update-status | POST | 有効化/無効化 |
| エンドポイント | メソッド | 説明 |
|---|
/v1/actions/onetime-order/create-order | POST | チェックアウト作成 |
/v1/actions/subscription-order/create-order | POST | サブスクリプション作成 |
/v1/actions/refund-ticket/create-ticket | POST | 返金リクエスト |
GraphQL
| エンドポイント | メソッド | 説明 |
|---|
/v1/graphql | POST | データクエリ(読み取り専用) |
GraphQL
読み取り操作にGraphQLを使用:
query {
stores {
id
name
status
}
onetimeProducts(filter: { storeId: { eq: "..." } }) {
id
name
prices
status
}
}
サポートされるクエリ:merchants、stores、onetimeProducts、subscriptionProducts、orders、payments、refundTickets
SDK
Node.js
公式Node.js SDK(近日公開)
Webhooks
イベントのリアルタイム通知を受信:
order.completed — 注文完了
subscription.activated — サブスクリプションがアクティブ化
subscription.past_due — サブスクリプション支払い滞納
subscription.canceled — サブスクリプションキャンセル
refund.succeeded — 返金処理成功
Webhooksの詳細 →