Pembayaran dengan kartu tanpa autentikasi bank
Membangun integrasi yang lebih sederhana dengan keterbatasan regional.
Integrasi ini mendukung bisnis yang hanya menerima kartu AS dan Kanada. Ini lebih sederhana untuk dibangun, tetapi tidak diskalakan untuk mendukung basis pelanggan global.
Cara kerja integrasi ini
Bank di wilayah seperti Eropa dan India sering kali memerlukan otentikasi dua faktor untuk mengonfirmasi pembelian. Jika Anda terutama melakukan bisnis di AS dan Kanada, mengabaikan 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 perbandingannya 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 titik akhir HTTP untuk merespons permintaan AJAX dari langkah 1. Di titik akhir itu, dan putuskan berapa banyak biaya yang akan ditagih kepada pelanggan. Untuk membuat pembayaran, buat PaymentIntent menggunakan ID 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
Integrasi pembayaran Anda untuk pembayaran kartu dasar kini telah selesai. Integrasi ini menolak kartu yang memerlukan autentikasi selama pembayaran.
Jika Anda mulai melihat pembayaran di Dasbor yang tercantum sebagai Gagal, maka Anda perlu ,meningkatkan integrasi Anda. Integrasi global Stripe menangani pembayaran ini alih-alih menolaknya secara otomatis.