Penuhi pesanan
Pelajari cara memenuhi pembayaran yang diterima dengan Checkout Sessions API.
Bila menerima pembayaran dengan Sesi Checkout yang API (termasuk Payment Links), Anda mungkin perlu mengambil tindakan untuk menyediakan barang yang telah dibayar pelanggan. Misalnya, Anda mungkin perlu memberi pelanggan akses ke layanan, atau Anda mungkin perlu mengirimkan barang fisik kepadanya. Proses ini dikenal sebagai pemenuhan, dan Anda memiliki dua cara untuk menangani proses ini:
- Secara manual: Anda dapat memenuhi pesanan secara manual menggunakan informasi yang Stripe sediakan untuk Anda. Misalnya, Anda dapat memantau Dashboard, memeriksa email notifikasi pembayaran, atau melihat laporan lalu memenuhi pesanan.
- Secara otomatis: Anda dapat membangun sistem pemenuhan otomatis. Direkomendasikan
Opsi pertama berfungsi untuk volume rendah atau usaha eksperimental, tetapi untuk sebagian besar situasi, kami merekomendasikan otomatisasi pemenuhan. Sisa panduan ini menunjukkan kepada Anda cara membangun sistem pemenuhan otomatis.
Pemenuhan otomatis
Sistem pemenuhan otomatis yang diuraikan di bawah ini menggunakan kombinasi webhook dan pengalihan ke situs web Anda untuk memicu pemenuhan. Anda harus menggunakan webhook untuk memastikan pemenuhan terjadi pada setiap pembayaran, dan pengalihan memungkinkan pelanggan Anda mengakses detail layanan atau pemenuhan segera setelah pembayaran.
Catatan
Payment Links menggunakan Checkout, jadi semua informasi di bawah ini berlaku untuk Payment Links dan Checkout kecuali dinyatakan lain.
Buat fungsi pemenuhanSisi server
Buat fungsi pada server Anda untuk memenuhi pembayaran yang berhasil. Webhook memicu fungsi ini, dan dipanggil bila pelanggan dikirim ke situs web Anda setelah menyelesaikan checkout. Panduan ini mengacu pada fungsi ini sebagai fulfill_
, tetapi Anda dapat memberi fungsi nama apa pun yang Anda inginkan.
Fungsi fulfill_
Anda harus:
- Tangani panggilan telepon beberapa kali dengan benar menggunakan Identifikasi Sesi Checkout yang sama.
- Terima identifikasi Sesi Checkout sebagai argumen.
- Ambil Sesi Checkout dari API dengan properti line_items yang diperluas.
- Periksa properti payment_status untuk menentukan apakah memerlukan pemenuhan.
- Lakukan pemenuhan mata anggaran.
- Catat status pemenuhan untuk Sesi Checkout yang disediakan.
Gunakan kode di bawah ini sebagai titik awal untuk fungsi fulfill_
Anda. Komentar TODO
menunjukkan fungsionalitas yang harus Anda implementasikan.
Catatan
Potongan kode di bawah ini mungkin memberi fungsi fulfill_
nama fulfillCheckout
atau FulfillCheckout
tergantung bahasa yang dipilih, tetapi semuanya mewakili fungsi yang sama.
Catatan
Jika Sesi Checkout memiliki banyak mata anggaran, gunakan penomoran halaman otomatis dengan API bagi mata anggaran Checkout untuk mengambil semuanya.
Tergantung metode pembayaran yang diterima dan kebutuhan bisnis, Anda mungkin ingin fungsi fulfill_
melakukan hal berikut:
- Sediakan akses ke layanan.
- Picu pengiriman barang.
- Simpan salinan detail pembayaran dan mata anggaran di database Anda sendiri.
- Kirimi pelanggan email resi custom jika Anda tidak mengaktifkan resi Stripe.
- Rekonsiliasikan mata anggaran dan kuantitas yang dibeli jika Anda mengizinkan pelanggan menyesuaikan kuantitas di Checkout.
- Perbarui inventaris atau catatan stok.
Buat handler kejadian pembayaranSisi server
Untuk memicu pemenuhan, buat handler kejadian webhook untuk mendengarkan kejadian pembayaran dan memicu fungsi fulfill_
Anda.
Bila seseorang membayar Anda, hal itu akan membuat kejadian checkout.
. Siapkan endpoint pada server Anda untuk menerima, memproses, dan mengonfirmasikan diterimanya kejadian ini.
Metode pembayaran langsung versus tertunda
Beberapa metode pembayaran tidak instan, seperti debit langsung ACH dan transfer bank lainnya. Ini berarti, dana tidak akan langsung tersedia saat Checkout selesai. Metode pembayaran yang tertunda menghasilkan kejadian checkout.session.async_payment_succeeded bila pembayaran berhasil nantinya. Status objek sedang dalam pemrosesan hingga status pembayaran berhasil ataupun gagal.
Catatan
Rahasia webhook (whsec_
) yang ditampilkan pada kode di bawah ini berasal dari endpoint webhook Anda ataupun Stripe CLI. Anda dapat menggunakan Stripe CLI untuk percobaan lokal, dan Stripe menggunakan endpoint webhook untuk mengirim kejadian ke handler Anda saat dijalankan pada server. Lihat bagian berikutnya untuk detail selengkapnya.
Anda mungkin juga ingin mendengarkan dan menangani kejadian checkout.
. Misalnya, Anda dapat mengirim email ke pelanggan bila pembayaran yang tertunda gagal.
Coba handler kejadian Anda secara lokal
Cara tercepat untuk mengembangkan dan mencoba handler kejadian webhook Anda adalah dengan Stripe CLI. Jika Anda tidak memiliki Stripe CLI, ikuti panduan instalasi untuk memulai.
Saat Stripe CLI diinstal, Anda dapat mencoba handler kejadian secara lokal. Jalankan server Anda (misalnya, di localhost:4242
), kemudian jalankan perintah stripe listen agar Stripe CLI meneruskan kejadian ke server lokal Anda:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Tambahkan rahasia webhook (whsec_
) ke kode penanganan kejadian Anda, kemudian coba pemenuhan dengan memeriksa Checkout sebagai pelanggan:
- Tekan tombol checkout yang membawa Anda ke Checkout, atau kunjungi Payment Link
- Berikan data percobaan berikut di Checkout:
- 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
- Tekan tombol Bayar
Bila pembayaran selesai, verifikasi hal berikut:
- Pada baris perintah Anda, tempat
stripe listen
berjalan, ini menampilkan kejadiancheckout.
yang diteruskan ke server lokal Anda.session. completed - Log server Anda menunjukkan output yang diharapkan dari fungsi
fulfill_
Anda.checkout
Buat endpoint webhook
Setelah mencoba secara lokal, siapkan dan jalankan handler kejadian webhook di server Anda. Berikutnya, buat endpoint webhook untuk mengirim kejadian checkout.
ke server Anda, kemudian coba lagi alur Checkout.
Konfigurasikan URL halaman landingDirekomendasikan
Konfigurasikan Checkout untuk mengirim pelanggan ke halaman di situs web Anda setelah menyelesaikan Checkout. Sertakan placeholder {CHECKOUT_
di URL halaman Anda, yang diganti dengan Identifikasi Sesi Checkout saat pelanggan dialihkan dari Checkout.
Checkout yang Di-hosting
Untuk Sesi Checkout dengan default ui_mode berupa hosted
, atur success_
.
Catatan
Bila Anda menyiapkan endpoint webhook untuk mendengarkan kejadian checkout.
dan Anda mengatur success_
, Checkout menunggu hingga 10 detik hingga server Anda menanggapi pengiriman kejadian webhook sebelum mengalihkan pelanggan. Jika Anda menggunakan pendekatan ini, pastikan server Anda merespons kejadian checkout.
secepat mungkin.
Perilaku ini tidak didukung untuk endpoint webhook yang terdaftar di akun organisasi. Stripe tidak menunggu endpoint webhook organisasi yang mendengarkan checkout.
merespons saat mengalihkan pelanggan Checkout.
Payment Links
Untuk Payment Links yang Anda buat dengan API, atur after_completion.redirect.url.
Untuk Payment Links yang Anda buat di Dashboard:
- Buka tab Setelah Pembayaran.
- Pilih Jangan tampilkan halaman konfirmasi.
- Berikan URL ke halaman landing Anda yang menyertakan placeholder
{CHECKOUT_
(misalnya,SESSION_ ID} https://example.
)com/after-checkout?session_ id={CHECKOUT_ SESSION_ ID}
Picu pemenuhan di halaman landingDirekomendasikan
Mendengarkan webhook diperlukan untuk memastikan Anda selalu memicu pemenuhan untuk setiap pembayaran, tetapi webhook terkadang dapat ditunda. Untuk mengoptimalkan alur pembayaran dan menjamin pemenuhan segera saat pelanggan hadir, picu pemenuhan juga dari halaman penyambut Anda.
Gunakan Identifikasi Sesi Checkout dari URL yang Anda tentukan di langkah sebelumnya untuk melakukan hal berikut:
- Bila server menerima permintaan untuk halaman penyambut Checkout, ekstrak identifikasi Sesi Checkout dari URL.
- Jalankan fungsi
fulfill_
Anda dengan identifikasi yang diberikan.checkout - Render halaman setelah upaya pemenuhan selesai.
Saat menampilkan halaman penyambut, Anda dapat menampilkan hal berikut:
- Detail dari proses pemenuhan.
- Tautan atau informasi tentang layanan yang sekarang dapat diakses pelanggan.
- Detail pengiriman atau logistik untuk barang fisik.
Webhook harus diisi
Anda tidak dapat mengandalkan pemenuhan pemicu hanya dari halaman penyambut Checkout, karena tidak ada jaminan pelanggan Anda akan mengunjungi halaman tersebut. Misalnya, seseorang dapat berhasil membayar di Checkout, kemudian kehilangan koneksi mereka ke internet sebelum halaman penyambut Anda dimuat.
Siapkan handler kejadian webhook sehingga Stripe dapat mengirim kejadian pembayaran secara langsung ke server Anda, sehingga mengabaikan client sepenuhnya. Webhook menyediakan cara paling andal untuk mengonfirmasi waktu Anda dibayar. Jika pengiriman kejadian webhook gagal, Stripe mencoba ulang beberapa kali.