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 อย่างน้อยหนึ่งรายการ
Variants
หัวข้อที่มีชื่อว่า “Variants”แต่ละ 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 อยู่แล้วได้รับผลกระทบจากการเปลี่ยนแปลงราคาโดยไม่ตั้งใจ
Features (entitlements)
หัวข้อที่มีชื่อว่า “Features (entitlements)”Feature คือ primitive สำหรับการควบคุมการเข้าถึง สร้าง feature ครั้งเดียว แล้วนำไปแนบกับสินค้าหนึ่งชิ้นขึ้นไปได้เลย
// Create a featureconst 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.Inventory
หัวข้อที่มีชื่อว่า “Inventory”ปัจจุบัน Proyecta Commerce ยังไม่ได้ติดตาม inventory สำหรับสินค้าจริง หากคุณขายสินค้าที่มีสต็อก ให้จัดการนับสต็อกในฐานข้อมูลของแอปเอง และตรวจสอบใน checkout flow ของคุณ
กำลังจะมาเร็วๆ นี้
หัวข้อที่มีชื่อว่า “กำลังจะมาเร็วๆ นี้”- การปรับแต่งฟิลด์ใน Checkout — เก็บข้อมูลเพิ่มเติมจากผู้ซื้อ
- Pay-what-you-want pricing
- การติดตาม inventory ในตัว สำหรับสินค้าจริง