商品と機能
販売するものを定義します。バリアントを1つ以上持つ商品を作成し、エンタイトルメントベースのアクセス制御のために再利用可能なフィーチャーを付与します。
Proyecta Commerceは商品(products)、バリアント(variants)、**フィーチャー(features)**という3つの概念を使用します。
- 商品(Product) — 販売するもの(例:「Pro プラン」「Tシャツ」「ストラテジーコール」)
- バリアント(Variant) — 商品の価格ティアまたは設定(例:「Pro 月額 $29」「Pro 年額 $290」「Tシャツ – L」)
- フィーチャー(Feature) — アプリが実行時にチェックする再利用可能なエンタイトルメントキー(例:
pro_features、unlimited_projects、api_access)
1つの商品に複数のバリアントを持たせることができます。また、商品には1つ以上のリソース(通常はフィーチャー)が付与され、顧客がサブスクライブするとアクセスが許可されます。
販売するものをモデル化する2つの方法
Section titled “販売するものをモデル化する2つの方法”Commerceはプラットフォームの他の部分と組み合わせて使用できるため、「販売するもの」には2つの形があります。Proyectaが適切なものを自動的に選択します。
- Commerce ネイティブ商品 — サブスクリプション、プラン、一回限りのアップグレード、およびフィーチャー/エンタイトルメント。Admin > Commerce > Products で直接定義します。このページで説明するモデルはこちらです。
- コンテンツバックのストアフロントカタログ — 写真、価格、説明を持つ商品で、ビジネスオーナーが日々編集します。これらはCMSに販売可能なコレクションとして存在し、各エントリ自体が商品です。エントリが公開されると、ProyectaはそれをCommerceに実際の購入可能な商品として自動的に組み込みます。商品と価格付きバリアントが作成され、価格はコンテンツフィールドから直接コピーされます。ストアフロントにはコンテンツの価格が表示され、チェックアウト時にはリンクされたバリアントに対して課金されます。両者は同じソースを共有するため、値がずれることはありません。これらのアイテムはCommerceの Products ではなく、コンテンツとして(アプリの Admin、builderまたは公開済みサイト上で)管理します。詳しくはコンテンツ管理をご覧ください。
カード決済を行わないシンプルなカタログ — 閲覧専用のメニューや、「購入」ボタンがWhatsAppの注文リンクに繋がるストアなど — は通常のコンテンツであり、通常のカタログコレクションです。Commerce との連携はありません。コレクションを「販売可能」にするのはカードによるチェックアウトです。
Admin > Commerce > Products で Create product をクリックするか、AIに依頼します(例:"Create a Pro plan at $29/month and a Business plan at $99/month.")。各商品には以下が必要です。
- 表示名(例:「Pro」)
- 少なくとも1つのバリアント
各バリアントは独自の価格情報を持ちます。
| フィールド | 説明 |
|---|---|
name |
バリアントの表示ラベル(「Monthly」「Annual」「Large」など) |
currency |
3文字のISOコード — USD、EUR、GBP、JPY、BRL、MXN、INRなど(130以上対応) |
unit_amount |
最小通貨単位(セント)での価格。2900 = $29.00 |
recurring |
任意 — { interval: 'week' | 'month' | 'year' }。一回限りの価格の場合は省略。日次課金は現在未対応。 |
is_default |
受け付けられますが未実装 — デフォルトバリアントの選択は現在実装されていません。 |
media |
CDNファイルIDで画像または動画を付与します(ファイルを参照) |
価格は変更不可です。 バリアントが作成された後、その価格は変更できません。代わりに新しいバリアントを作成してください。これにより、既存のサブスクライバーが誤った価格変更から保護されます。
フィーチャー(エンタイトルメント)
Section titled “フィーチャー(エンタイトルメント)”フィーチャーはアクセス制御の基本単位です。Admin > Commerce > Products でフィーチャーを一度作成し、1つまたは複数の商品に付与します。各フィーチャーには名前、任意の説明、そしてキー — 小文字、数字、アンダースコアで構成されます(例:pro_features) — があり、アプリがこのキーに対してチェックを行います。
商品を作成する際、「リソース」を通じてフィーチャーを付与します。商品をサブスクライブした顧客は、その商品に付与されたすべてのフィーチャーへのアクセスを得ます。
アプリ内では、そのキーでアクセスを制限します。
const { hasAccess, isLoading } = useEntitlement('pro_features');
if (isLoading) return <Spinner />;if (!hasAccess) return <UpgradePrompt />;return <ProOnlyThing />;このチェックはサインイン済みのセッションに対してサーバーサイドで実行されるため、ブラウザからの偽装はできません。詳細なパターンについてはCommerceをアプリに統合するをご覧ください。
注意: アクセス制御には、フィーチャーの内部IDではなく、常にフィーチャーのキー — フィーチャー名から生成されたスラッグ(例:
pro_features) — を使用してください。
これが、アプリコード内でProユーザー専用のページ、APIエンドポイント、または機能を制限する方法です。
よくある商品の形
Section titled “よくある商品の形”SaaS サブスクリプション
Create products: Free ($0/month), Pro ($29/month, $290/year), Business ($99/month, $990/year).Attach a 'pro_features' feature to Pro and Business so I can gate access in my code.物理的な商品
Create a T-shirt product with three variants: Small, Medium, Large at $25 each.デジタル商品
Create a course product with a single one-time variant at $149.寄付・ドネーション
Create a donation product with three variants: $25, $50, $100 — all one-time.Proyecta Commerceは現在、物理的な商品の在庫追跡には対応していません。在庫管理が必要な商品を販売する場合は、アプリのデータベースで在庫数を管理し、チェックアウトフロー内で確認してください。
近日公開予定
Section titled “近日公開予定”- チェックアウトフィールドのカスタマイズ — 購入者から追加情報を収集
- Pay-what-you-want 価格設定
- 物理的な商品向けの組み込み在庫追跡