คู่มือ

วิธีเพิ่มการสมัครสมาชิกด้วย Stripe: แพ็กเกจ ทดลองใช้ฟรี Webhook และการชำระเงินที่ล้มเหลว

ในการเพิ่มการสมัครสมาชิกด้วย Stripe ให้สร้างผลิตภัณฑ์พร้อมราคาแบบเกิดซ้ำใน Stripe Dashboard ส่งลูกค้าจากเซิร์ฟเวอร์ของคุณไปยังStripe Checkout ในโหมดสมัครสมาชิก และให้ webhook แจ้งแอปของคุณเมื่อการชำระเงินแต่ละครั้งสำเร็จ ล้มเหลว เปลี่ยนแปลง หรือสิ้นสุด เก็บสถานะการสมัครสมาชิกไว้กับผู้ใช้ แล้วให้สิทธิ์การเข้าถึงจากสถานะนั้น ไม่ใช่จากหน้าสำเร็จ เพิ่มปุ่ม จัดการการเรียกเก็บเงิน ที่เปิดพอร์ทัลลูกค้าที่ Stripe โฮสต์ไว้ เพื่อให้ผู้คนเปลี่ยนบัตร สลับแพ็กเกจ และยกเลิกได้ โดยที่คุณไม่ต้องสร้างหน้าเหล่านั้นเอง

คู่มือนี้ต่อยอดจาก วิธีเพิ่มการชำระเงินในแอปของคุณ ซึ่งครอบคลุม Checkout แบบจ่ายครั้งเดียว โหมดทดสอบ และการเปิดใช้งานจริง ที่นี่เราเน้นสิ่งที่ต่างออกไปสำหรับการเรียกเก็บเงินแบบเกิดซ้ำ รายละเอียดของ Stripe อ้างอิงจากเอกสารของ Stripe ณ เดือนกันยายน 2026

ทำไมการสมัครสมาชิกยากกว่าการชำระเงินครั้งเดียว

การชำระเงินครั้งเดียวเกิดขึ้นขณะที่ลูกค้าอยู่ในแอปของคุณ แต่การสมัครสมาชิกยังคงดำเนินต่อหลังจากที่พวกเขาออกไปแล้ว: การต่ออายุทุกเดือน บัตรที่หมดอายุ การอัปเกรดกลางรอบบิล การยกเลิกที่มีผลเมื่อสิ้นรอบ แอปของคุณจะรู้เรื่องเหล่านี้ได้ก็ต่อเมื่อผ่าน webhook บั๊กการสมัครสมาชิกส่วนใหญ่เกิดจากการมองว่าการชำระครั้งแรกคือเรื่องราวทั้งหมด

ตัวเลือกของคุณ

แนวทางสิ่งที่คุณสร้างเหมาะกับ
Payment Link พร้อมราคาแบบเกิดซ้ำไม่มีอะไรนอกจากลิงก์ทดสอบความต้องการ จัดการสิทธิ์การเข้าถึงด้วยตนเอง
Checkout (โหมดสมัครสมาชิก) + พอร์ทัลลูกค้าเส้นทางบนเซิร์ฟเวอร์ webhook และปุ่มการเรียกเก็บเงินแอป SaaS และสมาชิกภาพส่วนใหญ่
Subscriptions API พร้อมฟอร์มการชำระเงินของคุณเองมากกว่ามาก: UI การชำระเงิน การยืนยันตัวตน การลองใหม่แอปที่มีขั้นตอนการเรียกเก็บเงินที่ไม่ธรรมดา
ผู้ให้บริการแบบ merchant-of-recordคล้ายกับ Checkoutผู้ขายที่ต้องการให้ผู้ให้บริการจัดการภาษีการขาย

สำหรับแอปส่วนใหญ่ Checkout บวกพอร์ทัลคือการแลกเปลี่ยนที่เหมาะสม เปรียบเทียบผู้ให้บริการใน Stripe vs Paddle vs Lemon Squeezy หากการจัดการภาษีทำให้คุณกังวล

วางแผนราคาใน Stripe ก่อน

