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
Sumber daya pengembang
Gambaran UmumJelajahi semua produk
Mulai membangun
Mulai mengembangkan
Proyek sampel
Tentang API
    Tur API
    Payment Intents API
      Cara kerja PaymentIntents
      Pembaruan status pembayaran
      Penarikan Asinkron
      Bandingkan dengan Charge
    Setup Intents API
    Metode Pembayaran
    Produk dan harga
    API lama
    Fase rilis
Build with an LLM
Gunakan Stripe tanpa kode
Siapkan Stripe
Buat akun
Dashboard Web
Dashboard Seluler
Migrasikan ke Stripe
Kelola risiko penipuan
Pahami penipuan
Perlindungan penipuan Radar
Kelola sengketa
Verifikasikan identitas
BerandaMulaiAbout the APIsPayment Intents API

Pembaruan status pembayaran

Pantau dan verifikasikan status pembayaran, sehingga Anda dapat merespons pembayaran yang berhasil dan gagal.

Pembaruan PaymentIntents sebagai respons atas tindakan yang diambil oleh pelanggan atau metode pembayaran. Integrasi Anda dapat memeriksa PaymentIntent untuk menentukan status proses pembayaran, sehingga Anda dapat mengambil tindakan bisnis atau merespons keadaan yang memerlukan intervensi lebih lanjut.

Anda juga dapat menggunakan Dashboard Stripe untuk mengonfigurasi akun untuk mengirim email tentang status pembayaran, seperti pembayaran yang berhasil. Ubah notifikasi email Anda di pengaturan pengguna.

Periksa status PaymentIntent di client

Ketika menyelesaikan pembayaran di client dengan fungsi confirmCardPayment, Anda dapat memeriksa PaymentIntent yang dikembalikan untuk menentukan statusnya saat ini:

