Lewati ke konten
Buat akun
atau
Masuk
Logo Dokumen Stripe
/
Tanya AI
Buat akun
Masuk
Mulai
Pembayaran
Pendapatan
Platform dan situs belanja online
Manajemen uang
Alat bantu pengembang
Gambaran Umum
Tentang pembayaran Stripe
Upgrade integrasi Anda
Analitik pembayaran
Pembayaran online
Gambaran umumTemukan contoh penggunaan AndaPembayaran Terkelola
Gunakan Payment Links
Buat halaman checkout
    Gambaran umum
    Mulai cepat
    Sesuaikan tampilan dan nuansa
    Kumpulkan informasi tambahan
    Pungut pajak
    Perbarui checkout secara dinamis
    Kelola katalog produk Anda
    Subscriptions
    Kelola metode pembayaran
    Mungkinkan pelanggan membayar dalam mata uang lokal
    Tambahkan diskon, upsell, dan item opsional
    Siapkan pembayaran mendatang
    Simpan detail pembayaran saat pembayaran
    Setujui pembayaran di server Anda secara manual
    Setelah pembayaran
      Penuhi pesanan
      Kirim resi dan invoice yang telah dibayar
      Sesuaikan perilaku pengalihan
      Pulihkan keranjang yang ditinggalkan
      Analisis corong konversi
    Log perubahan Elements dengan Checkout Sessions API beta
    Migrasi dari Checkout terdahulu
    Migrasi Checkout untuk menggunakan Harga
Bangun integrasi lanjutan
Bangun integrasi dalam aplikasi
Metode Pembayaran
Tambahkan metode pembayaran
Kelola metode pembayaran
Checkout lebih cepat dengan Link
Antarmuka pembayaran
Payment Links
Checkout
Web Elements
Elements dalam aplikasi
Skenario pembayaran
Alur pembayaran custom
Akuisisi fleksibel
Orkestrasi
Pembayaran di tempat
Terminal
Produk Stripe lainnya
Financial Connections
Kripto
Climate
BerandaPembayaranBuild a checkout pageAfter the payment

Penuhi pesanan

Pelajari cara memenuhi pembayaran yang diterima dengan Checkout Sessions API.

Salin halaman

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 pemenuhan
Sisi 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_checkout, tetapi Anda dapat memberi fungsi nama apa pun yang Anda inginkan.

Cegah pemenuhan ekstra

Lakukan pemenuhan hanya sekali per pembayaran. Karena cara kerja integrasi ini dan internet, fungsi fulfill_checkout Anda mungkin dipanggil beberapa kali, kemungkinan secara bersamaan, untuk Sesi Checkout yang sama. Melakukan checkout hanya sekali memastikan hal ini tidak akan menyebabkan perilaku yang tidak diinginkan.

Fungsi fulfill_checkout Anda harus:

  1. Tangani panggilan telepon beberapa kali dengan benar menggunakan Identifikasi Sesi Checkout yang sama.
  2. Terima identifikasi Sesi Checkout sebagai argumen.
  3. Ambil Sesi Checkout dari API dengan properti line_items yang diperluas.
  4. Periksa properti payment_status untuk menentukan apakah memerlukan pemenuhan.
  5. Lakukan pemenuhan mata anggaran.
  6. Catat status pemenuhan untuk Sesi Checkout yang disediakan.

Gunakan kode di bawah ini sebagai titik awal untuk fungsi fulfill_checkout Anda. Komentar TODO menunjukkan fungsionalitas yang harus Anda implementasikan.

Catatan

Potongan kode di bawah ini mungkin memberi fungsi fulfill_checkout nama fulfillCheckout atau FulfillCheckout tergantung bahasa yang dipilih, tetapi semuanya mewakili fungsi yang sama.

Ruby
def fulfill_checkout(session_id) # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
puts "Fullfilling Checkout Session #{session_id}" # TODO: Make this function safe to run multiple times, # even concurrently, with the same session ID # TODO: Make sure fulfillment hasn't already been # performed for this Checkout Session # Retrieve the Checkout Session from the API with line_items expanded checkout_session = Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items'], }) # Check the Checkout Session's payment_status property # to determine if fulfillment should be performed if checkout_session.payment_status != 'unpaid' # TODO: Perform fulfillment of the line items # TODO: Record/save fulfillment status for this # Checkout Session end end

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_checkout 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 pembayaran
Sisi server

Untuk memicu pemenuhan, buat handler kejadian webhook untuk mendengarkan kejadian pembayaran dan memicu fungsi fulfill_checkout Anda.

Bila seseorang membayar Anda, hal itu akan membuat kejadian checkout.session.completed. 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.

Ruby
require 'sinatra' # Use the secret provided by Stripe CLI for local testing # or your webhook endpoint's secret. endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' || event['type'] == 'checkout.session.async_payment_succeeded' fulfill_checkout(event['data']['object']['id']) end status 200 end

Anda mungkin juga ingin mendengarkan dan menangani kejadian checkout.session.async_payment_failed. 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:

Command Line
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)
  • Tekan tombol Bayar

Bila pembayaran selesai, verifikasi hal berikut:

  • Pada baris perintah Anda, tempat stripe listen berjalan, ini menampilkan kejadian checkout.session.completed yang diteruskan ke server lokal Anda.
  • Log server Anda menunjukkan output yang diharapkan dari fungsi fulfill_checkout Anda.

Buat endpoint webhook

Setelah mencoba secara lokal, siapkan dan jalankan handler kejadian webhook di server Anda. Berikutnya, buat endpoint webhook untuk mengirim kejadian checkout.session.completed ke server Anda, kemudian coba lagi alur Checkout.

Konfigurasikan URL halaman landing
Direkomendasikan

Konfigurasikan Checkout untuk mengirim pelanggan ke halaman di situs web Anda setelah menyelesaikan Checkout. Sertakan placeholder {CHECKOUT_SESSION_ID} 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_url.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Catatan

Bila Anda menyiapkan endpoint webhook untuk mendengarkan kejadian checkout.session.completed dan Anda mengatur success_url, 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.session.completed secepat mungkin.

Perilaku ini tidak didukung untuk endpoint webhook yang terdaftar di akun organisasi. Stripe tidak menunggu endpoint webhook organisasi yang mendengarkan checkout.sessions.completed merespons saat mengalihkan pelanggan Checkout.

Payment Links

Untuk Payment Links yang Anda buat dengan API, atur after_completion.redirect.url.

Command Line
cURL
curl https://api.stripe.com/v1/payment_links \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d "after_completion[type]"=redirect \ --data-urlencode "after_completion[redirect][url]"="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Untuk Payment Links yang Anda buat di Dashboard:

  1. Buka tab Setelah Pembayaran.
  2. Pilih Jangan tampilkan halaman konfirmasi.
  3. Berikan URL ke halaman landing Anda yang menyertakan placeholder {CHECKOUT_SESSION_ID} (misalnya, https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID})

Picu pemenuhan di halaman landing
Direkomendasikan

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:

  1. Bila server menerima permintaan untuk halaman penyambut Checkout, ekstrak identifikasi Sesi Checkout dari URL.
  2. Jalankan fungsi fulfill_checkout Anda dengan identifikasi yang diberikan.
  3. 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.

Apakah halaman ini membantu?
YaTidak
Butuh bantuan? Hubungi Tim CS.
Bergabunglah dengan program akses awal kami.
Lihat log perubahan kami.
Ada pertanyaan? Hubungi Bagian Penjualan.
LLM? Baca llms.txt.
Dijalankan oleh Markdoc