Penuhi pesanan dengan Checkout
Setelah Anda mengintegrasikan Stripe Checkout atau membuat Stripe Payment Link untuk membawa pelanggan ke formulir pembayaran, Anda membutuhkan notifikasi bahwa Anda dapat memenuhi pesanan mereka setelah mereka membayar.
Dalam panduan ini, Anda akan mempelajari cara:
- Menerima notifikasi kejadian bila pelanggan membayar Anda.
- Menangani kejadian.
- Menggunakan Stripe CLI untuk mencoba handler kejadian baru dengan cepat.
- Secara opsional, tangani metode pembayaran tambahan.
- Mengaktifkan handler kejadian Anda di produksi.
Instal Stripe CLI
Cara tercepat untuk mengembangkan dan mencoba webhook secara lokal adalah dengan Stripe CLI.
Sebagai langkah pertama, ikuti panduan instalasi untuk Stripe CLI.
Setelah Stripe CLI terinstal dan menyelesaikan proses masuk, Anda siap melanjutkan ke langkah berikutnya.
Buat handler kejadian AndaSisi server
Di bagian ini, Anda akan membuat handler kejadian kecil agar Stripe dapat mengirimi Anda kejadian checkout.session.completed
bila pelanggan menyelesaikan checkout.
Pertama, buat rute baru untuk handler kejadian Anda. Mulailah dengan mencetak kejadian yang Anda terima. Anda akan memverifikasi bahwa pengiriman berhasil di langkah berikutnya:
Mencoba
Jalankan server Anda (misalnya, di localhost:4242
). Berikutnya, siapkan Stripe CLI untuk meneruskan kejadian ke server lokal, sehingga Anda dapat mencoba handler kejadian secara lokal:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Berikutnya, lewati Checkout sebagai pelanggan:
- Klik tombol checkout (Anda mungkin menyiapkannya di panduan Menerima pembayaran)
- Isilah formulir pembayaran Anda dengan data percobaan
- Masukkan
4242 4242 4242 4242
sebagai nomor kartu - Masukkan tanggal mendatang untuk kedaluwarsa kartu
- Masukkan nomor 3 angka untuk CVC
- Masukkan kode pos tagihan (
90210
)
- Masukkan
- Klik tombol Bayar
Anda seharusnya melihat:
checkout.session.completed
di outputstripe listen
- Pernyataan cetak dari log kejadian server Anda dengan kejadian
checkout.session.completed
Sekarang setelah Anda memverifikasi pengiriman kejadian, Anda dapat menambahkan sedikit keamanan untuk memastikan kejadian hanya berasal dari Stripe.
Verifikasikan kejadian berasal dari Stripe
Siapa pun dapat melakukan POST data ke handler kejadian Anda. Sebelum memproses kejadian, selalu verifikasikan bahwa kejadian tersebut berasal dari Stripe sebelum memercayainya. Pustaka resmi Stripe memiliki dukungan bawaan untuk memverifikasi kejadian webhook, yang akan Anda gunakan untuk memperbarui handler kejadian dengan:
Mencoba
Ikuti alur percobaan dari langkah sebelumnya. Anda seharusnya tetap melihat kejadian checkout.session.completed
berhasil dicetak.
Berikutnya, coba capai endpoint dengan permintaan yang tidak ditandatangani:
curl -X POST \ -H "Content-Type: application/json" \ --data '{ "fake": "unsigned request" }' \ -is http://localhost:4242/webhook HTTP/1.1 400 Bad Request ... more headers
Anda akan mendapatkan kesalahan 400 Bad Request
, karena mencoba mengirim permintaan yang tidak ditandatangani ke endpoint.
Sekarang setelah dasar-dasar handler kejadian disiapkan, Anda dapat melanjutkan pemenuhan pesanan.
Penuhi pesananSisi server
Tangani kejadian checkout.session.completed
untuk memenuhi pesanan. Tergantung pada metode pembayaran mana yang Anda terima (misalnya, kartu atau dompet seluler), Anda mungkin memiliki sejumlah kejadian tambahan untuk ditangani. Kejadian ini menyertakan objek Sesi Checkout, yang berisi detail tentang pelanggan Anda dan pembayarannya. Ketika menangani aktivitas ini, Anda mungkin juga mempertimbangkan:
- Menyimpan salinan pesanan di database Anda sendiri.
- Mengirim email resi kepada pelanggan.
- Rekonsiliasi item baris dan kuantitas yang dibeli oleh pelanggan jika menggunakan
line_item.adjustable_quantity
. Jika Sesi Checkout memiliki banyak item baris, Anda dapat memberi nomor pada mereka dengan line_items.
Tangani perilaku pengalihan
Anda dapat melakukan konfigurasi Checkout untuk mengalihkan pelanggan setelah menerima kejadian webhook. Checkout menangani pengalihan yang dipicu webhook ini sedikit berbeda tergantung apakah Anda menggunakan formulir tersemat atau halaman yang di-hosting Stripe.
Halaman yang di-hosting Stripe | Endpoint webhook Anda akan mengalihkan pelanggan ke success_url setelah Anda mengakui telah menerima kejadian. Jika endpoint Anda tidak berfungsi atau kejadian tidak diakui dengan benar, handler Anda akan mengalihkan pelanggan ke success_url 10 detik setelah pembayaran berhasil. |
Formulir tersemat | Endpoint webhook Anda segera mengalihkan pelanggan ke return_url . Anda tidak perlu mengakui telah menerima kejadian tersebut. |
Mencoba
Pastikan stripe listen
masih berjalan. Lewati Checkout sebagai pengguna percobaan, seperti di langkah sebelumnya. Handler kejadian Anda seharusnya menerima kejadian checkout.session.completed
, dan Anda seharusnya berhasil menanganinya.
Tangani metode pembayaran notifikasi tertundaSisi server
Peringatan
Langkah ini hanya diperlukan jika Anda berencana menggunakan salah satu metode pembayaran berikut: Debit Langsung Bacs, Transfer bank, Boleto, Debit praotorisasi Kanada, Konbini, OXXO, Debit Langsung SEPA, SOFORT, atau Debit Langsung ACH.
Saat menerima pembayaran dengan metode pembayaran notifikasi tertunda, dana tidak langsung tersedia. Diperlukan beberapa hari untuk memproses dana sehingga Anda harus menunda pemenuhan pesanan hingga dana tersedia di akun Anda. Setelah pembayaran berhasil, status PaymentIntent pokok berubah dari processing
menjadi succeeded
.
Anda perlu menangani kejadian Checkout berikut:
Nama Kejadian | Keterangan | Langkah berikutnya |
---|---|---|
checkout.session.completed | Pelanggan berhasil mengotorisasi pembayaran debit dengan menyerahkan formulir Checkout. | Tunggu pembayaran berhasil atau gagal. |
checkout.session.async_payment_succeeded | Pembayaran pelanggan berhasil. | Penuhi barang atau layanan yang dibeli. |
checkout.session.async_payment_failed | Pembayaran ditolak, atau gagal karena beberapa alasan lainnya. | Hubungi pelanggan lewat email dan minta agar mereka memesan lagi. |
Semua kejadian ini menyertakan objek Sesi Checkout.
Perbarui handler kejadian Anda untuk memenuhi pesanan:
Mencoba
Pastikan stripe listen
masih berjalan. Lewati Checkout sebagai pengguna percobaan, seperti di langkah sebelumnya. Handler kejadian Anda seharusnya menerima kejadian checkout.session.completed
, dan Anda seharusnya berhasil menanganinya.
Sekarang setelah menyelesaikan langkah-langkah ini, Anda siap untuk live di produksi kapan saja Anda memutuskan untuk melakukannya.
Mulai live di produksi
Setelah Anda menerapkan endpoint handler kejadian ke produksi, Anda perlu mendaftarkan URL live dengan Stripe. Ikuti panduan untuk mendaftarkan webhook.