メインコンテンツへスキップ

推奨エントリーポイント

これは AI アシスト開発の主要入口ページです。AI コーディングエージェントが使用する最新の waffo-pancake スキル構造に対応しています:Waffo Pancake の適用場面、統合パスの選び方、商品モデリング、安全なリリース方法をカバーします。 AI コーディングアシスタントに伝えるだけ:
通常はこれだけで十分です。このページを AI 統合の主入口として使い、正確な SKILL.md が必要なときに下の公式 Skill 入口を開いてください。

完全なプロンプト

エージェントに完全な統合パスを計画・実装させたい場合は、このプロンプトを使用してください:

Official Waffo Pancake Skill

AI インテグレーションページ内の公式 Skill 入口です。開くと、チームが使っている標準 SKILL.md を表示、コピー、ダウンロードできます。

@waffo/pancake-ts は Waffo Pancake 決済 API のサーバーサイド TypeScript クライアントです。リクエスト署名、チェックアウトセッション作成、Webhook 検証、GraphQL クエリを処理します。

よくある落とし穴 — 最初にお読みください

統合を壊すミスをまとめています。コードを書く前に必ず目を通してください。

ユースケース

Waffo Pancake は merchant-of-record 決済プラットフォームです。SDK は以下のようなプロジェクトに適しています:
  • SaaS サブスクリプション課金 — 月額/年額プラン、アップグレード/ダウングレード(例:Free/Pro/Team ティア)
  • デジタル商品販売 — 電子書籍、テンプレート、コース、ライセンスの単発購入
  • 従量課金 — ダウンロード、API コール、レポート生成ごとに課金
  • ハイブリッドモデル — サブスクリプション+単発購入の組み合わせ

インストールとセットアップ

サーバーサイド専用。Node.js 18+。依存関係ゼロ。
必要な環境変数は2つだけです — サインアップ時に提供されます:

PEM 鍵の取り扱い

エスケープ改行(最もシンプル):
Base64(CI/CD 推奨):
ファイルパス(ローカル開発):

クイックスタート:ゼロから作成

Store ID と Product ID は後続の実行時設定です。必要ならアプリ設定や自前 DB に保存してください。 マーチャントが複数のストアを持っている場合は、商品を作成する前にどのストアに紐づけるか必ず確認してください。

クイックスタート:既存商品を使用

ダッシュボードですでに商品を作成済みの場合、Product ID をコピーしてそのままチェックアウトへ:

API リファレンス

ストア

単発商品

taxCategory オプション: digital_goods | saas | software | ebook | online_course | consulting | professional_service

サブスクリプション商品

サブスクリプション商品グループ

グループは共有トライアルとサブスクリプション商品間のプラン切替を可能にします。

チェックアウトセッション

注文レベルパラメータと優先度

createSession に渡すパラメータで商品レベルの設定を上書きできます。AI 統合において優先度の理解は不可欠です:
priceSnapshot は動的価格設定の核心パラメータです。 priceSnapshot を指定すると、商品に設定された価格は完全に無視されます。ユースケース:使用量ベースの階層価格設定、動的クーポン割引、A/Bテストによる異なる価格ポイントなど。

Webhook統合の要点

Webhook を統合する際の重要なポイント: 典型的な Webhook ハンドラーパターン:

サブスクリプションのキャンセル

GraphQL クエリ

読み取り専用。ID 変数には String! を使用してください(ID! ではありません)。

Webhook 検証

SDK には両環境の公開鍵が埋め込まれています。検証は関数呼び出し一回で完了します。

Next.js App Router

Express

Hono

検証オプション

イベントタイプ

イベント構造

Webhook URL の設定

1 つのストアには複数の Webhook を登録でき、それぞれ異なるチャネル(httpfeishudiscordtelegramslack)に配信されます。チャネルと環境ごとに 1 件ずつ登録します:
Webhook 一覧の取得には GraphQL Store.storeWebhooks フィールドを使います — これが唯一のクエリエントリポイントです。

エラーハンドリング

エラーはコールスタックの深さ順に並びます:errors[0] が根本原因(最深層)、errors[n] が最も外側の呼び出し元です。

開発のヒント

  1. Webhook トンネリング — localtunnel ではなく cloudflared を使用してください(落とし穴の表を参照)。
  1. 冪等性は自動 — SDK は merchantId + path + body から決定論的なキーを生成します。リトライは安全です。
  2. Test → Prod ワークフロー — 商品はデフォルトで test 環境に作成されます。.publish() で本番環境にプロモートします。Webhook イベントには mode: "test" | "prod" が含まれるため、ハンドラーで区別できます。

クイックスタートチェックリスト

  1. npm install @waffo/pancake-ts
  2. WAFFO_MERCHANT_IDWAFFO_PRIVATE_KEY 環境変数を設定(ダッシュボード → API と開発ページ上部のコピーボタンから取得)
  3. new WaffoPancake({ merchantId, privateKey }) でクライアントを初期化
  4. ストアを作成または参照
  5. マーチャントが複数のストアを持つ場合、商品をどのストアに作成するか確認
  6. 商品を作成または参照
  7. チェックアウトを作成:client.checkout.createSession(...)checkoutUrl にリダイレクト
  8. テストカード 4576750000000110(成功)または 4576750000000220(拒否)でサンドボックステスト
  9. Webhook を処理:verifyWebhook(rawBody, sig)必ず request.text() を使用
  10. Webhook URL を設定:client.webhooks.add({ storeId, channel: "http", url, events, testMode })