(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();

Berikut ini adalah kemungkinan hasil dari penggunaan fungsi confirmCardPayment:

KejadianApa yang TerjadiPerkiraan Integrasi
Diselesaikan dengan PaymentIntentPelanggan menyelesaikan pembayaran di halaman checkout AndaInformasikan kepada pelanggan bahwa pembayaran mereka berhasil
Diselesaikan dengan kesalahanPembayaran pelanggan gagal di halaman checkout AndaTampilkan pesan kesalahan dan minta pelanggan Anda untuk mencoba pembayaran lagi

Janji yang dikembalikan oleh confirmCardPayment diselesaikan bila proses pembayaran telah selesai atau gagal dengan kesalahan. Jika berhasil diselesaikan dan mengembalikan PaymentIntent, statusnya akan selalu succeeded (atau requires_capture jika menarik nanti). Bila pembayaran memerlukan langkah tambahan seperti autentikasi, janji tidak akan diselesaikan hingga langkah itu selesai atau waktunya habis.

Periksa status PaymentIntent di client tanpa menggunakan confirmCardPayment

Untuk memeriksa status PaymentIntent tanpa menggunakan fungsi confirmCardPayment, ambil secara tersendiri dengan menggunakan fungsi retrievePaymentIntent dan meneruskan client secret.

Berikut ini adalah beberapa kemungkinan status dari PaymentIntent setelah konfirmasi:

Apa yang TerjadiPerkiraan Status PaymentIntent
Pelanggan menyelesaikan pembayaran di halaman checkout Andasucceeded
Pelanggan tidak menyelesaikan checkoutrequires_action
Pembayaran pelanggan gagal di halaman checkout Andarequires_payment_method

Baca lebih lanjut tentang status PaymentIntent.

(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();

Pantau PaymentIntent dengan webhook

Stripe dapat mengirim kejadian webhook ke server Anda untuk memberitahukan bila status PaymentIntent berubah, yang dapat Anda gunakan untuk keperluan seperti penentuan kapan akan memenuhi barang dan layanan.

Jangan mencoba menangani pemenuhan pesanan di sisi client karena pelanggan dapat meninggalkan halaman setelah pembayaran selesai tetapi sebelum proses pemenuhan dimulai. Sebagai gantinya, gunakan webhook untuk memantau kejadian payment_intent.succeeded dan menangani penyelesaiannya secara asinkron, bukan mencoba memulai pemenuhan di sisi client.

Peringatan

Secara teknis dimungkinkan penggunaan penjajakan bukannya webhook untuk memantau perubahan yang disebabkan oleh operasi asinkron—mengambil PaymentIntent berulang kali sehingga Anda dapat memeriksa statusnya—tetapi melakukannya kurang dapat diandalkan dan dapat menyebabkan masalah pembatasan rasio. Stripe memberlakukan pembatasan tingkat pada permintaan API, jadi berhati-hatilah jika Anda memutuskan penggunaan penjajakan.

Untuk menangani kejadian webhook, buat rute di server Anda dan konfigurasikan endpoint webhook yang sesuai di Dashboard. Stripe mengirimkan kejadian payment_intent.succeeded bila pembayaran berhasil, dan kejadian payment_intent.payment_failed bila pembayaran gagal.

Payload webhook melampirkan objek PaymentIntent. Contoh berikut menunjukkan cara menangani kedua kejadian tersebut:

Ruby
require 'sinatra' require 'stripe' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'payment_intent.succeeded' intent = event['data']['object'] puts "Succeeded:", intent['id'] # Fulfill the customer's purchase when 'payment_intent.payment_failed' intent = event['data']['object'] error_message = intent['last_payment_error'] && intent['last_payment_error']['message'] puts "Failed:", intent['id'], error_message # Notify the customer that payment failed end status 200 end

Bila pembayaran tidak berhasil, Anda dapat menemukan detail selengkapnya dengan memeriksa properti last_payment_error PaymentIntent. Anda dapat memberi tahu pelanggan bahwa pembayaran mereka belum selesai dan mendorong mereka untuk mencoba lagi dengan metode pembayaran yang berbeda. Gunakan kembali PaymentIntent yang sama untuk terus melacak pembelian pelanggan.

Menangani kejadian webhook tertentu

Daftar berikut menerangkan cara menangani kejadian webhook:

KejadianKeteranganLangkah berikutnya
processingPembayaran pelanggan berhasil diserahkan ke Stripe. Hanya berlaku untuk metode pembayaran dengan konfirmasi berhasil yang tertunda.Tunggu pembayaran yang diprakarsai berhasil atau gagal.
succeededPembayaran pelanggan berhasilPenuhi barang atau layanan yang dibeli
amount_capturable_updatedPembayaran pelanggan diotorisasi dan siap untuk penarikanTarik dana yang tersedia untuk pembayaran
payment_failedPembayaran pelanggan ditolak oleh jaringan kartu atau kedaluwarsaHubungi pelanggan Anda melalui email atau notifikasi otomatis dan minta mereka untuk memberikan metode pembayaran yang lain

Untuk mencoba webhook secara lokal, Anda dapat menggunakan Stripe CLI. Setelah menginstalnya, Anda dapat meneruskan kejadian ke server:

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)

Pelajari selengkapnya tentang penyiapan webhook.

Mengidentifikasi charge di PaymentIntent

Bila Anda mencoba untuk menagih pembayaran dari pelanggan, PaymentIntent membuat Charge. Untuk mendapatkan identifikasi charge terbaru, periksa properti latest_charge PaymentIntent:

Ruby
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
intent = Stripe::PaymentIntent.retrieve('{{PAYMENT_INTENT_ID}}') latest_charge = intent.latest_charge

Untuk melihat semua charge yang dikaitkan dengan PaymentIntent, termasuk charge yang tidak berhasil, cantumkan semua charge dan tentukan parameter payment_intent​.

Command Line
cURL
curl -G https://api.stripe.com/v1/charges \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_intent=
{{PAYMENT_INTENT_ID}}

Menangani tindakan berikutnya

Beberapa metode pembayaran memerlukan langkah tambahan, seperti autentikasi, guna menyelesaikan proses pembayaran. Stripe.js menangani ini secara otomatis ketika mengonfirmasi PaymentIntent, tetapi jika Anda memiliki integrasi lanjutan, Anda mungkin ingin menangani secara manual.

Properti next_action PaymentIntent menunjukkan langkah berikutnya yang harus ditangani integrasi Anda guna menyelesaikan pembayaran. Tipe dari kemungkinan tindakan berikutnya dapat berbeda di antara berbagai metode pembayaran. Anda dapat menemukan daftar lengkap tindakan berikutnya yang mungkin dalam dokumentasi API.

Anda dapat membaca dokumentasi metode pembayaran untuk mengetahui detail selengkapnya tentang cara menangani tindakan berikutnya yang diperlukan.

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