ใน Stripe ผลิตภัณฑ์ คือสิ่งที่คุณขาย ("แพ็กเกจ Pro") และราคา คือวิธีที่คุณคิดเงินสำหรับมัน ("$20 ต่อเดือน" "$200 ต่อปี") ผลิตภัณฑ์หนึ่งอย่างมีราคาได้หลายแบบ ตัดสินใจว่า:

  • คุณเสนอระดับใดบ้าง และแต่ละระดับปลดล็อกอะไรในแอปของคุณ
  • รายเดือน รายปี หรือทั้งสองแบบ
  • คุณเสนอการทดลองใช้ฟรีหรือไม่ และต้องมีบัตรล่วงหน้าหรือไม่

สร้างผลิตภัณฑ์และราคาในโหมดทดสอบ และเก็บ price ID ไว้ เพราะแอปของคุณอ้างอิงถึง หากยังไม่ได้ตกลงเรื่องราคา ให้อ่าน วิธีตั้งราคาผลิตภัณฑ์ SaaS และ ฟรีเมียมกับทดลองใช้ฟรี

วงจรชีวิตการสมัครสมาชิกที่คุณต้องจัดการ

ภาพรวมการสมัครสมาชิกของ Stripe ระบุสถานะที่การสมัครสมาชิกอาจมี สถานะที่สำคัญที่สุดสำหรับการเข้าถึงคือ:

สถานะความหมายให้สิทธิ์การเข้าถึงไหม?
trialingอยู่ในช่วงทดลองใช้ใช่
activeอยู่ในสถานะดีใช่
incompleteยังไม่ได้ชำระครั้งแรก Stripe ให้ลูกค้า 23 ชั่วโมงไม่
incomplete_expiredการชำระครั้งแรกไม่เคยสำเร็จไม่
past_dueการชำระล่าสุดล้มเหลวหรือยังไม่ได้พยายาม อาจมีการลองใหม่แล้วแต่คุณ แอปส่วนใหญ่ให้ช่วงผ่อนผันสั้นๆ
unpaidการลองใหม่สิ้นสุดแล้ว ใบแจ้งหนี้ยังค้าง ไม่มีการพยายามเพิ่มไม่ เอกสารของ Stripe ระบุให้เพิกถอนการเข้าถึง
canceledสิ้นสุดแล้ว เริ่มใหม่ไม่ได้ไม่
pausedการทดลองใช้สิ้นสุดโดยไม่มีวิธีชำระเงิน และถูกตั้งให้หยุดชั่วคราวไม่

เก็บสถานะไว้ในระเบียนผู้ใช้หรือบัญชีของคุณ และให้สิทธิ์การเข้าถึงขึ้นอยู่กับสถานะนั้น อัปเดตทุกครั้งที่ webhook ที่เกี่ยวข้องมาถึง

เหตุการณ์ webhook ที่ต้องจัดการ

เหตุการณ์แอปของคุณทำอะไร
checkout.session.completedเชื่อม ID ของลูกค้าและการสมัครสมาชิกของ Stripe ที่เพิ่งสร้างกับผู้ใช้ของคุณ
invoice.paidทำเครื่องหมายการสมัครสมาชิกว่า active และบันทึกวันสิ้นสุดรอบใหม่
invoice.payment_failedแจ้งผู้ใช้ว่าบัตรล้มเหลว และลิงก์ไปยังพอร์ทัล
invoice.payment_action_requiredขอให้ผู้ใช้ทำการยืนยันตัวตนของบัตรให้เสร็จ
customer.subscription.updatedอัปเดตแพ็กเกจ สถานะ และการยกเลิกที่ถูกกำหนดไว้
customer.subscription.deletedเอาสิทธิ์การเข้าถึงแบบชำระเงินออก
customer.subscription.trial_will_endเตือนผู้ใช้ก่อนการทดลองใช้สิ้นสุด Stripe ส่งก่อนสามวัน

