ข้ามไปยังเนื้อหา

Products & Features

กำหนดสิ่งที่คุณขาย สร้างสินค้าพร้อม variant หนึ่งรายการขึ้นไป และแนบ feature ที่นำกลับมาใช้ซ้ำได้สำหรับการควบคุมการเข้าถึงแบบ entitlement

Proyecta Commerce ใช้แนวคิดสามอย่าง ได้แก่ products, variants และ features

  • Product — สิ่งที่คุณขาย (เช่น “Pro Plan”, “เสื้อยืด”, “Strategy Call”)
  • Variant — ระดับราคาหรือการตั้งค่าของสินค้า (เช่น “Pro Monthly $29”, “Pro Annual $290”, “เสื้อยืด – ไซส์ L”)
  • Feature — คีย์ entitlement ที่นำกลับมาใช้ซ้ำได้ ซึ่งแอปของคุณตรวจสอบขณะ runtime (เช่น pro_features, unlimited_projects, api_access)

สินค้าหนึ่งชิ้นสามารถมีหลาย variant และสินค้ายังมี resources หนึ่งรายการขึ้นไปแนบอยู่ด้วย ซึ่งโดยปกติจะเป็น feature ที่ให้สิทธิ์การเข้าถึงเมื่อลูกค้า subscribe

ใน Dashboard > Commerce > Products คลิก Create product (หรือถาม AI ว่า "Create a Pro plan at $29/month and a Business plan at $99/month.") แต่ละสินค้าต้องการ:

  • display name (เช่น “Pro”)
  • variant อย่างน้อยหนึ่งรายการ

แต่ละ variant มีการกำหนดราคาของตัวเอง:

ฟิลด์หมายเหตุ
nameชื่อที่แสดงสำหรับ variant (“Monthly”, “Annual”, “Large”)
currencyรหัส ISO สามตัวอักษร — USD, EUR, GBP, JPY, BRL, MXN, INR… (SDK รองรับ 130+ สกุลเงิน)
unit_amountราคาในหน่วยเงินที่เล็กที่สุด (เซนต์) 2900 = $29.00
recurringไม่บังคับ — { interval: 'week' | 'month' | 'year' } หากเว้นไว้จะเป็นราคาชำระครั้งเดียว ปัจจุบันยังไม่รองรับการเรียกเก็บเงินรายวัน
is_defaultรับค่าได้แต่ยังไม่บังคับใช้ — ยังไม่ได้ implement การเลือก variant เริ่มต้น
mediaแนบรูปภาพหรือวิดีโอด้วย CDN file ID (ดูที่ Files)

ราคาไม่สามารถเปลี่ยนแปลงได้ เมื่อสร้าง variant แล้ว ราคาจะไม่สามารถแก้ไขได้ — ให้สร้าง variant ใหม่แทน เพื่อป้องกันไม่ให้ผู้ subscribe อยู่แล้วได้รับผลกระทบจากการเปลี่ยนแปลงราคาโดยไม่ตั้งใจ

Feature คือ primitive สำหรับการควบคุมการเข้าถึง สร้าง feature ครั้งเดียว แล้วนำไปแนบกับสินค้าหนึ่งชิ้นขึ้นไปได้เลย

// Create a feature
const pro = await proyecta.commerce.features.create({
name: 'Pro features',
description: 'Unlocks the Pro tier capabilities',
// optional custom id — lowercase alphanumeric and underscores only (e.g. 'pro_features')
});

เมื่อคุณสร้างสินค้า คุณจะแนบ feature เข้ากับสินค้าผ่าน “resources” ลูกค้าที่ subscribe สินค้านั้นจะได้รับสิทธิ์เข้าถึง feature ทุกอย่างที่แนบอยู่

จากนั้นในแอปของคุณ ให้ตรวจสอบว่าลูกค้ามีสิทธิ์เข้าถึงหรือไม่:

const { has_access } = await proyecta.commerce.check({
customer_id: 'cus_123',
resource_id: 'pro_features',
});

หมายเหตุ: resource_id ต้องเป็น key ของ feature — slug ที่ได้จากชื่อ feature (เช่น pro_features) ไม่ใช่ property .id ของ feature object ที่ features.create() คืนค่ามา

นี่คือวิธีที่คุณจะ gate หน้าเว็บ, API endpoint หรือ feature ที่ใช้ได้เฉพาะผู้ใช้ Pro ในโค้ดของแอปคุณ

SaaS subscriptions

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.

สินค้าจริง (Physical goods)

Create a T-shirt product with three variants: Small, Medium, Large at $25 each.

สินค้าดิจิทัล (Digital goods)

Create a course product with a single one-time variant at $149.

การบริจาค (Donations)

Create a donation product with three variants: $25, $50, $100 — all one-time.

ปัจจุบัน Proyecta Commerce ยังไม่ได้ติดตาม inventory สำหรับสินค้าจริง หากคุณขายสินค้าที่มีสต็อก ให้จัดการนับสต็อกในฐานข้อมูลของแอปเอง และตรวจสอบใน checkout flow ของคุณ

  • การปรับแต่งฟิลด์ใน Checkout — เก็บข้อมูลเพิ่มเติมจากผู้ซื้อ
  • Pay-what-you-want pricing
  • การติดตาม inventory ในตัว สำหรับสินค้าจริง