Panduan

Cara Tambah Pembayaran pada Aplikasi Anda: Pembayaran, Langganan dan Webhook

Cara paling mudah untuk menambah pembayaran pada aplikasi anda ialah Stripe: gunakan Payment Link jika anda hanya perlukan butang "Beli" dan boleh mengendalikan pesanan secara manual, Stripe Checkout jika aplikasi anda perlu tahu siapa yang membayar dan bertindak balas secara automatik, dan Checkout dalam mod langganan serta portal pelanggan Stripe untuk bil berulang. Dalam setiap kes kecuali yang paling ringkas, anda juga memerlukan webhook — titik akhir pelayan yang dipanggil Stripe apabila pembayaran berjaya — dan anda patut menguji segala-galanya dengan kunci ujian dan kad ujian Stripe sebelum beralih ke kunci sebenar.

Panduan ini menerangkan setiap pilihan, bahagian webhook yang kebanyakan tutorial terlepas pandang, dan apa yang perlu disemak sebelum menerima wang sebenar. Butiran Stripe adalah daripada dokumentasi Stripe sendiri sehingga September 2026.

Mengapa menggunakan pembekal pembayaran

Jangan sekali-kali kumpul nombor kad dalam borang anda sendiri. Mengendalikan data kad mentah membawa anda ke dalam skop PCI DSS (piawaian keselamatan industri kad) dan merupakan liabiliti serius. Pembekal pembayaran seperti Stripe menghoskan borang pembayaran, menyimpan kad, menguruskan pengesahan bank, dan memberitahu aplikasi anda hasilnya. Aplikasi anda hanya melihat "pelanggan X telah membayar untuk Y".

Panduan ini menggunakan Stripe kerana ia meluas digunakan, didokumentasikan dengan baik dan disokong oleh kebanyakan pembina aplikasi AI. Pembekal lain juga wujud, dan sesetengahnya bertindak sebagai "pedagang rekod" yang mengambil alih pengendalian cukai jualan untuk anda; jika pematuhan cukai membimbangkan anda, model itu patut dibandingkan.

Tiga cara menerima pembayaran dengan Stripe

PilihanKod diperlukanAplikasi anda tahu siapa yang membayar?Sesuai untuk
Payment LinksTiadaHanya jika anda tambah webhookMenjual beberapa produk tetap, derma, menguji permintaan
Checkout (sekali)Kod pelayan untuk mencipta sesiYa, melalui webhookKedai, muat turun berbayar, pembelian sekali
Checkout (langganan)Kod pelayan serta pengendalian webhookYa, melalui webhookSaaS, keahlian, apa-apa yang berulang

Payment Links

Payment Link ialah halaman pembayaran yang dihoskan Stripe yang anda cipta dalam Stripe Dashboard tanpa kod. Anda mendapat URL yang boleh diletakkan di belakang butang dalam aplikasi anda, dikongsi dalam e-mel, atau dipaparkan sebagai kod QR. Dokumentasi Stripe menyatakan Payment Links boleh menjual produk, langganan, atau menerima derma, dan anda boleh membenarkan pelanggan memilih apa yang hendak dibayar atau mengehadkan bilangan pembelian.

Masalahnya: aplikasi anda tidak secara automatik tahu bahawa pengguna yang log masuk tertentu telah membayar. Untuk halaman derma atau kedai kecil di mana anda memenuhi pesanan secara manual daripada pemberitahuan e-mel Stripe, itu tidak mengapa. Untuk "bayar untuk membuka ciri Pro", ia tidak sesuai.

Stripe Checkout

Checkout ialah halaman pembayaran yang dicipta oleh pelayan anda atas permintaan untuk pembelian tertentu. Pelayan anda memberitahu Stripe apa yang dibeli (dan secara pilihan siapa pembelinya), Stripe memulangkan URL, dan anda menghantar pelanggan ke sana. Dokumentasi Stripe menerangkannya sebagai menyokong kedua-dua pembayaran sekali dan langganan, sebagai halaman penuh yang dihoskan Stripe, halaman yang dibenamkan dalam laman anda, atau borang terbenam.

