> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# プロダクト

> 単発販売またはサブスクリプション。収益はあなたのもの。

## プロダクト = 課金オブジェクト

Waffo Pancake における **プロダクト** は、チェックアウト、課税、レポートに用いられるオブジェクトです。単なる商品ページのカードではなく、あなたが課金する「商業的なオファー」そのものです。

<Note>
  プロフェッショナルな使い方では、プロダクトを以下の課金エンティティとして捉えてください：

  * 固定価格のオファー
  * サブスクリプションプラン
  * チェックアウト時に動的価格で利用するベースプロダクト
</Note>

***

## コアモデル

<CardGroup cols={3}>
  <Card title="単発払い" icon="cart-shopping">
    顧客が事前定義されたオファーに対して 1 回だけ支払います。

    * デジタルダウンロード
    * 永久ライセンス
    * テンプレート、コース、素材
  </Card>

  <Card title="サブスクリプション" icon="repeat">
    顧客が定期的なスケジュールで請求されます。

    * SaaS プラン
    * メンバーシップ
    * サービス契約
  </Card>

  <Card title="動的価格" icon="slider">
    金額はチェックアウト時に計算されます。

    * 使用量超過分の課金
    * クレジットのチャージ
    * 個別交渉による見積り
  </Card>
</CardGroup>

***

## プロダクトの作成

ダッシュボード --> プロダクト --> **プロダクトを作成**

```json theme={"system"}
{
  "storeId": "your-store-uuid",
  "name": "Pro Plan",
  "prices": {
    "USD": { "amount": "29.00", "taxIncluded": false, "taxCategory": "saas" }
  }
}
```

**完了です。** 固定価格販売向けの恒久的な購入リンク、またはプログラム経由のチェックアウトで再利用できる課金オブジェクトが得られます。

***

## プロダクトフィールド

### 必須項目

| フィールド | 説明                                            |
| ----- | --------------------------------------------- |
| 名前    | 顧客に表示される内容                                    |
| 価格    | 請求金額（最小単位）                                    |
| 通貨    | USD、EUR、GBP、JPY、HKD（CNY は単発商品のみ — 下記の価格上限を参照） |
| タイプ   | 単発またはサブスクリプション                                |
| 税カテゴリ | SaaS、Digital Goods、Software など                |

### オプション項目

| フィールド      | デフォルト | 用途                                                              |
| ---------- | ----- | --------------------------------------------------------------- |
| 説明         | —     | Markdown 形式、製品のアピール用                                            |
| 画像         | —     | 推奨 400x400px                                                    |
| リダイレクト URL | —     | チェックアウト後の遷移先。支払いが成功した場合も失敗した場合も同じ URL が使われます — 設定できるのは 1 つだけです。 |

### 価格の上下限

各通貨には設定可能な最低価格と最高価格があります。範囲外の価格は商品の保存時に拒否されます。

| 通貨  |       最低 |            最高 |
| --- | -------: | ------------: |
| USD |   \$1.00 |    \$7,500.00 |
| EUR |    €1.00 |     €7,400.00 |
| GBP |    £1.00 |     £6,400.00 |
| JPY |     ¥100 |    ¥1,250,000 |
| CNY |    ¥1.00 |     ¥1,000.00 |
| HKD | HK\$8.00 | HK\$61,000.00 |

