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
:
Kejadian | Apa yang Terjadi | Perkiraan Integrasi |
---|---|---|
Diselesaikan dengan PaymentIntent | Pelanggan menyelesaikan pembayaran di halaman checkout Anda | Informasikan kepada pelanggan bahwa pembayaran mereka berhasil |
Diselesaikan dengan kesalahan | Pembayaran pelanggan gagal di halaman checkout Anda | Tampilkan 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_
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 Terjadi | Perkiraan Status PaymentIntent |
---|---|
Pelanggan menyelesaikan pembayaran di halaman checkout Anda | succeeded |
Pelanggan tidak menyelesaikan checkout | requires_ |
Pembayaran pelanggan gagal di halaman checkout Anda | requires_ |
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_
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_
bila pembayaran berhasil, dan kejadian payment_
bila pembayaran gagal.
Payload webhook melampirkan objek PaymentIntent. Contoh berikut menunjukkan cara menangani kedua kejadian tersebut:
Bila pembayaran tidak berhasil, Anda dapat menemukan detail selengkapnya dengan memeriksa properti last_
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:
Kejadian | Keterangan | Langkah berikutnya |
---|---|---|
processing | Pembayaran pelanggan berhasil diserahkan ke Stripe. Hanya berlaku untuk metode pembayaran dengan konfirmasi berhasil yang tertunda. | Tunggu pembayaran yang diprakarsai berhasil atau gagal. |
succeeded | Pembayaran pelanggan berhasil | Penuhi barang atau layanan yang dibeli |
amount_ | Pembayaran pelanggan diotorisasi dan siap untuk penarikan | Tarik dana yang tersedia untuk pembayaran |
payment_ | Pembayaran pelanggan ditolak oleh jaringan kartu atau kedaluwarsa | Hubungi 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:
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:
Untuk melihat semua charge yang dikaitkan dengan PaymentIntent, termasuk charge yang tidak berhasil, cantumkan semua charge dan tentukan parameter payment_
.
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.