# Migrasikan metode pembayaran ke Dashboard Aktifkan metode pembayaran Checkout yang berbeda melalui Dashboard. # Halaman yang di-hosting > This is a Halaman yang di-hosting for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/dashboard-payment-methods?payment-ui=stripe-hosted. Dengan mengubah integrasi untuk menarik preferensi metode pembayaran Anda dari Dashboard, Stripe menampilkan semua metode pembayaran yang kompatibel kepada pelanggan Anda saat memproses pembayaran tergantung pada mata uang yang dipilih atau pembatasan metode pembayaran seperti jumlah transaksi maksimum. Stripe juga menyajikan metode pembayaran yang paling relevan bagi setiap pelanggan berdasarkan lokasi mereka dan mata uang yang digunakan. Halaman checkout memprioritaskan tampilan metode pembayaran yang diketahui dapat meningkatkan konversi untuk lokasi pelanggan Anda, sementara metode pembayaran berprioritas lebih rendah disembunyikan di bawah menu perluasan. Pelanggan Anda melihat beberapa metode pembayaran yang populer untuk lokasi dan mata uang mereka, tetapi mereka tetap memiliki opsi untuk memilih metode pembayaran yang berbeda dari menu perluasan. ## Perbarui integrasi Anda Untuk integrasi Stripe Checkout yang ada yang menentukan `payment_method_types`, Anda harus menghapus parameter ini untuk memigrasikan preferensi metode pembayaran ke Dashboard. Setelah Anda menghapus parameter dari integrasi, beberapa metode pembayaran diaktifkan secara otomatis termasuk kartu dan dompet digital. Parameter `currency` membatasi metode pembayaran yang dilihat konsumen dalam Sesi Checkout. > Melakukan upgrade pada integrasi awalnya akan menonaktifkan metode pembayaran non-default untuk integrasi Anda, seperti halaman pembayaran bank. Jika Anda menambahkan metode pembayaran ke integrasi Checkout, Anda harus membuka halaman pengaturan metode pembayaran di Dashboard untuk mengaktifkannya kembali. #### Ruby ```ruby Stripe::Checkout::Session.create({ line_items: [ { price_data: { currency: 'eur', product_data: {name: 'T-shirt'}, unit_amount: 2000, }, quantity: 1, }, ], mode: 'payment', success_url: 'https://example.com/success', }) ``` ## Lihat metode pembayaran yang tersedia di Dashboard Lihat [pengaturan metode pembayaran](https://dashboard.stripe.com/settings/payment_methods) untuk melihat metode pembayaran yang saat ini Anda terima. Daftar ini mencakup metode pembayaran yang diaktifkan secara default, seperti kartu. Metode pembayaran ini biayanya sama atau kurang dari kartu dan diselesaikan dengan segera. ### Metode pembayaran Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya. Anda dapat mengaktifkan atau menonaktifkan metode pembayaran individual di [Dashboard Stripe](https://dashboard.stripe.com/settings/payment_methods). Di Checkout, Stripe mengevaluasi mata uang dan batasan, lalu menyajikan metode pembayaran yang didukung secara dinamis kepada pelanggan. Untuk melihat cara metode pembayaran Anda ditampilkan kepada pelanggan, masukkan identifikasi transaksi atau tetapkan jumlah pesanan dan mata uang di Dashboard. Anda dapat mengaktifkan Apple Pay dan Google Pay di [pengaturan metode pembayaran](https://dashboard.stripe.com/settings/payment_methods). Secara default, Apple Pay diaktifkan dan Google Pay dinonaktifkan. Namun, dalam beberapa kasus Stripe memfilternya bahkan saat diaktifkan. Kami memfilter Google Pay jika Anda [mengaktifkan pajak otomatis](https://docs.stripe.com/tax/checkout.md) tanpa mengumpulkan alamat pengiriman. Halaman Checkout yang di-hosting Stripe tidak perlu perubahan integrasi untuk mengaktifkan Apple Pay atau Google Pay. Stripe menangani pembayaran ini dengan cara yang sama seperti pembayaran kartu lainnya. ## Tambahkan atau hapus metode pembayaran pada integrasi Anda Di halaman Dashboard pada pengaturan metode pembayaran, Anda dapat melihat metode pembayaran yang tersedia dan mengaktifkan metode pembayaran baru untuk integrasi Anda. Anda dapat mengaktifkan sejumlah metode pembayaran cukup dengan memilih **Aktifkan**. Namun, sejumlah metode pembayaran memerlukan langkah tambahan untuk mengaktifkannya. Untuk kasus tersebut, Anda akan melihat tombol yang bertuliskan **Siapkan** atau **Tinjau ketentuan**. Untuk mempelajari selengkapnya tentang metode pembayaran mana yang tepat bagi bisnis Anda, lihat [panduan metode pembayaran](https://stripe.com/payments/payment-methods-guide). ## (Direkomendasikan) Tangani metode pembayaran dengan notifikasi tertunda Bergantung pada tipe metode pembayaran yang Anda integrasikan, konfirmasi pembayaran mungkin tertunda 2–14 hari. Jika Anda menyiapkan *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) untuk [secara otomatis memenuhi](https://docs.stripe.com/checkout/fulfillment.md#create-payment-event-handler) pesanan dengan integrasi Checkout, saat menambahkan metode pembayaran dengan notifikasi tertunda pertama, Anda mungkin perlu memperbarui kode. > Langkah ini hanya diperlukan jika Anda berencana menggunakan salah satu metode pembayaran berikut: [Debit Langsung Bacs](https://docs.stripe.com/payments/bacs-debit/accept-a-payment.md), [Transfer Bank](https://docs.stripe.com/payments/bank-transfers/accept-a-payment.md), [Boleto](https://docs.stripe.com/payments/boleto/accept-a-payment.md), [Debit praotorisasi Kanada](https://docs.stripe.com/payments/acss-debit/accept-a-payment.md), [Konbini](https://docs.stripe.com/payments/konbini/accept-a-payment.md), [OXXO](https://docs.stripe.com/payments/oxxo/accept-a-payment.md), [Pay by Bank](https://docs.stripe.com/payments/pay-by-bank/accept-a-payment.md), [Debit Langsung SEPA](https://docs.stripe.com/payments/sepa-debit/accept-a-payment.md), atau [ACH Direct Debit](https://docs.stripe.com/payments/ach-direct-debit/accept-a-payment.md). Saat menerima pembayaran dengan metode pembayaran notifikasi tertunda, dana tidak langsung tersedia. Diperlukan beberapa hari untuk memproses dana sehingga Anda harus menunda *pemenuhan* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) pesanan hingga dana tersedia di akun Anda. Setelah pembayaran berhasil, status *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) pokok berubah dari `processing` menjadi `succeeded`. Anda perlu menangani kejadian Checkout berikut: | Nama Kejadian | Keterangan | Langkah berikutnya | | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Pelanggan berhasil mengotorisasi pembayaran debit dengan menyerahkan formulir Checkout. | Tunggu pembayaran berhasil atau gagal. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Pembayaran pelanggan berhasil. | Penuhi barang atau layanan yang dibeli. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Pembayaran ditolak, atau gagal karena beberapa alasan lainnya. | Hubungi pelanggan melalui email dan minta agar mereka memesan lagi. | Semua kejadian ini menyertakan objek [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions.md). Perbarui handler kejadian Anda untuk memenuhi pesanan: #### Ruby ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' # You can find your endpoint's secret in the output of the `stripe listen` # command you ran earlier 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 case event['type']when 'checkout.session.completed' checkout_session = event['data']['object'] # Save an order in your database, marked as 'awaiting payment' create_order(checkout_session) # Check if the order is already paid (for example, from a card payment) # # A delayed notification payment will have an `unpaid` status, as # you're still waiting for funds to be transferred from the customer's # account. if checkout_session.payment_status == 'paid' fulfill_order(checkout_session) end when 'checkout.session.async_payment_succeeded' checkout_session = event['data']['object'] # Fulfill the purchase... fulfill_order(checkout_session) when 'checkout.session.async_payment_failed' session = event['data']['object'] # Send an email to the customer asking them to retry their order email_customer_about_failed_payment(checkout_session) end status 200 end def fulfill_order(checkout_session) # TODO: fill in with your own logic puts "Fulfilling order for #{checkout_session.inspect}" enddef create_order(checkout_session) # TODO: fill in with your own logic puts "Creating order for #{checkout_session.inspect}" end def email_customer_about_failed_payment(checkout_session) # TODO: fill in with your own logic puts "Emailing customer about payment failure for: #{checkout_session.inspect}" end ``` ### 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. ## Coba integrasi Anda #### Kartu | Nomor kartu | Skenario | Cara mencoba | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | 4242424242424242 | Pembayaran kartu berhasil dan tidak memerlukan autentikasi. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 4000002500003155 | Pembayaran kartu memerlukan *autentikasi* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase). | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 4000000000009995 | Kartu ini ditolak dengan kode penolakan seperti `insufficient_funds`. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 6205500000000000004 | Kartu UnionPay memiliki panjang variabel 13–19 angka. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | #### Dompet | Metode pembayaran | Skenario | Cara mencoba | | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Alipay | Pelanggan Anda berhasil membayar menggunakan metode pembayaran dengan [notifikasi segera](https://docs.stripe.com/payments/payment-methods.md#payment-notification) dan berbasis pengarahan ulang. | Pilih sembarang metode pembayaran berbasis pengarahan ulang, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Selesaikan pembayaran percobaan** di halaman pengarahan ulang. | #### Pengarahan ulang bank | Metode pembayaran | Skenario | Cara mencoba | | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Debit Langsung BECS | Pelanggan Anda berhasil membayar dengan Debit Langsung BECS. | Isi formulir menggunakan nomor akun `900123456` dan BSB `000000`. PaymentIntent yang telah dikonfirmasi awalnya akan berstatus `processing`, kemudian berubah menjadi status `succeeded` setelah 3 menit. | | Debit Langsung BECS | Pembayaran pelanggan Anda gagal dengan kode kesalahan `account_closed`. | Isi formulir menggunakan nomor akun `111111113` dan BSB `000000`. | | Bancontact, EPS, iDEAL, dan Przelewy24 | Pelanggan Anda gagal melakukan autentikasi di halaman pengarahan ulang untuk metode pembayaran dengan notifikasi segera dan berbasis pengarahan ulang. | Pilih sembarang metode pembayaran berbasis pengarahan ulang, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Gagalkan pembayaran percobaan** di halaman pengarahan ulang. | | Pay by Bank | Pelanggan Anda berhasil membayar menggunakan metode pembayaran dengan [notifikasi tertunda](https://docs.stripe.com/payments/payment-methods.md#payment-notification) dan berbasis pengarahan ulang. | Pilih metode pembayaran, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Selesaikan pembayaran percobaan** di halaman pengarahan ulang. | | Pay by Bank | Pelanggan Anda gagal melakukan autentikasi di halaman pengarahan ulang untuk metode pembayaran dengan notifikasi tertunda dan berbasis pengarahan ulang. | Pilih metode pembayaran, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Gagalkan pembayaran percobaan** di halaman pengarahan ulang. | | BLIK | Pembayaran BLIK gagal dalam berbagai cara — kegagalan langsung (misalnya, kode kedaluwarsa atau tidak valid), kesalahan tertunda (bank menolak) atau waktu habis (pelanggan tidak merespons tepat waktu). | Gunakan pola email untuk [menyimulasikan berbagai kegagalan.](https://docs.stripe.com/payments/blik/accept-a-payment.md#simulate-failures) | #### Debit bank | Metode pembayaran | Skenario | Cara mencoba | | ------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Debit Langsung SEPA | Pelanggan Anda berhasil membayar dengan Debit Langsung SEPA. | Isilah formulir menggunakan nomor akun `AT321904300235473204`. Transisi PaymentIntent yang telah dikonfirmasi awalnya menjadi sedang diproses, kemudian akan berubah menjadi status berhasil setelah tiga menit kemudian. | | Debit Langsung SEPA | Transisi status maksud pembayaran pelanggan dari `processing` menjadi `requires_payment_method`. | Isilah formulir menggunakan nomor akun `AT861904300235473202`. | #### Voucher | Metode pembayaran | Skenario | Cara mencoba | | ----------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Boleto, OXXO | Pelanggan Anda membayar dengan voucher OXXO atau Boleto. | Pilih Boleto atau OXXO sebagai metode pembayaran dan serahkan pembayaran. Tutup dialog setelah muncul. | Lihat [Pengujian](https://docs.stripe.com/testing.md) untuk mendapatkan informasi tambahan untuk menguji integrasi Anda. # Halaman tersemat > This is a Halaman tersemat for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/dashboard-payment-methods?payment-ui=embedded-form. Dengan mengubah integrasi untuk menarik preferensi metode pembayaran Anda dari Dashboard, Stripe menampilkan semua metode pembayaran yang kompatibel kepada pelanggan Anda saat memproses pembayaran tergantung pada mata uang yang dipilih atau pembatasan metode pembayaran seperti jumlah transaksi maksimum. Stripe juga menyajikan metode pembayaran yang paling relevan bagi setiap pelanggan berdasarkan lokasi mereka dan mata uang yang digunakan. Halaman checkout memprioritaskan tampilan metode pembayaran yang diketahui dapat meningkatkan konversi untuk lokasi pelanggan Anda, sementara metode pembayaran berprioritas lebih rendah disembunyikan di bawah menu perluasan. Pelanggan Anda melihat beberapa metode pembayaran yang populer untuk lokasi dan mata uang mereka, tetapi mereka tetap memiliki opsi untuk memilih metode pembayaran yang berbeda dari menu perluasan. ## Perbarui integrasi Anda Untuk integrasi Stripe Checkout yang ada yang menentukan `payment_method_types`, Anda harus menghapus parameter ini untuk memigrasikan preferensi metode pembayaran ke Dashboard. Setelah Anda menghapus parameter dari integrasi, beberapa metode pembayaran diaktifkan secara otomatis termasuk kartu dan dompet digital. Parameter `currency` membatasi metode pembayaran yang dilihat konsumen dalam Sesi Checkout. > Melakukan upgrade pada integrasi awalnya akan menonaktifkan metode pembayaran non-default untuk integrasi Anda, seperti halaman pembayaran bank. Jika Anda menambahkan metode pembayaran ke integrasi Checkout, Anda harus membuka halaman pengaturan metode pembayaran di Dashboard untuk mengaktifkannya kembali. #### Ruby ```ruby Stripe::Checkout::Session.create({ line_items: [ { price_data: { currency: 'eur', product_data: {name: 'T-shirt'}, unit_amount: 2000, }, quantity: 1, }, ], mode: 'payment', return_url: 'https://example.com/return', ui_mode: 'embedded_page', }) ``` ## Lihat metode pembayaran yang tersedia di Dashboard Lihat [pengaturan metode pembayaran](https://dashboard.stripe.com/settings/payment_methods) untuk melihat metode pembayaran yang saat ini Anda terima. Daftar ini mencakup metode pembayaran yang diaktifkan secara default, seperti kartu. Metode pembayaran ini biayanya sama atau kurang dari kartu dan diselesaikan dengan segera. ### Metode pembayaran Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya. Anda dapat mengaktifkan atau menonaktifkan metode pembayaran individual di [Dashboard Stripe](https://dashboard.stripe.com/settings/payment_methods). Di Checkout, Stripe mengevaluasi mata uang dan batasan, lalu menyajikan metode pembayaran yang didukung secara dinamis kepada pelanggan. Untuk melihat cara metode pembayaran Anda ditampilkan kepada pelanggan, masukkan identifikasi transaksi atau tetapkan jumlah pesanan dan mata uang di Dashboard. Anda dapat mengaktifkan Apple Pay dan Google Pay di [pengaturan metode pembayaran](https://dashboard.stripe.com/settings/payment_methods). Secara default, Apple Pay diaktifkan dan Google Pay dinonaktifkan. Namun, dalam beberapa kasus Stripe memfilternya bahkan saat diaktifkan. Kami memfilter Google Pay jika Anda [mengaktifkan pajak otomatis](https://docs.stripe.com/tax/checkout.md) tanpa mengumpulkan alamat pengiriman. Halaman Checkout yang di-hosting Stripe tidak perlu perubahan integrasi untuk mengaktifkan Apple Pay atau Google Pay. Stripe menangani pembayaran ini dengan cara yang sama seperti pembayaran kartu lainnya. ## Tambahkan atau hapus metode pembayaran pada integrasi Anda Di halaman Dashboard pada pengaturan metode pembayaran, Anda dapat melihat metode pembayaran yang tersedia dan mengaktifkan metode pembayaran baru untuk integrasi Anda. Anda dapat mengaktifkan sejumlah metode pembayaran cukup dengan memilih **Aktifkan**. Namun, sejumlah metode pembayaran memerlukan langkah tambahan untuk mengaktifkannya. Untuk kasus tersebut, Anda akan melihat tombol yang bertuliskan **Siapkan** atau **Tinjau ketentuan**. Untuk mempelajari selengkapnya tentang metode pembayaran mana yang tepat bagi bisnis Anda, lihat [panduan metode pembayaran](https://stripe.com/payments/payment-methods-guide). ## (Direkomendasikan) Tangani metode pembayaran dengan notifikasi tertunda Bergantung pada tipe metode pembayaran yang Anda integrasikan, konfirmasi pembayaran mungkin tertunda 2–14 hari. Jika Anda menyiapkan *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) untuk [secara otomatis memenuhi](https://docs.stripe.com/checkout/fulfillment.md#create-payment-event-handler) pesanan dengan integrasi Checkout, saat menambahkan metode pembayaran dengan notifikasi tertunda pertama, Anda mungkin perlu memperbarui kode. > Langkah ini hanya diperlukan jika Anda berencana menggunakan salah satu metode pembayaran berikut: [Debit Langsung Bacs](https://docs.stripe.com/payments/bacs-debit/accept-a-payment.md), [Transfer Bank](https://docs.stripe.com/payments/bank-transfers/accept-a-payment.md), [Boleto](https://docs.stripe.com/payments/boleto/accept-a-payment.md), [Debit praotorisasi Kanada](https://docs.stripe.com/payments/acss-debit/accept-a-payment.md), [Konbini](https://docs.stripe.com/payments/konbini/accept-a-payment.md), [OXXO](https://docs.stripe.com/payments/oxxo/accept-a-payment.md), [Pay by Bank](https://docs.stripe.com/payments/pay-by-bank/accept-a-payment.md), [Debit Langsung SEPA](https://docs.stripe.com/payments/sepa-debit/accept-a-payment.md), atau [ACH Direct Debit](https://docs.stripe.com/payments/ach-direct-debit/accept-a-payment.md). Saat menerima pembayaran dengan metode pembayaran notifikasi tertunda, dana tidak langsung tersedia. Diperlukan beberapa hari untuk memproses dana sehingga Anda harus menunda *pemenuhan* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) pesanan hingga dana tersedia di akun Anda. Setelah pembayaran berhasil, status *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) pokok berubah dari `processing` menjadi `succeeded`. Anda perlu menangani kejadian Checkout berikut: | Nama Kejadian | Keterangan | Langkah berikutnya | | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) | Pelanggan berhasil mengotorisasi pembayaran debit dengan menyerahkan formulir Checkout. | Tunggu pembayaran berhasil atau gagal. | | [checkout.session.async_payment_succeeded](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_succeeded) | Pembayaran pelanggan berhasil. | Penuhi barang atau layanan yang dibeli. | | [checkout.session.async_payment_failed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.async_payment_failed) | Pembayaran ditolak, atau gagal karena beberapa alasan lainnya. | Hubungi pelanggan melalui email dan minta agar mereka memesan lagi. | Semua kejadian ini menyertakan objek [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions.md). Perbarui handler kejadian Anda untuk memenuhi pesanan: #### Ruby ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' # You can find your endpoint's secret in the output of the `stripe listen` # command you ran earlier 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 case event['type']when 'checkout.session.completed' checkout_session = event['data']['object'] # Save an order in your database, marked as 'awaiting payment' create_order(checkout_session) # Check if the order is already paid (for example, from a card payment) # # A delayed notification payment will have an `unpaid` status, as # you're still waiting for funds to be transferred from the customer's # account. if checkout_session.payment_status == 'paid' fulfill_order(checkout_session) end when 'checkout.session.async_payment_succeeded' checkout_session = event['data']['object'] # Fulfill the purchase... fulfill_order(checkout_session) when 'checkout.session.async_payment_failed' session = event['data']['object'] # Send an email to the customer asking them to retry their order email_customer_about_failed_payment(checkout_session) end status 200 end def fulfill_order(checkout_session) # TODO: fill in with your own logic puts "Fulfilling order for #{checkout_session.inspect}" enddef create_order(checkout_session) # TODO: fill in with your own logic puts "Creating order for #{checkout_session.inspect}" end def email_customer_about_failed_payment(checkout_session) # TODO: fill in with your own logic puts "Emailing customer about payment failure for: #{checkout_session.inspect}" end ``` ### 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. ## Coba integrasi Anda #### Kartu | Nomor kartu | Skenario | Cara mencoba | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | 4242424242424242 | Pembayaran kartu berhasil dan tidak memerlukan autentikasi. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 4000002500003155 | Pembayaran kartu memerlukan *autentikasi* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase). | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 4000000000009995 | Kartu ini ditolak dengan kode penolakan seperti `insufficient_funds`. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | | 6205500000000000004 | Kartu UnionPay memiliki panjang variabel 13–19 angka. | Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos. | #### Dompet | Metode pembayaran | Skenario | Cara mencoba | | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Alipay | Pelanggan Anda berhasil membayar menggunakan metode pembayaran dengan [notifikasi segera](https://docs.stripe.com/payments/payment-methods.md#payment-notification) dan berbasis pengarahan ulang. | Pilih sembarang metode pembayaran berbasis pengarahan ulang, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Selesaikan pembayaran percobaan** di halaman pengarahan ulang. | #### Pengarahan ulang bank | Metode pembayaran | Skenario | Cara mencoba | | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Debit Langsung BECS | Pelanggan Anda berhasil membayar dengan Debit Langsung BECS. | Isi formulir menggunakan nomor akun `900123456` dan BSB `000000`. PaymentIntent yang telah dikonfirmasi awalnya akan berstatus `processing`, kemudian berubah menjadi status `succeeded` setelah 3 menit. | | Debit Langsung BECS | Pembayaran pelanggan Anda gagal dengan kode kesalahan `account_closed`. | Isi formulir menggunakan nomor akun `111111113` dan BSB `000000`. | | Bancontact, EPS, iDEAL, dan Przelewy24 | Pelanggan Anda gagal melakukan autentikasi di halaman pengarahan ulang untuk metode pembayaran dengan notifikasi segera dan berbasis pengarahan ulang. | Pilih sembarang metode pembayaran berbasis pengarahan ulang, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Gagalkan pembayaran percobaan** di halaman pengarahan ulang. | | Pay by Bank | Pelanggan Anda berhasil membayar menggunakan metode pembayaran dengan [notifikasi tertunda](https://docs.stripe.com/payments/payment-methods.md#payment-notification) dan berbasis pengarahan ulang. | Pilih metode pembayaran, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Selesaikan pembayaran percobaan** di halaman pengarahan ulang. | | Pay by Bank | Pelanggan Anda gagal melakukan autentikasi di halaman pengarahan ulang untuk metode pembayaran dengan notifikasi tertunda dan berbasis pengarahan ulang. | Pilih metode pembayaran, isilah detail yang diperlukan, dan konfirmasikan pembayaran. Kemudian klik **Gagalkan pembayaran percobaan** di halaman pengarahan ulang. | | BLIK | Pembayaran BLIK gagal dalam berbagai cara — kegagalan langsung (misalnya, kode kedaluwarsa atau tidak valid), kesalahan tertunda (bank menolak) atau waktu habis (pelanggan tidak merespons tepat waktu). | Gunakan pola email untuk [menyimulasikan berbagai kegagalan.](https://docs.stripe.com/payments/blik/accept-a-payment.md#simulate-failures) | #### Debit bank | Metode pembayaran | Skenario | Cara mencoba | | ------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Debit Langsung SEPA | Pelanggan Anda berhasil membayar dengan Debit Langsung SEPA. | Isilah formulir menggunakan nomor akun `AT321904300235473204`. Transisi PaymentIntent yang telah dikonfirmasi awalnya menjadi sedang diproses, kemudian akan berubah menjadi status berhasil setelah tiga menit kemudian. | | Debit Langsung SEPA | Transisi status maksud pembayaran pelanggan dari `processing` menjadi `requires_payment_method`. | Isilah formulir menggunakan nomor akun `AT861904300235473202`. | #### Voucher | Metode pembayaran | Skenario | Cara mencoba | | ----------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Boleto, OXXO | Pelanggan Anda membayar dengan voucher OXXO atau Boleto. | Pilih Boleto atau OXXO sebagai metode pembayaran dan serahkan pembayaran. Tutup dialog setelah muncul. | Lihat [Pengujian](https://docs.stripe.com/testing.md) untuk mendapatkan informasi tambahan untuk menguji integrasi Anda.