Simpan metode pembayaran pelanggan bila mereka menggunakannya untuk pembayaran
Pelajari cara menyimpan metode pembayaran pelanggan bila Anda mengonfirmasikan PaymentIntent atau Sesi Checkout.
Catatan
Checkout Sessions API juga mendukung penyimpanan metode pembayaran bila pelanggan menggunakannya untuk pembayaran. Untuk mempelajari selengkapnya, lihat panduan Checkout Sessions API kami.
Gunakan Payment Intents API untuk menyimpan detail pembayaran dari pembelian. Ada beberapa contoh penggunaan:
- Charge pelanggan untuk pesanan e-commerce dan menyimpan detailnya untuk pembelian di masa mendatang.
- Memulai pembayaran pertama dari serangkaian pembayaran rutin.
- Charge deposit dan simpan detailnya untuk menagih jumlah penuh nanti.
Transaksi dengan kartu fisik
Transaksi dengan kartu fisik, seperti pembayaran melalui Stripe Terminal, menggunakan proses yang berbeda untuk menyimpan metode pembayaran. Untuk detailnya, lihat dokumentasi Terminal.
Kepatuhan
Anda bertanggung jawab atas kepatuhan Anda terhadap semua hukum, peraturan, dan aturan jaringan yang berlaku saat menyimpan detail pembayaran pelanggan. Persyaratan ini umumnya berlaku jika Anda ingin menyimpan metode pembayaran pelanggan untuk digunakan di masa mendatang, seperti menampilkan metode pembayaran pelanggan dalam alur checkout untuk pembelian di masa mendatang atau men-charge saat mereka tidak aktif menggunakan situs web atau aplikasi Anda. Tambahkan ketentuan di situs web atau aplikasi Anda yang menyatakan rencana Anda menyimpan detail metode pembayaran dan mengizinkan pelanggan untuk ikut serta.
Ketika menyimpan metode pembayaran, Anda hanya dapat menggunakannya untuk penggunaan spesifik yang telah Anda cantumkan dalam ketentuan. Untuk men-charge metode pembayaran saat pelanggan offline dan menyimpannya sebagai opsi untuk pembelian di masa mendatang, pastikan Anda secara eksplisit mendapatkan persetujuan dari pelanggan untuk penggunaan spesifik ini. Misalnya, sertakan kotak centang “Simpan metode pembayaran saya untuk penggunaan di masa mendatang” untuk mendapatkan persetujuan.
Untuk men-charge mereka saat offline, pastikan ketentuan Anda mencakup hal-hal berikut:
- Persetujuan pelanggan untuk melakukan pembayaran atau serangkaian pembayaran atas nama mereka untuk transaksi tertentu.
- Waktu dan frekuensi pembayaran yang diantisipasi (misalnya, jika charge untuk angsuran terjadwal, pembayaran langganan, atau penambahan saldo tidak terjadwal).
- Cara Anda menentukan jumlah pembayaran.
- Kebijakan pembatalan Anda, jika metode pembayarannya untuk layanan langganan.
Pastikan Anda menyimpan catatan persetujuan tertulis dari pelanggan atas ketentuan ini.
Peringatan
Peraturan SCA mengharuskan Anda melakukan autentikasi pelanggan di muka jika Anda bermaksud menagih pembayaran darinya lagi di masa mendatang. Bank pemegang kartu dapat menolak pembayaran mendatang dan meminta autentikasi tambahan jika dari semula pelanggan tidak pernah melakukan autentikasi.
Siapkan StripeSisi server
Pertama, mendaftarlah untuk akun Stripe.
Gunakan pustaka resmi kami untuk mengakses API Stripe dari aplikasi Anda:
Buat PelangganSisi server
Untuk menyiapkan kartu bagi pembayaran mendatang, Anda harus melampirkannya ke Pelanggan. Buat objek Customer bila pelanggan membuat akun pada bisnis Anda. Objek Customer memungkinkan penggunaan kembali metode pembayaran dan pelacakan ke beberapa pembayaran sekaligus.
Pembuatan yang berhasil mengembalikan objek Customer. Anda dapat memeriksa objek untuk id
pelanggan dan menyimpan nilai dalam database Anda untuk pengambilan nanti.
Anda dapat menemukan pelanggan ini di halaman Pelanggan di Dashboard.
Aktifkan metode pembayaran
Lihat pengaturan metode pembayaran dan aktifkan metode pembayaran yang ingin Anda dukung. Anda membutuhkan setidaknya satu metode pembayaran yang diaktifkan untuk membuat PaymentIntent.
Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya yang dapat membantu menjangkau lebih banyak pelanggan, tetapi sebaiknya aktifkan metode pembayaran tambahan yang relevan untuk bisnis dan pelanggan Anda. Lihat Dukungan metode pembayaran untuk dukungan produk dan metode pembayaran, dan halaman skema biaya kami untuk mengetahui biayanya.
Buat pembayaranSisi server
Catatan
Jika Anda ingin merender Payment Element tanpa terlebih dahulu membuat PaymentIntent, lihat Kumpulkan detail pembayaran sebelum membuat Intent.
Kumpulkan detail pembayaranSisi client
Kumpulkan detail pembayaran pada client dengan Payment Element. Payment Element adalah komponen UI siap-rakit yang menyederhanakan pengumpulan detail pembayaran untuk berbagai metode pembayaran.
Payment Element berisi iframe yang mengirimkan informasi pembayaran dengan aman ke Stripe melalui koneksi HTTPS. Hindari penempatan Payment Element dalam iframe lain karena sejumlah metode pembayaran memerlukan pengalihan ke halaman lain untuk konfirmasi pembayaran.
Jika Anda memilih untuk menggunakan iframe dan ingin menerima Apple Pay atau Google Pay, iframe tersebut harus memiliki atribut allow yang diatur sama dengan "payment *"
.
Alamat halaman checkout harus dimulai dengan https://
bukan http://
agar integrasi Anda berfungsi. Anda dapat mencoba integrasi tanpa menggunakan HTTPS, tapi ingatlah untuk mengaktifkannya bila sudah siap menerima pembayaran live.
Payment Element menampilkan formulir dinamis yang memungkinkan pelanggan memilih metode pembayaran. Bagi masing-masing metode pembayaran, formulir akan secara otomatis meminta pelanggan untuk mengisi seluruh detail pembayaran yang diperlukan.
Sesuaikan penampilan
Sesuaikan Payment Element agar sejalan dengan desain situs Anda dengan meneruskan objek penampilan ke dalam options
ketika membuat penyedia Elements
.
Kumpulkan alamat
Secara default, Payment Element hanya mengumpulkan detail alamat tagihan yang diperlukan. Untuk mengumpulkan alamat tagihan lengkap pelanggan (misalnya, untuk menghitung pajak barang dan layanan digital) atau alamat pengiriman, gunakan Address Element.
Minta token merchant Apple Pay
Jika Anda telah melakukan konfigurasi integrasi untuk menerima pembayaran Apple Pay, sebaiknya konfigurasikan antarmuka Apple Pay untuk menghasilkan token merchant agar dapat mengaktifkan transaksi yang diprakarsai merchant (MIT). Minta jenis token merchant yang relevan di Payment Element.
Serahkan pembayaran ke StripeSisi client
Gunakan stripe.confirmPayment untuk menyelesaikan pembayaran menggunakan detail dari Payment Element. Berikan return_url ke fungsi ini untuk menunjukkan ke mana Stripe harus mengalihkan pengguna setelah menyelesaikan pembayaran. Pengguna Anda mungkin pertama kali diarahkan ulang ke situs perantara, seperti halaman otorisasi bank, sebelum diarahkan ulang ke return_
. Pembayaran kartu segera dialihkan ke return_
bila pembayaran berhasil.
Jika tidak ingin dialihkan untuk pembayaran kartu setelah pembayaran selesai, Anda dapat mengatur pengalihan ke if_
. Ini hanya mengalihkan pelanggan yang memproses pembayaran dengan metode pembayaran berbasis pengalihan.
Catatan
stripe.
mungkin perlu waktu beberapa detik untuk menyelesaikan. Sambil menunggu, nonaktifkan formulir Anda agar tidak diserahkan kembali dan tampilkan indikator menunggu seperti spinner. Jika Anda menerima kesalahan, tampilkan kepada pelanggan, aktifkan kembali formulir, dan sembunyikan indikator menunggu. Jika pelanggan harus melakukan langkah tambahan untuk menyelesaikan pembayaran, seperti autentikasi, Stripe.js akan memandu mereka menjalani proses itu.
Jika pembayaran berhasil, kartu akan disimpan ke objek Pelanggan. Hal ini tercermin dalam bidang customer PaymentMethod. Pada tahap ini, kaitkan identifikasi objek Pelanggan dengan representasi internal Anda sendiri tentang pelanggan, jika memilikinya. Sekarang Anda dapat menggunakan objek PaymentMethod tersimpan untuk menagih pembayaran dari pelanggan di masa mendatang tanpa memintanya memberikan detail pembayaran lagi.
Pastikan return_
sesuai dengan halaman pada situs web Anda yang menyediakan status pembayaran. Bila Stripe mengarahkan ulang pelanggan ke return_
, kami menyediakan parameter query URL berikut ini:
Parameter | Keterangan |
---|---|
payment_ | Identifier unik untuk PaymentIntent . |
payment_ | client secret dari objek PaymentIntent . |
Peringatan
Jika memiliki alat yang melacak sesi browser pelanggan, Anda mungkin perlu menambah domain stripe.
ke daftar pengecualian perujuk. Pengarahan ulang menyebabkan sejumlah alat membuat sesi baru, yang mencegah Anda melacak sesi yang telah selesai.
Gunakan salah satu parameter query untuk mengambil PaymentIntent. Periksa status PaymentIntent untuk memutuskan apa yang akan ditampilkan kepada pelanggan Anda. Anda juga dapat menambahkan parameter query Anda sendiri saat memberikan return_
, yang akan tetap ada selama proses pengalihan.
Charge metode pembayaran yang disimpan nantiSisi server
Peringatan
bancontact
, ideal
, dan sofort
adalah metode pembayaran satu kali secara default. Ketika diatur untuk penggunaan di masa mendatang, metode pembayaran tersebut menghasilkan tipe metode pembayaran sepa_
yang dapat digunakan kembali, sehingga Anda harus menggunakan sepa_
untuk meminta metode pembayaran yang telah disimpan.
Kepatuhan
Anda bertanggung jawab atas kepatuhan terhadap semua hukum, peraturan, dan aturan jaringan yang berlaku saat menyimpan detail pembayaran pelanggan. Saat menampilkan metode pembayaran sebelumnya kepada pelanggan akhir untuk pembelian di masa mendatang, pastikan Anda mencantumkan metode pembayaran yang telah mendapatkan persetujuan dari pelanggan untuk menyimpan detail metode pembayaran untuk penggunaan khusus di masa mendatang. Untuk membedakan antara metode pembayaran yang dilampirkan pada pelanggan yang dapat dan tidak dapat ditampilkan kepada pelanggan akhir Anda sebagai metode pembayaran tersimpan untuk pembelian di masa mendatang, gunakan parameter allow_redisplay.
Saat Anda siap untuk men-charge pelanggan Anda di luar sesi, gunakan identifikasi Pelanggan dan PaymentMethod untuk membuat PaymentIntent. Untuk menemukan metode pembayaran yang akan di-charge, cantumkan metode pembayaran yang dikaitkan dengan pelanggan Anda. Contoh ini mencantumkan kartu tetapi Anda dapat mencantumkan tipe yang didukung.
Bila Anda memiliki identifikasi PaymentMethod dan Pelanggan, buat PaymentIntent dengan jumlah dan mata uang pembayaran. Atur beberapa parameter lain untuk melakukan pembayaran di-luar sesi:
- Atur off_session ke
true
untuk mengindikasikan bahwa pelanggan tidak berada dalam alur checkout Anda selama upaya pembayaran dan tidak dapat memenuhi permintaan autentikasi yang dibuat oleh mitra, seperti penerbit kartu, bank, atau lembaga pembayaran lainnya. Jika, selama alur checkout Anda, mitra meminta autentikasi, Stripe meminta pengecualian menggunakan informasi pelanggan dari transaksi di dalam sesi sebelumnya. Jika syarat pengecualian tidak terpenuhi, PaymentIntent mungkin akan memunculkan kesalahan. - Atur nilai properti confirm PaymentIntent ke
true
, yang akan menyebabkan konfirmasi segera terjadi saat PaymentIntent dibuat. - Atur payment_method ke identifikasi PaymentMethod dan pelanggan ke identifikasi Pelanggan.
Coba integrasi
Gunakan detail pembayaran percobaan dan halaman pengarahan ulang percobaan untuk memverifikasi integrasi Anda. Klik tab di bawah guna melihat detail untuk setiap metode pembayaran.
Coba men-charge PaymentMethod Debit SEPA yang disimpan
Mengonfirmasi PaymentIntent menggunakan iDEAL, Bancontact, atau Sofort, menghasilkan PaymentMethod Debit Langsung SEPA. Debit Langsung SEPA adalah metode pembayaran dengan notifikasi tertunda yang berubah menjadi status processing
penengah sebelum nanti transisi beberapa hari menjadi status succeeded
atau requires_
.