Aliran kerjanya:

  1. Pelanggan mengklik Beli dalam aplikasi anda.
  2. Pelayan anda mencipta Checkout Session menggunakan kunci rahsia anda, termasuk ID yang memautkannya kepada pengguna atau pesanan anda.
  3. Pelanggan dialihkan ke Stripe dan membayar.
  4. Stripe mengalihkan mereka kembali ke halaman kejayaan anda.
  5. Stripe menghantar peristiwa checkout.session.completed ke webhook anda, dan pelayan anda menandakan pesanan sudah dibayar atau membuka akses.

Langkah 2 mesti berlaku di pelayan, kerana ia menggunakan kunci rahsia anda. Itulah sebab utama Checkout memerlukan bahagian belakang (backend).

Langganan

Langganan menggunakan Checkout dalam mod langganan dengan harga berulang yang anda sediakan dalam Stripe. Pembayaran pertama berfungsi seperti aliran di atas. Selepas itu, pembaharuan, kad yang gagal, peningkatan dan pembatalan berlaku dari masa ke masa — selalunya apabila pelanggan tidak berada dalam aplikasi anda langsung — jadi aplikasi anda hanya mengetahuinya melalui webhook.

Untuk membenarkan pelanggan mengurus langganan mereka sendiri, Stripe menawarkan portal pelanggan yang dihoskan. Menurut dokumentasi Stripe, pelanggan boleh mengemas kini kaedah pembayaran dan butiran bil, menukar atau membatalkan langganan, serta melihat dan memuat turun invois di sana. Anda mengkonfigurasinya dalam Stripe Dashboard dan menambah butang "Urus bil" yang menghantar pelanggan ke sana. Ini menjimatkan anda daripada membina skrin tersebut sendiri.

Webhook: bahagian yang tidak boleh dilangkau

Webhook ialah permintaan HTTP yang Stripe hantar ke pelayan anda apabila sesuatu berlaku. (Lihat apa itu webhook untuk idea umumnya.) Panduan penyempurnaan Stripe jelas: anda tidak boleh bergantung pada halaman kejayaan sahaja untuk menyempurnakan pesanan, kerana pelanggan boleh membayar dan kemudian hilang sambungan sebelum halaman itu dimuatkan. Untuk langganan dan kaedah pembayaran yang tertangguh, webhook diperlukan.

Peristiwa yang patut dikendalikan

PeristiwaMaksudnyaApa yang aplikasi anda lakukan
checkout.session.completedCheckout selesaiTandakan pesanan sudah dibayar atau mulakan akses
checkout.session.async_payment_succeededKaedah tertangguh (seperti debit bank) telah dijelaskan kemudianSempurnakan sekarang
checkout.session.async_payment_failedPembayaran tertangguh itu gagalBeritahu pelanggan; jangan sempurnakan
invoice.paidPembayaran langganan berjaya, termasuk pembaharuanLanjutkan akses
invoice.payment_failedPembaharuan gagalBeri amaran kepada pengguna; Stripe mungkin cuba semula
customer.subscription.updatedPelan ditukar, atau pembatalan dijadualkanKemas kini pelan pengguna
customer.subscription.deletedLangganan tamatAlih keluar akses berbayar

Peraturan untuk pengendali webhook yang betul

Ini datang terus daripada dokumentasi webhook Stripe, dan pengendali yang dijana AI kadangkala terlepas salah satu daripadanya:

  • Sahkan tandatangan. Setiap peristiwa mengandungi pengepala Stripe-Signature. Pengendali anda menyemaknya menggunakan rahsia penandatanganan titik akhir (ia bermula dengan whsec_). Tanpa ini, sesiapa sahaja boleh menghantar "pembayaran berjaya" palsu kepada pelayan anda.
  • Gunakan badan permintaan mentah. Semakan tandatangan gagal jika rangka kerja anda menghurai atau mengubah badan terlebih dahulu.
  • Pulangkan respons 2xx dengan cepat, kemudian buat kerja yang lebih perlahan. Tamat masa dikira sebagai kegagalan.
  • Kendalikan pendua. Stripe mungkin menghantar peristiwa yang sama lebih daripada sekali. Rekodkan ID peristiwa yang telah diproses, atau pastikan penyempurnaan selamat untuk dijalankan dua kali.
  • Jangan andaikan susunan. Stripe tidak menjamin peristiwa tiba mengikut urutan ia berlaku.
  • Jangkakan percubaan semula. Dalam mod sebenar, Stripe mencuba semula penghantaran yang gagal sehingga tiga hari, jadi gangguan pendek tidak menghilangkan pembayaran — tetapi pengendali anda mesti boleh menangani peristiwa lewat.