กฎของตัวจัดการจากเอกสาร webhook ของ Stripe ยังคงใช้ได้: ตรวจลายเซ็นด้วยเนื้อหาดิบ ตอบ 2xx อย่างรวดเร็ว จัดการเหตุการณ์ที่ซ้ำและมาไม่ตามลำดับ และคาดว่าจะมีการลองใหม่ คู่มือ webhook คืออะไร อธิบายแนวคิด และคู่มือการชำระเงินระบุกฎอย่างละเอียด

ทำทีละขั้น

  1. สร้างผลิตภัณฑ์และราคา ในโหมดทดสอบของ Stripe
  2. เพิ่มความลับ: คีย์ลับ price ID และต่อมาคือ webhook signing secret อย่าใส่ไว้ในโค้ดฝั่งหน้าบ้านเด็ดขาด
  3. หน้าราคา: ปุ่มของแต่ละแพ็กเกจเรียกเซิร์ฟเวอร์ของคุณ ซึ่งสร้าง Checkout Session ในโหมดสมัครสมาชิกสำหรับผู้ใช้ที่ล็อกอินอยู่ ส่ง ID ของผู้ใช้ไปด้วยเพื่อให้ webhook จับคู่การชำระเงินกับบัญชีได้
  4. endpoint webhook: ตรวจลายเซ็นและจัดการเหตุการณ์ข้างต้น โดยอัปเดตระเบียนการสมัครสมาชิกหนึ่งรายการต่อผู้ใช้หนึ่งคน
  5. ควบคุมฟีเจอร์ ตามสถานะและแพ็กเกจที่เก็บไว้ ตรวจบนเซิร์ฟเวอร์สำหรับทุกการกระทำที่ได้รับการป้องกัน ไม่ใช่แค่ปุ่มที่ซ่อนไว้
  6. พอร์ทัลลูกค้า: ตั้งค่าใน Stripe Dashboard (ผู้คนสลับไปยังแพ็กเกจใดได้บ้าง และยกเลิกได้หรือไม่) จากนั้นเพิ่มปุ่ม จัดการการเรียกเก็บเงิน ที่สร้างเซสชันพอร์ทัลบนเซิร์ฟเวอร์และเปลี่ยนเส้นทางไปที่นั่น
  7. การชำระเงินที่ล้มเหลว: ในการตั้งค่าการเรียกเก็บเงินของ Stripe เลือกพฤติกรรมการลองใหม่และสิ่งที่เกิดขึ้นหลังการลองครั้งสุดท้าย แสดงแบนเนอร์ในแอปขณะอยู่ในสถานะ past_due
  8. ทดสอบวงจรชีวิตทั้งหมด จากนั้นเผยแพร่และลงทะเบียน webhook สำหรับการใช้งานจริง

พรอมต์ที่ให้เครื่องมือสร้างแอปของคุณ

เพิ่มการเรียกเก็บเงินการสมัครสมาชิกด้วย Stripe แพ็กเกจ: Starter (price ID อยู่ใน STRIPE_PRICE_STARTER) และ Pro (STRIPE_PRICE_PRO) หน้าราคาสร้าง Checkout Session ในโหมดสมัครสมาชิกบนเซิร์ฟเวอร์โดยใช้ STRIPE_SECRET_KEY พร้อมแนบ ID ของผู้ใช้ที่ล็อกอินอยู่ บันทึก ID ลูกค้าของ Stripe, ID การสมัครสมาชิก แพ็กเกจ และสถานะไว้บนผู้ใช้ อย่าเปิดเผยคีย์ลับให้เบราว์เซอร์เด็ดขาด

เพิ่ม POST /api/stripe/webhook ตรวจลายเซ็นด้วย STRIPE_WEBHOOK_SECRET โดยใช้เนื้อหาคำขอดิบ จัดการ checkout.session.completed, invoice.paid, invoice.payment_failed, customer.subscription.updated, customer.subscription.deleted และ customer.subscription.trial_will_end บันทึก ID ของเหตุการณ์ที่ประมวลผลแล้ว เพื่อให้ข้ามรายการซ้ำ อัปเดตสถานะของผู้ใช้จากออบเจกต์การสมัครสมาชิก ไม่ใช่จากลำดับของเหตุการณ์ที่มาถึง

