Migrasikan integrasi kartu dasar Anda
Bermigrasi ke integrasi yang dapat menangani permintaan bank untuk autentikasi kartu.
If you followed the Card payments without bank authentication guide, your integration creates payments that decline when a bank asks the customer to authenticate the purchase.
Jika Anda mulai melihat banyak pembayaran yang gagal seperti yang ada di Dashboard di bawah atau dengan kode kesalahan requires_
di API, upgrade versi integrasi dasar Anda untuk menangani, bukan menolak, pembayaran ini.
Gunakan panduan ini untuk mempelajari cara memutakhirkan integrasi yang Anda buat di panduan sebelumnya untuk menambahkan kode server dan klien yang meminta pelanggan mengautentikasi pembayaran dengan menampilkan modal.
Catatan
Lihat contoh lengkap dari integrasi ini di GitHub.
Periksa apakah pembayaran memerlukan autentikasiSisi server
Buat dua perubahan pada endpoint di server Anda yang membuat PaymentIntent:
- Hapus parameter error_on_requires_action agar pembayaran yang memerlukan autentikasi tidak lagi gagal. Sebagai gantinya, status PaymentIntent berubah menjadi
requires_
.action - Tambahkan parameter
confirmation_
untuk menunjukkan bahwa Anda ingin secara eksplisit (manual) mengonfirmasi pembayaran lagi di server setelah menangani permintaan autentikasi.method
Kemudian perbarui fungsi “hasilkan respons” Anda untuk menangani status requires_
sebagai ganti memunculkan kesalahan:
Minta pelanggan untuk mengautentikasiSisi client
Selanjutnya, perbarui kode sisi klien Anda untuk memberi tahu Stripe agar menampilkan modal jika pelanggan perlu mengautentikasi.
Gunakan stripe.handleCardAction bila PaymentIntent berstatus requires_
. Jika berhasil, PaymentIntent akan berstatus requires_
dan Anda perlu mengonfirmasi PaymentIntent lagi pada server untuk menyelesaikan pembayaran.
const handleServerResponse = async (responseJson) => { if (responseJson.error) { // Show error from server on payment form } else if (responseJson.requiresAction) { // Use Stripe.js to handle the required card action const { error: errorAction, paymentIntent } = await stripe.handleCardAction(responseJson.clientSecret); if (errorAction) { // Show error from Stripe.js in payment form } else { // The card action has been handled // The PaymentIntent can be confirmed again on the server const serverResponse = await fetch('/pay', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ payment_intent_id: paymentIntent.id }) }); handleServerResponse(await serverResponse.json()); } } else { // Show success message } }
Konfirmasikan lagi PaymentIntentSisi server
Dengan menggunakan endpoint sama yang Anda siapkan sebelumnya, konfirmasikan PaymentIntent lagi untuk memfinalisasi pembayaran dan memenuhi pesanan. Upaya pembayaran gagal dan berubah kembali menjadi requires_
jika tidak dikonfirmasi lagi dalam waktu satu jam.
Coba integrasi
Gunakan kartu percobaan kami dalam mode percobaan untuk memverifikasi bahwa integrasi Anda telah diperbarui dengan benar. Stripe menampilkan halaman autentikasi palsu di dalam modal dalam mode percobaan yang memungkinkan Anda menyimulasikan upaya autentikasi yang berhasil atau gagal. Dalam mode live, bank mengontrol UI dari hal yang ditampilkan di dalam modal.
Nomor | Keterangan |
---|---|
Berhasil dan segera memproses pembayaran. | |
Selalu gagal dengan kode tolakan insufficient_ . | |
Perlu autentikasi, yang di integrasi ini akan digagalkan dengan kode penolakan authentication_ . |