Pembayaran dengan kartu tanpa autentikasi bank
Membangun integrasi yang lebih sederhana dengan keterbatasan regional.
Integrasi ini hanya mendukung bisnis yang menerima kartu Amerika Serikat dan Kanada. Cara ini lebih sederhana di awal, tetapi tidak dapat ditingkatkan untuk mendukung basis pelanggan global.
Bagaimana cara kerja integrasi ini?
Bank di wilayah, seperti Eropa dan India, sering kali memerlukan autentikasi dua faktor untuk mengonfirmasi pembelian. Jika Anda menjalankan bisnis terutama di AS dan Kanada, pengabaian autentikasi kartu dapat menyederhanakan integrasi Anda, karena bank jarang memintanya di wilayah ini.
Bila bank memerlukan autentikasi, integrasi dasar ini menolak pembayaran (seperti penolakan kartu) dengan segera, alih-alih menangani autentikasi untuk menyelesaikan pembayaran secara asinkron. Manfaatnya adalah pembayaran langsung berhasil atau ditolak dan konfirmasi pembayaran terjadi di server, sehingga Anda dapat menangani tindakan pascapembayaran segera tanpa webhook.
Bagaimana jika dibandingkan dengan integrasi global?
Fitur | Integrasi ini | Integrasi global |
---|---|---|
Formulir pembayaran custom | ✔ | ✔ |
Data sensitif tidak pernah berinteraksi dengan server Anda | ✔ | ✔ |
Berfungsi bagi pelanggan AS dan Kanada Anda | ✔ | ✔ |
Menolak pembayaran dengan detail kartu yang salah atau tidak ada dana | ✔ | ✔ |
Menolak pembayaran dengan permintaan autentikasi bank | ✔ | |
Berfungsi bagi pelanggan global Anda | ✔ | |
Menangani pembayaran kartu secara otomatis yang memerlukan autentikasi bank | ✔ | |
Webhook direkomendasikan untuk tugas pascapembayaran | ✔ | |
Menskalakan dengan mudah ke metode pembayaran lain (misalnya, debit bank) | ✔ |
Bisnis global atau yang tengah berkembang harus menggunakan integrasi global Stripe untuk mendukung permintaan bank bagi autentikasi dua faktor serta memungkinkan pelanggan membayar dengan metode pembayaran yang beragam.
Buat formulir checkoutSisi client
Elements, bagian dari Stripe. js, menyediakan komponen UI drop-in untuk mengumpulkan informasi kartu dari pelanggan. Stripe meng-hostingnya dan menempatkannya ke dalam formulir pembayaran Anda sebagai iframe sehingga detail kartu pelanggan tidak pernah mencampuri kode Anda.
Siapkan StripeSisi server
Gunakan pustaka resmi untuk membuat permintaan ke API Stripe dari aplikasi Anda:
Lakukan pembayaranSisi server
Siapkan endpoint di server Anda untuk menerima permintaan dari klien.
Stripe menggunakan objek PaymentIntent untuk mewakili maksud Anda menagih pembayaran dari pelanggan, melacak upaya charge, dan perubahan status pembayaran di seluruh proses.
Selalu putuskan berapa banyak yang akan di-charge di server, lingkungan tepercaya, bukan di klien. Ini mencegah pelanggan yang berniat jahat untuk dapat memilih harga mereka sendiri.
Buat endpoint HTTP untuk menanggapi permintaan AJAX dari langkah 1. Di endpoint itu, Anda harus memutuskan berapa banyak yang akan di-charge ke pelanggan. Untuk melakukan pembayaran, buat PaymentIntent menggunakan identifikasi PaymentMethod dari langkah 1 dengan kode berikut:
Peringatan
Jika Anda mengatur error_on_requires_action ke true
ketika mengonfirmasi pembayaran, Stripe pembayaran gagal secara otomatis jika memerlukan autentikasi dua faktor dari pengguna.
Respons Payment Intents API
Bila Anda melakukan pembayaran dengan API, responsnya menyertakan status PaymentIntent. Jika berhasil, pembayaran akan berstatus succeeded
.
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
Jika pembayaran ditolak, responsnya menyertakan kode kesalahan dan pesan kesalahan. Berikut merupakan contoh pembayaran yang gagal karena autentikasi dua faktor diperlukan untuk kartu.
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
Tes integrasi
Stripe menyediakan beberapa kartu percobaan yang dapat Anda gunakan di sandbox untuk memastikan integrasi ini siap. Gunakan bersama CVC, kode pos, dan tanggal kedaluwarsa mendatang.
Nomor | Keterangan |
---|---|
Berhasil dan segera memproses pembayaran. | |
Selalu gagalkan dengan kode penolakan insufficient_ . | |
Perlu autentikasi, yang di integrasi ini akan digagalkan dengan kode penolakan authentication_ . |
Lihat daftar lengkap kartu percobaan.
Upgrade integrasi Anda untuk menangani autentikasi kartu
Selamat! Anda telah menyelesaikan integrasi pembayaran untuk pembayaran dasar dengan kartu. Perhatikan bahwa integrasi ini menolak kartu yang memerlukan autentikasi selama pembayaran.
Jika Anda mulai melihat pembayaran di Dashboard yang tercantum sebagai Failed
, maka itu waktunya untuk melakukan upgrade integrasi Anda. Integrasi global Stripe menangani pembayaran ini, bukan menolaknya secara otomatis.