ควบคุมฟีเจอร์ Pro บนเซิร์ฟเวอร์: อนุญาตเฉพาะเมื่อสถานะเป็น active หรือ trialing และแพ็กเกจเป็น Pro แสดงแบนเนอร์ "การชำระเงินล้มเหลว อัปเดตบัตรของคุณ" เมื่อสถานะเป็น past_due เพิ่มปุ่มจัดการการเรียกเก็บเงินที่เปิดพอร์ทัลลูกค้าของ Stripe สำหรับผู้ใช้คนนี้

การอัปเกรด การลดระดับ และการคิดเงินตามสัดส่วน

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

เช็กลิสต์การทดสอบ

ใช้โหมดทดสอบของ Stripe และบัตรทดสอบ และไล่ดูทุกสถานะ:

  • การสมัครสมาชิกใหม่ให้แพ็กเกจที่ถูกต้องแก่ผู้ใช้ที่ถูกต้อง
  • การปิดแท็บทันทีหลังจ่ายเงินยังคงให้สิทธิ์การเข้าถึง (พิสูจน์ว่า webhook ทำงาน)
  • บัตรที่ถูกปฏิเสธตอนสมัครไม่ให้อะไรเลย
  • การต่ออายุที่ล้มเหลวทำให้บัญชีอยู่ใน past_due และแสดงแบนเนอร์
  • การอัปเดตบัตรในพอร์ทัลคืนสถานะ active
  • การอัปเกรดและการลดระดับเปลี่ยนฟีเจอร์ได้อย่างถูกต้อง
  • การยกเลิกเมื่อสิ้นรอบคงสิทธิ์การเข้าถึงไว้จนถึงวันสิ้นสุด แล้วจึงเอาออก
  • ผู้ใช้ทดลองใช้ได้สิทธิ์การเข้าถึง ได้รับการเตือน และเปลี่ยนเป็นลูกค้าหรือสูญเสียสิทธิ์ได้อย่างถูกต้อง
  • การส่ง webhook เดิมสองครั้งไม่เปลี่ยนแปลงอะไร

test clock ของ Stripe ให้คุณจำลองการผ่านไปของเวลา ดังนั้นคุณทดสอบการต่ออายุได้โดยไม่ต้องรอหนึ่งเดือน ตรวจเอกสารการทดสอบปัจจุบันของ Stripe เพื่อดูวิธีใช้

ข้อผิดพลาดที่พบบ่อย

  • ให้สิทธิ์การเข้าถึงที่หน้าสำเร็จ ลูกค้าอาจจ่ายเงินแล้วไม่เคยเข้าไปถึงหน้านั้น ให้ใช้ webhook
  • จัดการเฉพาะการชำระครั้งแรก การต่ออายุ ความล้มเหลว และการยกเลิกมาถึงทีหลังเป็นเหตุการณ์
  • ตรวจสถานะแพ็กเกจเฉพาะฝั่งหน้าบ้าน ใครก็เรียก API ของคุณโดยตรงได้
  • ผู้ใช้หนึ่งคนมีหลายการสมัครสมาชิกโดยไม่ตั้งใจ ตรวจว่ามีการสมัครสมาชิกอยู่แล้วก่อนสร้าง Checkout Session ใหม่ หรือส่งลูกค้าเดิมไปที่พอร์ทัลแทน
  • เพิกถอนสิทธิ์ตั้งแต่การต่ออายุล้มเหลวครั้งแรก บัตรล้มเหลวด้วยเหตุผลธรรมดาๆ ช่วงผ่อนผันสั้นๆ พร้อมแบนเนอร์ที่ชัดเจนช่วยรักษาลูกค้าไว้
  • ลืม webhook สำหรับการใช้งานจริง endpoint ของทดสอบและใช้งานจริงมี signing secret ต่างกัน
  • เพิกเฉยต่อภาษีและการคืนเงิน กำหนดนโยบายการคืนเงินและตรวจภาระภาษีกับนักบัญชีก่อนเปิดตัว

การสมัครสมาชิกบน Mythex

