Stripe: Subscription, Invoice, dan Payment Intents
Payment infrastructure untuk SaaS global — recurring billing dan invoice management
Tujuan Pembelajaran
- Mampu mengintegrasikan Stripe Payment Intents untuk one-time payment
- Mampu mengimplementasikan Stripe Subscriptions untuk recurring billing
- Memahami Stripe Billing lifecycle (trial → active → past_due → cancelled)
Analogi
Stripe = Langganan Netflix:
Payment Intent (One-time) = Bayar 1 film di bioskop
Subscription (Recurring) = Langganan Netflix bulanan
Invoice = Tagihan bulanan yang dikirim ke email
Stripe handle:
- Trial period (7 hari gratis)
- Card expiry & retry (kartu expired? kirim email minta update)
- Proration (upgrade mid-bulan? bayar selisihnya saja)
- Dunning (gagal bayar? retry 3x dengan interval meningkat)
Stripe seperti sistem langganan Netflix — handle trial, recurring payment, card expiry, dunning, dan proration.
Penjelasan Konsep
Stripe adalah payment platform untuk bisnis global. Fokus pada developer experience — API-first, documentation excellent, SDK untuk semua bahasa.
Payment Intents: Untuk one-time payment. Flow: (1) Create PaymentIntent (amount, currency). (2) Client confirm dengan payment method (card, bank transfer, etc). (3) Stripe handle 3D Secure kalau diperlukan. (4) Webhook notify backend.
Subscriptions: Untuk recurring billing. Komponen: (1) Product + Price — definisikan di Stripe Dashboard. (2) Customer — representasi user di Stripe. (3) Subscription — menghubungkan Customer + Price. Lifecycle: incomplete → incomplete_expired → trialing → active → past_due → canceled → unpaid.
Dunning management: Saat payment gagal (card expired, insufficient funds): Stripe otomatis retry sesuai jadwal (smart retries). Kirim email ke user minta update payment method. Setelah max retries, subscription cancel.
Test mode: Stripe test mode dengan test card numbers: 4242… untuk success, 4000… untuk decline. Webhook testing via Stripe CLI — forward ke localhost.
Inti yang Perlu Dipahami
Bagian ini berfokus pada mampu mengintegrasikan Stripe Payment Intents untuk one-time payment., mampu mengimplementasikan Stripe Subscriptions untuk recurring billing., dan memahami Stripe Billing lifecycle (trial → active → past_due → cancelled). Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Stripe, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Stripe seperti sistem langganan Netflix — handle trial, recurring payment, card expiry, dunning, dan proration. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Prompt AI
Implementasi Stripe subscription untuk SaaS: Free trial 14 hari → Monthly $10. Handle: trial end, payment success, payment failed, subscription cancel. Webhook handler untuk semua event.
Pertanyaan Reflektif
Bagaimana aplikasi-mu handle user yang payment-nya expired? Apakah langsung block akses? Atau ada grace period?