Simpan detail pembayaran saat pembayaran
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.
Kepatuhan
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. These requirements generally apply if you want to save your customer’s payment method for future use, such as displaying a customer’s payment method to them in the checkout flow for a future purchase or charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in.
When you save a payment method, you can only use it for the specific usage you have included in your terms. To charge a payment method when a customer is offline and save it as an option for future purchases, make sure that you explicitly collect consent from the customer for this specific use. For example, include a “Save my payment method for future use” checkbox to collect consent.
To charge them when they’re offline, make sure your terms include the following:
- 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.
Siapkan StripeSisi server
Pertama, buat akun Stripe atau masuk.
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.
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 Anda menjangkau lebih banyak pelanggan, namun sebaiknya aktifkan metode pembayaran tambahan yang relevan untuk bisnis dan pelanggan Anda. Lihat Opsi integrasi metode pembayaran untuk informasi tentang dukungan produk dan metode pembayaran, dan halaman skema biaya kami untuk mengetahui biayanya.
Buat PaymentIntentSisi server
Catatan
Jika Anda ingin merender Payment Element tanpa terlebih dahulu membuat PaymentIntent, lihat Kumpulkan detail pembayaran sebelum membuat Intent.
Objek PaymentIntent mewakili maksud Anda menagih pembayaran dari pelanggan dan melacak upaya charge dan perubahan status selama proses pembayaran.
Buat PaymentIntent
Buat PaymentIntent pada server Anda dengan jumlah dan mata uang. Pada versi terbaru API, menentukan parameter automatic_payment_methods
bersifat opsional karena Stripe mengaktifkan fungsionalitasnya secara default. Anda dapat mengelola metode pembayaran dari Dashboard. Stripe menangani pengembalian metode pembayaran yang memenuhi syarat berdasarkan faktor-faktor seperti jumlah transaksi, mata uang, dan alur pembayaran.
Buat PaymentIntent pada server Anda. Tentukan jumlah, mata uang, dan pelanggan. Pada versi terbaru API, menentukan parameter automatic_payment_methods
bersifat opsional karena Stripe mengaktifkan fungsionalitasnya secara default. Aktifkan setup_future_usage. Metode pembayaran yang Anda konfigurasikan di Dashboard secara otomatis ditambahkan ke Payment Intent.
Jika Anda tidak ingin menggunakan Dashboard atau jika Anda ingin menentukan metode pembayaran secara manual, Anda dapat mencantumkannya menggunakan atribut payment_method_types
.
Catatan
Selalu putuskan berapa banyak yang akan di-charge di sisi server, lingkungan tepercaya, bukan di klien. Ini mencegah pelanggan yang berniat jahat untuk dapat memilih harga mereka sendiri.
Ambil client secret
PaymentIntent menyertakan client secret yang digunakan pada sisi client untuk menyelesaian proses pembayaran dengan aman. Anda dapat menggunakan pendekatan berbeda untuk meneruskan client secret ke sisi client.
Kumpulkan detail pembayaranSisi client
Kumpulkan detail pembayaran pada client dengan Payment Element. Pembayaran Element adalah komponen UI siap-rakit yang menyederhanakan detail pengumpulan 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.
If you do choose to use an iframe and want to accept Apple Pay or Google Pay, the iframe must have the allow attribute set to equal "payment *"
.
Alamat halaman checkout harus dimulai dengan https://
, bukan http://
agar integrasi Anda berfungsi. Anda dapat mencoba integrasi tanpa menggunakan HTTPS, tetapi 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 sesuai 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 mengonfigurasi integrasi ke terima pembayaran Apple Pay, sebaiknya konfigurasikan antarmuka Apple Pay untuk menghasilkan token merchant agar dapat mengaktifkan transaksi yang diprakarsai merchant (MIT). Minta tipe 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 mengarahkan ulang pengguna setelah mereka menyelesaikan pembayaran. Pengguna Anda mungkin pertama kali diarahkan ulang ke situs perantara, seperti halaman otorisasi bank, sebelum diarahkan ulang ke return_url
. Pembayaran kartu segera diarahkan ulang ke return_url
bila pembayaran berhasil.
Jika tidak ingin dialihkan untuk pembayaran kartu setelah pembayaran selesai, Anda dapat mengatur pengalihan ke if_required
. Hal ini hanya mengalihkan pelanggan yang memproses pembayaran dengan metode pembayaran berbasis pengalihan.
Catatan
stripe.confirmPayment
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 pada bidang pelanggan 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 meminta mereka memberikan detail pembayaran lagi.
Pastikan return_url
sesuai dengan halaman pada situs web Anda yang menyediakan status pembayaran. Bila Stripe mengarahkan ulang pelanggan ke return_url
, kami menyediakan parameter query URL berikut ini:
Parameter | Keterangan |
---|---|
payment_intent | Identifier unik untuk PaymentIntent . |
payment_intent_client_secret | client secret dari objek PaymentIntent . |
Peringatan
Jika memiliki alat yang melacak sesi browser pelanggan, Anda mungkin perlu menambah domain stripe.com
ke daftar pengecualian perujuk. Pengarahan ulang menyebabkan sejumlah alat membuat sesi baru, yang mencegah Anda melacak sesi yang telah selesai.
Gunakan salah satu parameter kueri untuk mengambil PaymentIntent. Periksa status PaymentIntent untuk memutuskan apa yang akan ditampilkan kepada pelanggan Anda. Anda juga dapat menambahkan parameter kueri Anda sendiri saat memberikan return_url
, 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_debit
yang dapat digunakan kembali, sehingga Anda harus menggunakan sepa_debit
untuk meminta metode pembayaran yang telah disimpan.
Compliance
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. When rendering past payment methods to your end customer for future purchases, make sure you’re listing payment methods where you’ve collected consent from the customer to save the payment method details for this specific future use. To differentiate between payment methods attached to customers that can and can’t be presented to your end customer as a saved payment method for future purchases, use the allow_redisplay parameter.
Saat Anda siap untuk men-charge pelanggan Anda di-luar sesi, gunakan ID Pelanggan dan PaymentMethod untuk membuat PaymentIntent. Untuk menemukan metode pembayaran yang akan di-charge, buat daftar metode pembayaran yang terkait dengan pelanggan Anda. Contoh ini mencantumkan kartu, tetapi Anda dapat mencantumkan apa pun yang didukung tipe.
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:
- Tetapkan 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 menjadi status succeeded
atau requires_payment_method
.