แอปที่คุณสร้างบน Mythex ใช้บัญชีและคีย์ Stripe ของคุณเอง ไม่มีการเชื่อมต่อ Stripe ด้วยคลิกเดียวสำหรับแอปของคุณ เพิ่มคีย์ทดสอบและ price ID เป็นความลับของโปรเจกต์ ใช้พรอมต์คล้ายด้านบน และทดสอบด้วยบัตรทดสอบของ Stripe ใน Preview webhook ต้องใช้ URL สาธารณะของแอป ดังนั้นเผยแพร่ก่อนลงทะเบียน endpoint ใน Stripe และเผยแพร่อีกครั้งหลังเปลี่ยนเป็นคีย์ใช้งานจริง เพื่อให้แอปที่ใช้งานจริงรับค่าใหม่ ดู รับการชำระเงินด้วย Stripe และ จัดการ webhook ในแบ็กเอนด์ของคุณ สำหรับภาพรวมของผลิตภัณฑ์ วิธีสร้าง SaaS MVP อธิบายสิ่งที่ควรสร้างรอบๆ การเรียกเก็บเงิน

คำถาม

วิธีที่ง่ายที่สุดในการเพิ่มการสมัครสมาชิกด้วย Stripe คืออะไร?

สร้างผลิตภัณฑ์พร้อมราคาแบบเกิดซ้ำใน Stripe Dashboard ส่งลูกค้าไปยัง Stripe Checkout ในโหมดสมัครสมาชิก จัดการเหตุการณ์การสมัครสมาชิกด้วย webhook และเชื่อมปุ่มจัดการการเรียกเก็บเงินเข้ากับพอร์ทัลลูกค้าที่ Stripe โฮสต์ไว้ วิธีนี้ทำให้คุณไม่ต้องสร้างฟอร์มบัตรและหน้าเปลี่ยนแพ็กเกจเอง

ฉันต้องใช้เหตุการณ์ webhook ของ Stripe ตัวไหนบ้างสำหรับการสมัครสมาชิก?

อย่างน้อยต้องมี checkout.session.completed เพื่อเชื่อมการสมัครสมาชิกใหม่กับผู้ใช้ของคุณ invoice.paid เพื่อยืนยันการชำระเงินที่สำเร็จแต่ละครั้ง invoice.payment_failed เพื่อเตือนการต่ออายุที่ล้มเหลว และ customer.subscription.updated กับ customer.subscription.deleted เพื่อติดตามการเปลี่ยนแพ็กเกจและการยกเลิก

เกิดอะไรขึ้นเมื่อการชำระเงินของการสมัครสมาชิกล้มเหลว?

ตามเอกสารของ Stripe ณ เดือนกันยายน 2026 การสมัครสมาชิกมักเปลี่ยนเป็นสถานะ past_due และ Stripe อาจลองเรียกเก็บเงินอีกตามการตั้งค่าของคุณ หลังการลองครั้งสุดท้าย การตั้งค่าใน Dashboard ของคุณจะกำหนดว่าจะถูกยกเลิก ทำเครื่องหมายว่าไม่ได้ชำระ หรือคงสถานะ past_due ไว้

ฉันจะเสนอการทดลองใช้ฟรีโดยไม่ขอบัตรได้ไหม?

ได้ Stripe รองรับการทดลองใช้ฟรี และเอกสารอธิบายสถานะ paused สำหรับการทดลองที่สิ้นสุดโดยไม่มีวิธีการชำระเงิน เมื่อตั้งค่าไว้เช่นนั้น การขอบัตรล่วงหน้ามักทำให้มีการสมัครน้อยลงแต่มีลูกค้าที่จ่ายเงินมากขึ้น ให้ทดสอบว่าอะไรเหมาะกับผลิตภัณฑ์ของคุณ

Mythex · Pricing · สร้างอะไรก็ได้ด้วย AI · เทมเพลตเว็บไซต์และแอป · เปรียบเทียบ Mythex · อภิธานศัพท์การสร้างแอปด้วย AI · เครื่องมือฟรีสำหรับสร้างแอปด้วย AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)