<Note>
  **CNY は単発商品の価格設定にのみ利用できます** —— サブスクリプション商品では CNY を利用できません。CNY 建ての注文は WeChat Pay のみで支払い可能で、1 注文あたり約 1,000 CNY までです。詳細は[支払い方法と通貨の対応](/ja/dashboard/payments#method-and-currency-support)をご覧ください。
</Note>

***

## 動的価格

最終的な金額が実行時まで確定しない場合、動的価格が適したモデルです。

例：

* 使用量ベースの超過課金
* 金額が可変のプリペイドクレジットパック
* 契約ごとの個別見積り
* サーバー側で計算する一時的なディスカウント

### 仕組み

1. Waffo Pancake で **ベースとなる単発プロダクト** を作成します
2. サーバー側で最終金額を計算します
3. チェックアウトセッション作成時に `priceSnapshot` を渡します

```typescript theme={"system"}
const session = await client.checkout.createSession({
  storeId: "store_id",
  productId: "usage-overage-product-id",
  productType: "onetime",
  currency: "USD",
  priceSnapshot: {
    amount: calculatedAmount,
    taxIncluded: false,
    taxCategory: "saas",
  },
});
```

<Warning>
  `priceSnapshot` は、そのチェックアウトセッションに対して保存されているプロダクト価格を上書きします。必ずサーバー側でのみ使用し、信頼できないクライアントコードからは使用しないでください。
</Warning>

<Tip>
  金額がイベントベースの場合は、顧客がすでにサブスクリプション中であっても、単発課金として扱ってください。
</Tip>

***

## 無料トライアル

購入前にサブスクリプション製品をお試しいただけます。

### トライアル不正利用防止

Waffo Pancake はプラットフォームレベルで消費者のトライアル履歴を自動的に追跡します。消費者が新しいサブスクリプションを開始する際、プラットフォームはその履歴に基づいて利用可能な最大トライアル日数を計算し、マーチャント側の追加対応なしにトライアルの繰り返し不正利用を防止します。

マーチャントは API で `requested_trial_days` を渡すことで、特定の顧客のトライアル期間を短縮またはスキップすることもできます。

<Warning>
  効果的なトライアル悪用防止には `buyerIdentity` が必要です。[認証済みチェックアウト](/ja/integrate/sdks#authenticated-checkout-recommended)を使用して、各購入者が製品ごとに1回のみトライアルを取得できるようにしてください。
</Warning>

***

## 請求サイクル

| サイクル | 頻度     | 最適な用途      |
| ---- | ------ | ---------- |
| 週次   | 7日ごと   | 高使用量製品     |
| 月次   | 毎月     | 標準 SaaS    |
| 四半期  | 3ヶ月ごと  | B2B ソフトウェア |
| 年次   | 12ヶ月ごと | 長期顧客       |

<Tip>
  年間プランで 15-20% の割引 = 解約率低下 + キャッシュフロー改善。
</Tip>

***

## プロダクト購入リンク

各プロダクトには有効期限のない恒久的な購入リンクが発行されます：

```
https://checkout.waffo.ai/{store-slug}/{product-slug}
```

テストモード：

```
https://checkout.waffo.ai/{store-slug}/{product-slug}/test
```

**ウェブサイトに設置：**

* ウェブサイトのボタン
* Twitter プロフィール
* メール署名
* Discord サーバー

**主なメリット：**

* リンクは恒久的 — プロダクトの詳細を更新してもリンクは変わりません
* セッションやトークンの管理は不要
* 顧客がリンクを開いた瞬間にチェックアウトセッションが自動生成されます

**リンクの取得：**

* **ダッシュボード**：任意のプロダクトの「リンクをコピー」をクリック
* **API**：高度なユースケースでは、API でカスタムパラメータ付きのチェックアウトセッションを作成（動的リンク、TTL は 7 日間）

**テストと本番環境：**

* ダッシュボード上部でテストモードを切り替えると、テストリンクでプレビューできます
* テストリンクには `/test` サフィックスが付きます

***

## プロダクトステータス

<CardGroup cols={2}>
  <Card title="Active" icon="check">
    公開中、顧客が購入可能。
  </Card>

  <Card title="Inactive" icon="pause">
    非表示、既存のサブスクリプションは継続。
  </Card>
</CardGroup>

***

## プロダクトの更新

プロダクトは**イミュータブルバージョニング**を採用：

<Warning>
  更新すると新しいバージョンが作成されます。既存のサブスクリプションは元のバージョンを維持します。
</Warning>

| フィールド  | 影響        |
| ------ | --------- |
| 名前/説明  | 新バージョン作成  |
| 画像     | 新バージョン作成  |
| 価格     | 新規購入のみに影響 |
| 請求サイクル | 作成後は変更不可  |

### 環境同期

プロダクトバージョンをテスト環境から本番環境に公開：

```bash theme={"system"}
POST /v1/actions/onetime-product/publish-product
{
  "id": "product-id"
}
```

<Note>
  公開は一方向（テスト → 本番）で、初回公開時のみ必要です。
</Note>

***

## ベストプラクティス

<AccordionGroup>
  <Accordion title="命名">
    請求サイクルを含める：

    * 「Pro Plan - Monthly」
    * 「Pro Plan - Annual (Save 20%)」
  </Accordion>

  <Accordion title="価格設定">
    * 整数価格を使用（$29、$28.73 ではなく）
    * 年間割引（15-20%）
    * 競合他社を調査
  </Accordion>

  <Accordion title="画像">
    * 最小 400x400px
    * PNG または JPG 形式
    * 2MB 未満
  </Accordion>
</AccordionGroup>
