# カスタムオブジェクト

Stripe でカスタムデータモデルとビジネスロジックを直接構築できます。

カスタムオブジェクトを使用すると、構造化されたデータモデルを定義し、Stripe にビジネスロジックを直接関連付けることができます。これにより、Stripe が実際のビジネスの仕組みを反映するようになります。

カスタムオブジェクトを使用すると、次のことができます。

- **Stripe 上でビジネスをモデル化**: ドメインエンティティ、関係、カスタムタイプを第一級のリソースとして表現します。構造化データを使用して、[Customers](https://docs.stripe.com/api/customers/object.md)、[Products](https://docs.stripe.com/api/products.md)、[Invoices](https://docs.stripe.com/api/invoices.md) などの既存の Stripe オブジェクト上に構築することもできます。
- **独自のデータとロジックを定義**: Stripe でカスタムビジネスモデルを直接作成します。メソッドを使用してデータやカスタムオブジェクトにロジックを関連付け、プロセスを自動化し、イベントに応答し、API エンドポイントを公開できます。
- **バックエンドの複雑さを軽減**: 一貫した API を使用して、決済とあわせてドメインデータを保存および管理します。別個のデータベースを維持しなくても、データの整合性、セキュリティ、アクセス制御について Stripe のインフラストラクチャを利用できます。

### カスタムオブジェクトの先行提供版にご興味をお持ちですか？

Enter your email to request access.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/custom-objects" \
  -d '{"email": "EMAIL", "preview": "custom_objects_private_preview"}'
```

## 構築できるもの

Stripe の標準データモデルでは対応できない、ドメイン固有のニーズを持つ企業には、カスタムオブジェクトの使用が適しています。以下は、構築できるものの例です。

| ユースケース | 説明 |
| --- | --- |
| **分割払いプラン** | 残高、決済スケジュール、ステータスのフィールドを持つカスタム `InstallmentPlan` オブジェクトを定義できます。定期的に請求書を生成し、入金された決済を処理し、残高がゼロになったらプランを完了としてマークするメソッドを関連付けることができます。顧客が早期完済をリクエストできるように、API エンドポイントも公開できます。Stripe は、この分割払いプランを、それが参照する顧客、請求書、決済記録とともに保存します。外部データベースや cron ジョブは必要ありません。 |
| **保険契約** | `InsuranceQuote` と `InsurancePolicy` のカスタムオブジェクトを使って、見積もりから保険契約までのライフサイクル全体をモデル化できます。見積もりが承認されたときに保険契約を有効化し、キャンセル時の日割り返金を計算し、スケジュールに従って更新見積もりを自動的にトリガーするメソッドを定義できます。運用チームは Stripe ダッシュボードで保険契約を直接管理でき、開発者は API を通じて同じデータを操作できます。 |
| **メディアサブスクリプション** | 標準の請求に必ずしも当てはまらないサブスクリプションモデルを実装できます。`MediaSubscription` オブジェクトでは、事前に決済手段を設定しなくてもトライアルから有料への移行フロー、カスタムの一時停止および再開の状態、プラン間の柔軟なアップグレードパスに対応できます。メソッドは、こうした移行を処理し、ビジネスルールを適用し、各ステップで適切な請求アクションをトリガーします。 |
| **物流とフルフィルメント** | Stripe 内で、決済や関連する請求書とあわせて、発送、配送業者の詳細、配達状況を追跡できます。 |
| **業務データ** | 契約、チケット、サービス記録などのドメイン固有のデータを Stripe に取り込めば、チームは単一のシステムで運用できます。 |
| **アプリケーション開発** | [Stripe Apps](https://docs.stripe.com/stripe-apps.md) を構築する場合は、カスタムオブジェクト定義をアプリに含めて、設定を保存したり機能を拡張したりできます。 |

## カスタムオブジェクトの仕組み

カスタムオブジェクトを使用する場合は、次の手順に従います。

1. **オブジェクトを定義する**: テキスト、数値、日付、列挙値、金額など、ビジネスにとって重要なフィールドを含むカスタムオブジェクト定義を作成します。Stripe オブジェクト ([Customers](https://docs.stripe.com/api/customers/object.md)、[Invoices](https://docs.stripe.com/api/invoices.md)、[Subscriptions](https://docs.stripe.com/api/subscriptions.md) など) や、他のカスタムオブジェクトとの関係を定義します。

   API を使用してプログラムでオブジェクトを定義することも、Stripe ダッシュボードで視覚的に定義することも、Stripe App の一部としてパッケージ化することもできます。

2. **ビジネスロジックを実装する**: ドメインルールを表現するメソッドをカスタムオブジェクトに定義します。メソッドでは、次のことを実行できます。

   - **イベントに反応する**: Stripe で何かが発生したとき (たとえば、請求が支払われた場合や、レコードオブジェクトが作成された場合) に自動的に実行されます。
   - **API エンドポイントを公開する**: アプリケーションやチームが直接呼び出せる、`/v2/extend/objects/insurance_policies/:id/cancel` のようなドメイン固有のアクションを作成します。
   - **Stripe リソースをオーケストレーションする**: 請求書を作成し、レコードを更新し、Stripe インフラ内で状態を管理します。

   メソッドは Stripe インフラストラクチャで実行されます。独自のロジックを記述すれば、実行、信頼性、スケーリングは Stripe が処理します。

3. **ダッシュボードと API で管理する**: Stripe ダッシュボードでカスタムオブジェクトレコードを直接表示、作成、更新できます。チームは、別のツールに切り替えることなく、見積もりの承認、保険契約のキャンセル、サブスクリプションの一時停止など、ドメイン固有のアクションを実行できます。

   開発者は、プログラムによるアクセスに対応する API と SDK のフルサポートを利用できます。各カスタムオブジェクトには専用の API エンドポイント群が用意されており、任意の言語向けに型付き SDK を生成できます。

## はじめる前に

カスタムオブジェクトは現在も積極的に開発が進められています。できることは次のとおりです。

- カスタムオブジェクトを定義する
- レコードを作成して管理する
- ビジネスロジックを含むメソッドを関連付ける
- API、SDK、ダッシュボードを通じてカスタムオブジェクトを管理する

現在、カスタムオブジェクトは [Connect](https://docs.stripe.com/connect/how-connect-works.md) または [Organizations](https://docs.stripe.com/get-started/account/orgs.md) では使用できません。