Webhook memerlukan alamat HTTPS awam, jadi biasanya ia hanya berfungsi setelah aplikasi anda diterbitkan (CLI Stripe boleh memajukan peristiwa ke mesin tempatan untuk pemaju).

Prompt yang meliputi keseluruhan aliran

Tambah pembelian sekali dengan Stripe Checkout untuk "Pek Pro" (ID harga dalam STRIPE_PRICE_ID). Cipta Checkout Session di pelayan menggunakan STRIPE_SECRET_KEY daripada rahsia, dan sertakan ID pengguna yang log masuk dalam sesi itu. Tambah titik akhir POST /api/stripe/webhook yang mengesahkan tandatangan Stripe dengan STRIPE_WEBHOOK_SECRET menggunakan badan permintaan mentah, mengendalikan checkout.session.completed, dan menandakan pengguna itu sebagai memiliki Pek Pro. Pastikan ia selamat jika peristiwa yang sama tiba dua kali. Halaman kejayaan dan pembatalan. Jangan sekali-kali dedahkan kunci rahsia kepada pelayar.

Untuk langganan, tambah: "Gunakan mod langganan dengan STRIPE_PRICE_ID. Kendalikan invoice.paid, invoice.payment_failed, customer.subscription.updated dan customer.subscription.deleted. Tambah butang Urus bil yang membuka portal pelanggan Stripe."

Mod ujian

Stripe mempunyai persekitaran sandbox (ujian) dan sebenar yang berasingan dengan kunci yang berasingan. Kunci sandbox bermula dengan pk_test_, sk_test_ atau rk_test_; kunci sebenar bermula dengan pk_live_, sk_live_ atau rk_live_. Transaksi ujian tidak memindahkan wang.

Kad ujian berguna daripada dokumentasi ujian Stripe (sebarang tarikh luput akan datang, sebarang CVC tiga digit):

Nombor kadHasil
4242 4242 4242 4242Pembayaran berjaya
4000 0000 0000 0002Kad ditolak
4000 0000 0000 3220Memerlukan pengesahan 3D Secure, kemudian berjaya

Uji sekurang-kurangnya:

  • Pembayaran yang berjaya membuka perkara yang betul untuk pengguna yang betul
  • Kad yang ditolak memaparkan mesej yang jelas dan tidak membuka apa-apa
  • Menutup tab pelayar sejurus selepas membayar masih memberi akses (ini membuktikan webhook berfungsi, bukan hanya halaman kejayaan)
  • Membatalkan di halaman Stripe memulangkan pengguna ke aplikasi anda tanpa sebarang caj
  • Untuk langganan: batalkan dalam portal pelanggan dan sahkan akses tamat pada masa yang sepatutnya

Beralih ke mod sebenar

  1. Aktifkan akaun Stripe anda dengan butiran perniagaan dan bank anda.
  2. Gantikan dengan kunci sebenar dalam rahsia aplikasi anda. Stripe mengesyorkan kunci terhad dengan hanya kebenaran yang diperlukan oleh integrasi anda, bukannya kunci rahsia tanpa had.
  3. Cipta titik akhir webhook sebenar yang menunjuk ke aplikasi anda yang diterbitkan. Ia mempunyai rahsia penandatanganan sendiri, berbeza daripada yang ujian — kemas kininya.
  4. Cipta semula produk dan harga dalam mod sebenar; ID mod ujian tidak wujud di sana.
  5. Buat satu pembelian sebenar yang kecil dan bayar balik.

Simpan setiap kunci dalam rahsia projek anda, jangan sekali-kali dalam kod atau sembang. Senarai semak keselamatan kami membincangkan kunci dan pengesahan webhook dengan lebih terperinci.

Cukai, bayaran balik dan dokumen

