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

คูปอง

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

คูปองจะถูกจัดการในแท็บย่อย Commerce panel > Products > Coupons ของ builder หรือผ่าน SDK ที่ proyecta.commerce.coupons

ฟิลด์หมายเหตุ
codeโปรโมโค้ดที่ลูกค้าพิมพ์เมื่อชำระเงิน (เช่น LAUNCH20)
percent_off หรือ amount_offใช้ได้เพียงอย่างเดียวเท่านั้น เปอร์เซ็นต์อยู่ในช่วง 1–100 จำนวนเงินอยู่ในหน่วยเงินที่เล็กที่สุด (เซนต์)
currencyจำเป็นสำหรับส่วนลดแบบ amount_off (รหัส ISO สามตัวอักษร) รับค่าตอนสร้างและส่งต่อไปยัง Stripe แต่ไม่ถูกบันทึกหรือส่งคืนโดย API ในภายหลัง
durationonce (เฉพาะการชำระครั้งแรก), repeating (สำหรับ duration_in_months), หรือ forever
duration_in_monthsจำเป็นเมื่อ duration เป็น repeating
max_redemptionsจำนวนสูงสุดรวมของลูกค้าทุกราย
redeem_byวันหมดอายุที่คูปองจะหยุดทำงาน
nameชื่อที่แสดงให้ลูกค้าเห็น
activeสลับเพื่อเปิด/ปิดโดยไม่ต้องลบ

จากแท็บย่อย Coupons คลิก Add coupon แล้วกรอกข้อมูลในฟิลด์ต่างๆ หรือผ่าน SDK:

// 20% off forever
await proyecta.commerce.coupons.create({
code: 'LAUNCH20',
name: 'Launch discount',
percent_off: 20,
duration: 'forever',
});
// $10 off, single use, expires in 30 days
await proyecta.commerce.coupons.create({
code: 'WELCOME10',
amount_off: 1000,
currency: 'USD',
duration: 'once',
max_redemptions: 1,
redeem_by: new Date(Date.now() + 30 * 86400 * 1000).toISOString(),
});
// 50% off for the first 3 months of a subscription
await proyecta.commerce.coupons.create({
code: 'EARLY3',
percent_off: 50,
duration: 'repeating',
duration_in_months: 3,
});

ลูกค้าสามารถกรอกโค้ดคูปองได้ด้วยตัวเองบนหน้าชำระเงินที่ Stripe โฮสต์ไว้ โดยช่องกรอกโปรโมโค้ดจะแสดงขึ้นโดยอัตโนมัติ

await proyecta.commerce.checkout({
customer_id,
line_items: [{ variant_id: 'var_pro_monthly' }],
success_url: 'https://myapp.com/welcome',
});

การส่งโค้ดคูปองผ่านโปรแกรมในขั้นตอนการชำระเงินยังไม่รองรับในขณะนี้

// Browse every coupon (only lists coupons created via the SDK)
const { data } = await proyecta.commerce.coupons.list();
for (const coupon of data.data) {
console.log(coupon.code, coupon.times_redeemed, '/', coupon.max_redemptions);
}
// Paginate using data.has_more and the starting_after query parameter if needed.
// Disable a coupon (without deleting)
await proyecta.commerce.coupons.update({ couponId: 'coupon_123', active: false });

หมายเหตุ: coupons.list() จะคืนค่าเฉพาะคูปองที่สร้างผ่าน SDK เท่านั้น คูปองที่สร้างใน builder Dashboard จะไม่ปรากฏผ่าน coupons.list()

  • โค้ดและจำนวนเงินส่วนลดไม่สามารถเปลี่ยนแปลงได้ คุณสามารถอัปเดต name สำหรับการแสดงผลและสลับ active ได้ แต่ไม่สามารถเปลี่ยน percent_off, amount_off หรือ code ได้ หากต้องการเงื่อนไขที่แตกต่าง ให้สร้างคูปองใหม่
  • times_redeemed เพิ่มค่าโดยอัตโนมัติและเป็นแบบอ่านอย่างเดียว — มีประโยชน์สำหรับติดตามประสิทธิภาพของแคมเปญ
  • คูปองใช้ต่อลูกค้า ไม่ใช่ต่อออร์เดอร์ — หากคูปองเป็นแบบ forever และลูกค้าสมัครสมาชิก การต่ออายุทุกครั้งจะได้รับส่วนลดด้วย