Tertarik menggunakan Stripe Billing, Tax, diskon, pengiriman, atau konversi mata uang?
Kami sedang mengembangkan integrasi Payment Element yang mengelola langganan, pajak, diskon, pengiriman, dan konversi mata uang. Baca panduan Bangun halaman checkout untuk mempelajari selengkapnya.
Pelajari cara memigrasikan kartu yang ada dan integrasi Charges API.
Memigrasi alur pembayaran Anda boleh jadi menakutkan. Amannya menggunakan Payment Intents API secara bertahap dan menggunakannya secara paralel dengan Charges API. Untuk tujuan ini, Anda dapat memecah migrasi menjadi langkah-langkah berikut:
Jika berlaku, migrasikan kode yang dibaca oleh properti Charge sehingga Anda memiliki jalur baca yang konsisten antara charge yang dibuat oleh Charges API dan charge yang dibuat oleh Payment Intents API. Hal ini memastikan integrasi sisi baca yang berfungsi baik untuk integrasi pembayaran Anda yang lama maupun yang baru.
Migrasikan integrasi Charges API Anda yang sudah ada di Web, iOS, dan Android untuk menggunakan Payment Intents API.
Meski Payment Intents API berfungsi di semua versi API, kami merekomendasikan Anda melakukan upgrade ke versi API terbaru. Jika Anda memutuskan untuk menggunakan versi API yang lebih lama dari 2019-02-11, perhatikan dua perubahan berikut saat Anda melalui contoh kode:
requires_source telah diubah namanya menjadi requires_payment_method
requires_source_action telah diubah namanya menjadi requires_action
Selain itu, jika Anda menggunakan salah satu SDK kami, lakukan upgrade ke versi pustaka terbaru untuk menggunakan Payment Intents API.
Migrasikan alur pembayaran satu kali Anda
Integrasi yang dibangun dengan Stripe.js & Elements terdiri dari langkah-langkah berikut:
Daftarkan maksud Anda untuk mengumpulkan pembayaran di sisi server
Kumpulkan detail pembayaran di sisi client
Prakarsai pembuatan pembayaran
Penuhi pesanan pelanggan di sisi server
Langkah 1: Daftarkan maksud untuk mengumpulkan pembayaran di sisi server
Langkah 2: Kumpulkan detail pembayaran di sisi client
Gunakan fungsi confirmCardPayment, yang mengumpulkan informasi pembayaran dan mengirimkannya langsung ke Stripe.
Sebelum
Setelah
stripe.createToken(
cardElement
).then(function(token){// Send token to server});
stripe.confirmCardPayment(INTENT_SECRET_FROM_STEP_1,{
payment_method:{card: cardElement}}).then(function(result){if(result.error){// Display error.message in your UI.}else{// The payment has succeeded// Display a success message}});
Langkah 3: Prakarsai pembuatan pembayaran
Di integrasi yang ada, langkah terakhir adalah menggunakan informasi pembayaran yang dijadikan token untuk membuat charge di server Anda. Ini tidak lagi diperlukan, karena fungsi confirmCardPayment—yang dipanggil di langkah sebelumnya—akan memprakarsai pembuatan charge.
Dengan konfirmasi otomatis, charge dibuatkan untuk Anda secara asinkron berdasarkan tindakan pelanggan di sisi client, jadi Anda harus memantau webhook untuk menentukan kapan pembayaran berhasil diselesaikan. Untuk melakukan langkah-langkah seperti pemenuhan pesanan setelah pembayaran pelanggan berhasil, implementasikan dukungan untuk webhook dan pantau kejadian payment_intent.succeeded.
Sebelum
Setelah
Jika charge berhasil, penuhi pesanan.
Langganan ke webhook payment_intent.succeeded dan penuhi di handler webhook.
Karena Anda sekarang telah bermigrasi, gunakan kartu percobaan di bagian berikut untuk memverifikasi integrasi Anda yang di-upgrade untuk menangani autentikasi 3D Secure.
Migrasikan integrasi Anda yang menyimpan kartu pada objek Pelanggan
Integrasi Payment Intents API yang mengumpulkan informasi kartu dalam alur pembayaran terdiri dari langkah-langkah berikut:
Daftarkan maksud Anda untuk mengumpulkan pembayaran di sisi server
Kumpulkan detail pembayaran di sisi client
Prakarsai pembuatan pembayaran
Penuhi pesanan pelanggan di sisi server
Langkah 1: Daftarkan maksud untuk mengumpulkan pembayaran di sisi server
Buat PaymentIntent di server Anda. Atur setup_future_usage ke off_session jika Anda bermaksud men-charge pengguna saat mereka berada di luar aplikasi Anda, atau on_session jika Anda berencana men-charge mereka dalam aplikasi. Jika Anda berencana menggunakan kartu untuk pembayaran di-dalam dan di-luar sesi, gunakan off_session. Menyediakan parameter setup_future_usage bersama Identifikasi Pelanggan akan menyimpan PaymentMethod yang dihasilkan ke Pelanggan setelah PaymentIntent dikonfirmasikan dan semua tindakan yang diperlukan dari pelanggan telah selesai. Berikutnya, buat PaymentIntent dapat diakses di sisi client.
Langkah 2: Kumpulkan detail pembayaran di sisi client
Gunakan fungsi confirmCardPayment, yang mengumpulkan informasi pembayaran dan mengirimkannya langsung ke Stripe.
Sebelum
Setelah
stripe.createToken(// or stripe.createSource
cardElement
).then(function(token){// Send token to server});
stripe.confirmCardPayment('{{INTENT_SECRET_FROM_STEP_1}}',{
payment_method:{card: cardElement},}).then(function(result){if(result.error){// Display error.message in your UI.}else{// The payment has succeeded// Display a success message}});
Terakhir, lampirkan metode pembayaran (paymentIntent.payment_method) ke pelanggan.
Di integrasi yang ada, langkah terakhir adalah menggunakan informasi pembayaran yang dijadikan token untuk membuat charge di server Anda. Ini tidak lagi diperlukan, karena fungsi confirmCardPayment—yang dipanggil di langkah sebelumnya—akan memprakarsai pembuatan charge.
Dengan konfirmasi otomatis, charge dibuatkan untuk Anda secara asinkron berdasarkan tindakan pelanggan di sisi client, jadi Anda harus memantau webhook untuk menentukan kapan pembayaran berhasil diselesaikan. Untuk melakukan langkah-langkah seperti pemenuhan pesanan setelah pembayaran pelanggan berhasil, implementasikan dukungan untuk webhook dan pantau kejadian payment_intent.succeeded.
Sebelum
Setelah
Jika charge berhasil, penuhi pesanan.
Langganan ke webhook payment_intent.succeeded dan penuhi di handler webhook.
Karena Anda sekarang telah bermigrasi, gunakan kartu percobaan di bagian berikut untuk memverifikasi integrasi Anda yang di-upgrade untuk menangani autentikasi 3D Secure.
Akses metode pembayaran tersimpan
Untuk menampilkan Cards, Sources, dan PaymentMethods pelanggan yang disimpan sebelumnya, cantumkan metode pembayaran bukannya membaca properti sources dari objek pelanggan. Hal ini diperlukan karena PaymentMethods baru yang ditambahkan ke pelanggan tidak akan diduplikasi di properti sources objek pelanggan.
Sangatlah penting untuk mencoba integrasi secara menyeluruh guna memastikan Anda sudah benar dalam menangani kartu yang memerlukan autentikasi tambahan dan yang tidak. Gunakan nomor kartu ini dalam mode percobaan dengan tanggal kedaluwarsa di masa mendatang dan kode CVC tiga angka untuk memvalidasi integrasi Anda bila autentikasi diperlukan dan saat tidak diperlukan.
Nomor
Autentikasi
Keterangan
Diperlukan pada persiapan atau transaksi pertama
Kartu percobaan ini memerlukan autentikasi untuk pembayaran satu kali. Namun, jika Anda menyiapkan kartu ini menggunakan Setup Intents API dan menggunakan kartu tersimpan untuk pembayaran berikutnya, autentikasi lebih lanjut tidak dibutuhkan.
Harus diisi
Kartu percobaan ini memerlukan autentikasi pada semua transaksi.
Harus diisi
Kartu percobaan ini memerlukan autentikasi, tetapi pembayaran akan ditolak dengan kode kegagalan insufficient_funds setelah autentikasi berhasil.
Didukung
Kartu percobaan ini mendukung autentikasi melalui 3D Secure 2, tetapi tidak memerlukannya. Pembayaran menggunakan kartu ini tidak memerlukan autentikasi tambahan dalam mode percobaan kecuali aturan Radar mode percobaan Anda meminta autentikasi.
Gunakan kartu ini di aplikasi Anda atau demo pembayaran untuk melihat perilaku yang berbeda.