Penuhi pesanan
Pelajari cara memenuhi pembayaran yang diterima dengan Checkout Sessions API.
Bila menerima pembayaran dengan Sesi Checkout API, 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.
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 Anda sebagai pelanggan.
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.
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 landing Anda. Anda dapat melakukan konfigurasi halaman landing dengan meneruskan return_url ketika membuat Sesi Checkout, atau meneruskan returnUrl ke confirm
pada frontend.
Gunakan Identifikasi Sesi Checkout dari URL yang Anda tentukan untuk melakukan hal berikut:
- Saat server menerima permintaan untuk halaman arahan checkout, ekstrak identifikasi Sesi Checkout dari URL.
- Jalankan fungsi
fulfill_
Anda dengan identifikasi yang diberikan.checkout - Tampilkan halaman setelah upaya pemenuhan selesai.
Saat menampilkan halaman landing, 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 landing checkout, karena pelanggan tidak dijamin akan mengunjungi halaman tersebut. Misalnya, seseorang dapat membayar dengan sukses dan kemudian kehilangan koneksi ke internet sebelum halaman arahan 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.