Pembayaran membawa kewajipan yang kod tidak selesaikan. Ini bukan nasihat cukai; rujuk akauntan.

  • Cukai jualan, VAT dan GST. Bergantung pada tempat anda dan pelanggan anda, anda mungkin perlu mendaftar, mengenakan dan memfailkan cukai. Stripe Tax boleh mengira dan mengutip cukai semasa pembayaran, memantau tempat jualan anda mungkin mencetuskan kewajipan, dan membantu dengan pendaftaran serta failan — tetapi tanggungjawab kekal pada anda. Pembekal pedagang rekod ialah alternatif yang mengambil lebih banyak perkara ini.
  • Bayaran balik dan pertikaian. Tentukan dasar bayaran balik anda sebelum pelancaran dan letakkannya di laman anda. Pertikaian (chargeback) berlaku; simpan rekod apa yang dibeli dan dihantar.
  • Resit dan invois. Stripe boleh menghantar resit melalui e-mel; perniagaan mungkin memerlukan invois yang betul.
  • Yuran. Setiap pembekal mengenakan caj setiap transaksi. Semak halaman harga semasa pembekal dan jangan bergantung pada angka dalam artikel.

Persediaan mana yang sesuai dengan aplikasi anda

  • Derma atau beberapa produk: Payment Links. Lihat cara membina laman web derma bukan untung.
  • Kedai dengan troli: Checkout dengan item baris dan webhook. Lihat cara membina kedai dalam talian.
  • SaaS atau keahlian: Checkout dalam mod langganan, webhook dan portal pelanggan. Lihat cara membina MVP SaaS dan cara menetapkan harga produk SaaS.
  • Pasaran yang membayar penjual: persediaan yang berbeza dan lebih terkawal (Stripe Connect atau yang serupa). Rancang untuknya secara berasingan.

Menambah pembayaran dalam Mythex

Pembayaran dalam aplikasi yang anda bina pada Mythex menggunakan akaun dan kunci Stripe anda sendiri; tiada pilihan "Sambung Stripe" satu klik untuk aplikasi anda. Aliran biasanya:

  1. Dapatkan kunci Stripe ujian.
  2. Tambah STRIPE_SECRET_KEY (dan rahsia webhook kemudian) ke rahsia projek — melalui /secrets, tetapan projek, atau kad rahsia yang ditunjukkan ejen apabila ia memerlukan kunci.
  3. Minta ejen untuk Checkout menggunakan prompt seperti di atas.
  4. Uji dalam Pratonton dengan kad ujian. Terbitkan sebelum mendaftarkan webhook, kerana ia memerlukan URL awam anda.
  5. Selepas menukar kepada kunci sebenar, terbitkan semula supaya aplikasi sebenar mengambilnya.

Lihat Terima pembayaran dengan Stripe dan Kendalikan webhook dalam bahagian belakang anda dalam dokumentasi.

Soalan lazim

Apakah cara paling mudah untuk menerima pembayaran dalam aplikasi?

Stripe Payment Link tidak memerlukan kod: anda cipta dalam Stripe Dashboard dan pautkan dari aplikasi anda. Jika aplikasi anda perlu tahu siapa yang membayar dan membuka sesuatu secara automatik, gunakan Stripe Checkout dengan webhook.

Adakah saya perlukan webhook untuk menerima pembayaran?

Jika aplikasi anda perlu bertindak balas terhadap pembayaran — membuka akaun, menandakan pesanan sudah dibayar, mengendalikan pembaharuan — ya. Dokumentasi Stripe menyatakan anda tidak boleh bergantung pada halaman kejayaan sahaja, kerana pelanggan mungkin membayar dan tidak sampai ke halaman itu. Webhook juga diperlukan untuk langganan.

Bagaimana saya menguji pembayaran tanpa wang sebenar?

Gunakan kunci API sandbox (ujian) Stripe dan nombor kad ujiannya, seperti 4242 4242 4242 4242 dengan sebarang tarikh luput akan datang dan sebarang CVC tiga digit. Transaksi ujian tidak memindahkan wang sebenar.

Adakah Stripe mengendalikan cukai jualan dan VAT untuk saya?

Stripe Tax boleh mengira dan mengutip cukai semasa pembayaran serta memantau tempat anda mungkin perlu mendaftar, tetapi anda tetap bertanggungjawab terhadap kewajipan cukai anda. Rujuk akauntan untuk situasi anda.

Mythex · Pricing · Bina apa sahaja dengan AI · Templat laman web dan aplikasi · Mythex dibandingkan · Glosari pembinaan aplikasi AI · Alat percuma untuk membina aplikasi dengan 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 Македонски മലയാളം Монгол मराठी မြန်မာ 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 简体中文 繁體中文(香港) 繁體中文(台灣)