Terima pembayaran
Terima pembayaran dengan aman secara online.
Buat formulir pembayaran atau gunakan halaman checkout yang telah dibuat sebelumnya untuk mulai menerima pembayaran online.
Alihkan ke halaman pembayaran yang di-hosting Stripe menggunakan Stripe Checkout. Lihat cara membandingkan integrasi ini dengan tipe integrasi Stripe lainnya.
Upaya integrasi
Tipe integrasi
Alihkan ke halaman pembayaran yang di-hosting Stripe
Penyesuaian UI
Pertama, mendaftarlah untuk akun Stripe.
Gunakan pustaka resmi kami untuk mengakses API Stripe dari aplikasi Anda:
Alihkan pelanggan Anda ke Stripe CheckoutSisi clientSisi server
Tambahkan tombol checkout ke situs web Anda yang memanggil endpoint sisi server untuk membuat Sesi Checkout.
Anda juga dapat membuat Sesi Checkout untuk pelanggan yang ada, sehingga memungkinkan Anda otomatis mengisi bidang Checkout dengan informasi kontak yang diketahui dan menyatukan riwayat pembelian Anda untuk pelanggan tersebut.
<html> <head> <title>Buy cool new product</title> </head> <body> <!-- Use action="/create-checkout-session.php" if your server is PHP based. --> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Sesi Checkout adalah representasi terprogram dari apa yang dilihat pelanggan Anda saat mereka dialihkan ke formulir pembayaran. Anda dapat mengonfigurasinya dengan opsi seperti:
- Mata anggaran untuk di-charge
- Mata uang untuk digunakan
Anda harus mengisi success_
dengan nilai URL halaman di situs web Anda yang akan dikembalikan oleh Checkout setelah pelanggan menyelesaikan pembayaran. Anda juga dapat memberikan nilai cancel_
di halaman situs web Anda yang akan dikembalikan oleh Checkout jika pelanggan menghentikan proses pembayaran sebelum selesai.
Catatan
Sesi Checkout akan kedaluwarsa dalam waktu 24 jam setelah pembuatan secara default.
Setelah membuat Sesi Checkout, alihkan pelanggan Anda ke URL yang dikembalikan di respons.
Metode pembayaran
Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya. Anda dapat mengaktifkan atau menonaktifkan metode pembayaran individual di Dashboard Stripe. 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. 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 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.
Konfirmasikan endpoint Anda
Konfirmasi endpoint Anda dapat diakses dengan memulai server web (misalnya, localhost:4242
) dan menjalankan perintah berikut:
curl -X POST -is "http://localhost:4242/create-checkout-session" -d ""
Anda akan melihat respons di terminal seperti ini:
HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ...
Mencoba
Anda sekarang telah memiliki tombol checkout yang mengalihkan pelanggan ke Stripe Checkout.
- Klik tombol checkout.
- Anda akan dialihkan ke formulir pembayaran Stripe Checkout.
Jika integrasi Anda tidak berhasil:
- Buka tab Network di alat pengembang browser Anda.
- Klik tombol checkout dan konfirmasikan dengan mengirim permintaan XHR ke endpoint sisi server Anda (
POST /create-checkout-session
). - Verifikasi bahwa permintaan mengembalikan status 200.
- Gunakan
console.
di dalam listener klik tombol Anda untuk mengonfirmasi bahwa data yang benar dikembalikan.log(session)
Tampilkan halaman berhasilSisi clientSisi server
Pelanggan Anda perlu melihat halaman berhasil setelah mereka berhasil menyerahkan formulir pembayaran. Hosting halaman berhasil ini di situs Anda.
Buat halaman berhasil minimal:
<html> <head><title>Thanks for your order!</title></head> <body> <h1>Thanks for your order!</h1> <p> We appreciate your business! If you have any questions, please email <a href="mailto:orders@example.com">orders@example.com</a>. </p> </body> </html>
Berikutnya, perbarui endpoint pembuatan Sesi Checkout untuk menggunakan halaman baru ini:
Catatan
Jika Anda ingin menyesuaikan halaman berhasil, baca panduan halaman berhasil custom.
Mencoba
- Klik tombol checkout Anda.
- Isikan detail pembayaran dengan informasi kartu percobaan:
- Masukkan
4242 4242 4242 4242
sebagai nomor kartu. - Masukkan tanggal mendatang untuk tanggal kedaluwarsa kartu.
- Masukkan nomor 3 angka untuk CVC.
- Masukkan kode pos tagihan.
- Masukkan
- Klik Bayar.
- Anda akan dialihkan ke halaman berhasil yang baru.
Berikutnya, temukan pembayaran baru di Dashboard Stripe. Pembayaran yang berhasil akan muncul dalam daftar pembayaran Dashboard. Saat mengeklik pembayaran, Anda akan dibawa ke halaman detail pembayaran. Bagian Ringkasan checkout berisi informasi penagihan dan daftar item yang dibeli, yang dapat Anda gunakan untuk memenuhi pesanan secara manual.
Tangani kejadian pascapembayaran
Stripe mengirim kejadian checkout.session.completed bila pelanggan menyelesaikan pembayaran Sesi Checkout. Gunakan alat webhook Dashboard atau ikuti panduan webhook untuk menerima dan menangani kejadian ini, yang mungkin memicu Anda untuk:
- Kirim email konfirmasi pesanan ke pelanggan Anda.
- Catat penjualan di database.
- Mulai alur kerja pengiriman.
Dengarkan kejadian ini daripada menunggu pelanggan dialihkan kembali ke situs web Anda. Memicu pemenuhan hanya dari halaman penyambut Checkout Anda tidak dapat diandalkan. Penyiapan integrasi untuk mendengarkan kejadian asinkron memungkinkan Anda menyetujui berbagai tipe metode pembayaran dengan satu integrasi tunggal.
Pelajari selengkapnya di panduan pemenuhan untuk Checkout kami.
Tangani kejadian berikut ketika menagih pembayaran dengan Checkout:
Kejadian | Keterangan | Tindakan |
---|---|---|
checkout.session.completed | Dikirim bila pelanggan berhasil menyelesaikan Sesi Checkout. | Kirimi pelanggan konfirmasi pesanan dan penuhi pesanan mereka. |
checkout.session.async_payment_succeeded | Dikirim bila pembayaran yang dilakukan dengan metode pembayaran tertunda, seperti utang ACH langsung, berhasil. | Kirimi pelanggan konfirmasi pesanan dan penuhi pesanan mereka. |
checkout.session.async_payment_failed | Dikirim bila pembayaran yang dilakukan dengan metode pembayaran tertunda, seperti utang langsung ACH, gagal. | Beri tahu pelanggan tentang kegagalan tersebut dan bawa mereka kembali ke sesi untuk mencoba pembayaran lagi. |
Coba integrasi Anda
Untuk mencoba integrasi formulir pembayaran yang di-hosting Stripe Anda:
- Buat Sesi Checkout.
- Isilah detail pembayaran dengan metode dari tabel berikut.
- Masukkan tanggal mendatang untuk tanggal kedaluwarsa kartu.
- Masukkan nomor 3 angka untuk CVC.
- Masukkan kode pos tagihan.
- Klik Bayar. Anda akan dialihkan ke
success_
.url - Masuk ke Dashboard dan cari pembayaran pada halaman Transaksi. Jika pembayaran berhasil, Anda akan melihatnya dalam daftar tersebut.
- Klik pembayaran Anda untuk melihat detail selengkapnya, seperti ringkasan Checkout dengan informasi tagihan dan daftar barang yang dibeli. Anda dapat menggunakan informasi ini untuk memenuhi pesanan.
Pelajari selengkapnya tentang percobaan integrasi Anda.
Lihat Pengujian untuk mendapatkan informasi tambahan untuk menguji integrasi Anda.
Kartu percobaan
Nomor | Keterangan |
---|---|
Berhasil dan segera memproses pembayaran. | |
Memerlukan autentikasi 3D Secure 2 agar pembayaran berhasil. | |
Selalu gagal dengan kode tolakan insufficient_ . |
OpsionalBuat produk dan harga
Sebelum membuat Sesi Checkout, Anda dapat membuat Produk dan Harga terlebih dahulu. Gunakan produk untuk mewakili barang fisik atau tingkat layanan yang berbeda, dan Harga untuk mewakili harga setiap produk.
Misalnya, Anda dapat membuat kaus pendek sebagai produk dengan harga 20 USD. Hal ini memungkinkan Anda memperbarui dan menambahkan harga tanpa perlu mengubah detail produk pokok. Anda dapat membuat produk dan harga dengan Dashboard Stripe atau API. Pelajari selengkapnya tentang cara kerja produk dan harga.
Setiap harga yang Anda buat memiliki identifikasi. Saat Anda membuat Sesi Checkout, sebutkan identifikasi harga dan kuantitasnya. Jika Anda menjual dalam berbagai mata uang, buat Harga Anda multimata uang. Checkout secara otomatis menentukan mata uang lokal pelanggan dan menyajikan mata uang itu jika Harga mendukungnya.
OpsionalIsi dahulu data pelangganSisi server
Jika Anda sudah mengumpulkan email pelanggan dan ingin otomatis mengisinya di Sesi Checkout untuk mereka, teruskan customer_email ketika membuat Sesi Checkout.
OpsionalSimpan detail metode pembayaranSisi server
Secara default, metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan Checkout tidak tersedia untuk digunakan di masa mendatang.
Simpan metode pembayaran untuk men-charge di luar sesi
Anda dapat mengatur Checkout untuk menyimpan metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan meneruskan argumen payment_intent_data.setup_future_usage. Ini berguna jika Anda perlu mencatat metode pembayaran secara on-file untuk digunakan sebagai biaya di masa mendatang, seperti biaya pembatalan atau biaya ketidakhadiran.
Jika Anda menggunakan Checkout dalam mode subscription
, Stripe akan secara otomatis menyimpan metode pembayaran untuk di-charge di pembayaran berikutnya. Metode pembayaran kartu yang disimpan untuk pelanggan yang menggunakan mode setup_
atau subscription
tidak akan muncul untuk pembelian kembali di Checkout (selengkapnya di bawah). Kami menyarankan untuk menggunakan teks custom untuk menautkan ke ketentuan yang relevan terkait penggunaan informasi pembayaran yang disimpan.
Peringatan
Hukum privasi global sangat rumit dan bervariasi. Kami merekomendasikan Anda untuk menghubungi tim hukum dan privasi sebelum mengimplementasikan setup_future_usage karena hal ini dapat berimplikasi pada kerangka kerja kepatuhan privasi yang sudah ada. Lihat panduan yang dikeluarkan oleh European Protection Board untuk mempelajari selengkapnya tentang menyimpan detail pembayaran.
Simpan metode pembayaran untuk mengisinya terlebih dahulu di Checkout
Secara default, Checkout menggunakan Link untuk memberikan pilihan kepada pelanggan Anda untuk menyimpan dan menggunakan kembali informasi pembayaran dengan aman. Jika Anda lebih suka mengelola metode pembayaran sendiri, gunakan saved_payment_method_options.payment_method_save ketika membuat Sesi Checkout agar pelanggan dapat menyimpan metode pembayarannya untuk pembelian di masa mendatang di Checkout.
Meneruskan parameter ini dalam mode pembayaran atau langganan menampilkan kotak centang opsional agar pelanggan dapat secara eksplisit menyimpan metode pembayarannya untuk pembelian mendatang. Bila pelanggan mencentang kotak ini, Checkout akan menyimpan metode pembayaran dengan allow_redisplay: always. Checkout menggunakan parameter ini untuk menentukan jika metode pembayaran dapat diisikan terlebih dahulu pada pembelian mendatang. Ketika menggunakan saved_
, Anda tidak perlu meneruskan setup_
untuk menyimpan metode pembayaran.
Penggunaan saved_payment_method_options.payment_method_save memerlukan Customer
. Untuk menyimpan pelanggan baru, atur customer_creation Sesi Checkout ke always
. Jika tidak, sesi tidak akan menyimpan pelanggan atau metode pembayaran.
Jika payment_
tidak diteruskan atau jika pelanggan tidak setuju untuk menyimpan metode pembayaran, Checkout masih menyimpan metode pembayaran yang dibuat dalam mode subscription
atau menggunakan setup_
. Metode pembayaran ini memiliki nilai allow_
limited
, yang mencegahnya diisi terlebih dahulu untuk pembelian kembali serta memungkinkan Anda mematuhi peraturan jaringan kartu dan peraturan proteksi data. Pelajari cara mengubah perilaku default yang diaktifkan oleh mode ini dan cara mengubah atau mengesampingkan perilaku allow_
.
Catatan
Anda dapat menggunakan Checkout untuk menyimpan kartu dan metode pembayaran lain untuk men-charge di luar sesi, tetapi Checkout hanya mengisikan kartu tersimpan secara otomatis. Pelajari cara mengisikan otomatis kartu tersimpan. Untuk menyimpan metode pembayaran tanpa pembayaran awal, gunakan Checkout dalam mode penyiapan.
Izinkan pelanggan menghapus metode pembayaran tersimpan
Untuk mengizinkan pelanggan Anda menghapus metode pembayaran tersimpan sehingga tidak muncul kembali bagi pembayaran mendatang, gunakan saved_payment_method_options.payment_method_remove ketika membuat Sesi Checkout.
Pelanggan tidak dapat menghapus metode pembayaran jika terikat dengan langganan aktif dan pelanggan tidak memiliki metode pembayaran default yang tersimpan untuk pembayaran langganan serta invoice.
OpsionalPisahkan otorisasi dan penarikanSisi server
Stripe mendukung pembayaran kartu dua langkah sehingga Anda bisa mengotorisasi kartu terlebih dahulu, lalu mengambil dana di kemudian hari. Ketika Stripe mengotorisasi pembayaran, penerbit kartu menjamin dana dan menahan jumlah pembayaran di kartu pelanggan. Anda kemudian memiliki waktu tertentu untuk menangkap dana, tergantung pada kartunya). Jika Anda tidak menangkap pembayaran sebelum otorisasi berakhir, pembayaran akan dibatalkan dan penerbit akan melepaskan dana yang ditahan.
Memisahkan otorisasi dan penarikan berguna jika Anda perlu mengambil tindakan tambahan antara mengonfirmasi bahwa pelanggan dapat membayar dan menagih pembayaran mereka. Misalnya, jika menjual item dengan stok terbatas, Anda mungkin perlu mengonfirmasi bahwa item yang dibeli oleh pelanggan menggunakan Checkout masih tersedia sebelum menarik pembayaran mereka dan memenuhi pembelian. Lakukan hal ini menggunakan alur kerja berikut:
- Konfirmasikan bahwa Stripe mengotorisasi metode pembayaran pelanggan.
- Periksa sistem manajemen inventaris Anda untuk mengonfirmasikan bahwa item masih tersedia.
- Perbarui sistem manajemen inventaris Anda untuk menandai bahwa pelanggan telah membeli item.
- Tarik pembayaran pelanggan.
- Informasikan pelanggan Anda bila pembelian mereka berhasil di halaman konfirmasi.
Untuk menunjukkan bahwa Anda ingin memisahkan otorisasi dan penarikan, Anda harus mengatur nilai payment_intent_data.capture_method ke manual
ketika membuat Sesi Checkout. Ini menginstruksikan Stripe agar hanya mengotorisasi jumlah pada kartu pelanggan.
Untuk menarik pembayaran yang belum ditarik, Anda dapat menggunakan endpoint Dashboard atau penarikan. Menarik pembayaran secara terprogram memerlukan akses ke PaymentIntent yang dibuat selama Sesi Checkout, yang bisa Anda dapatkan dari objek Session.
OpsionalManajemen akun pelangganTidak ada kode
Biarkan pelanggan mengelola akunnya sendiri dengan membagikan tautan ke portal pelanggan Anda. Portal pelanggan memungkinkan pelanggan masuk dengan email mereka untuk mengelola langganan, memperbarui metode pembayaran, dan lain-lain.