Lewati ke konten
Buat akun
atau
Masuk
Logo Dokumen Stripe
/
Tanya AI
Buat akun
Masuk
Mulai
Pembayaran
Pendapatan
Platform dan situs belanja online
Manajemen uang
Alat bantu pengembang
Gambaran Umum
Tentang pembayaran Stripe
Upgrade integrasi Anda
Analitik pembayaran
Pembayaran online
Gambaran umumTemukan contoh penggunaan AndaPembayaran Terkelola
Gunakan Payment Links
Buat halaman checkout
Bangun integrasi lanjutan
Bangun integrasi dalam aplikasi
Metode Pembayaran
Tambahkan metode pembayaran
Kelola metode pembayaran
Checkout lebih cepat dengan Link
Antarmuka pembayaran
Payment Links
Checkout
Web Elements
Elements dalam aplikasi
Skenario pembayaran
Alur pembayaran custom
    Gambaran umum
    Pembayaran untuk pelanggan yang ada
    Otorisasikan dan tarik pembayaran secara terpisah
    Buat pengalaman konfirmasi dua langkah
    Kumpulkan detail pembayaran sebelum membuat Intent
    Finalisasikan pembayaran di server
    Ambil pesanan pos dan telepon (MOTO)
    Kartu AS dan Kanada
      Simpan kartu tanpa autentikasi
      Upgrade untuk menangani autentikasi
    Teruskan detail kartu ke endpoint API pihak ketiga
    Mata anggaran pembayaran
Akuisisi fleksibel
Orkestrasi
Pembayaran di tempat
Terminal
Produk Stripe lainnya
Financial Connections
Kripto
Climate
BerandaPembayaranCustom payment flowsUS and Canadian cards

Migrasikan integrasi kartu dasar Anda

Bermigrasi ke integrasi yang dapat menangani permintaan bank untuk autentikasi kartu.

Salin halaman

Jika Anda mengikuti panduan Pembayaran kartu tanpa autentikasi bank, integrasi Anda melakukan pembayaran yang ditolak bila bank meminta pelanggan mengautentikasi pembelian.

Jika Anda mulai melihat banyak pembayaran yang gagal seperti yang ada di Dashboard di bawah atau dengan kode kesalahan requires_action_not_handled di API, upgrade versi integrasi dasar Anda untuk menangani, bukan menolak, pembayaran ini.

Dashboard menampilkan pembayaran gagal yang menyatakan bahwa bank ini memerlukan autentikasi untuk 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 autentikasi
Sisi server

Buat dua perubahan pada endpoint di server Anda yang membuat PaymentIntent:

  1. Hapus parameter error_on_requires_action agar pembayaran yang memerlukan autentikasi tidak lagi gagal. Sebagai gantinya, status PaymentIntent berubah menjadi requires_action.
  2. Tambahkan parameter confirmation_method untuk menunjukkan bahwa Anda ingin secara eksplisit (manual) mengonfirmasi pembayaran lagi di server setelah menangani permintaan autentikasi.
Command Line
curl
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d amount=1099 \ -d currency=usd \ -d payment_method_types[]=card \ -d confirm=true \ -d error_on_requires_action=true \ -d payment_method="{{PAYMENT_METHOD_ID}}" \ -d confirmation_method=manual

Kemudian perbarui fungsi “hasilkan respons” Anda untuk menangani status requires_action sebagai ganti memunculkan kesalahan:

Command Line
curl
# If the request succeeds, check the # PaymentIntent's `status` and handle # its `next_action`.

Minta pelanggan untuk mengautentikasi
Sisi 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_action. Jika berhasil, PaymentIntent akan berstatus requires_confirmation 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 PaymentIntent
Sisi 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_payment_method jika tidak dikonfirmasi lagi dalam waktu satu jam.

Command Line
curl
curl https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/confirm \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST"

Coba integrasi

Gunakan kartu percobaan kami di sandbox untuk memverifikasikan bahwa integrasi Anda telah diperbarui dengan benar. Stripe menampilkan halaman autentikasi palsu di dalam modal di sandbox yang memungkinkan Anda menyimulasikan upaya autentikasi yang berhasil atau gagal. Dalam mode live, bank mengontrol UI dari apa yang ditampilkan di dalam modal.

NomorKeterangan
Berhasil dan segera memproses pembayaran.
Selalu gagal dengan kode tolakan insufficient_funds.
Perlu autentikasi, yang di integrasi ini akan digagalkan dengan kode penolakan authentication_not_handled.
Apakah halaman ini membantu?
YaTidak
Butuh bantuan? Hubungi Tim CS.
Bergabunglah dengan program akses awal kami.
Lihat log perubahan kami.
Ada pertanyaan? Hubungi Bagian Penjualan.
LLM? Baca llms.txt.
Dijalankan oleh Markdoc