Simpan kartu tanpa autentikasi bank
Kumpulkan detail kartu dan charge pelanggan Anda di lain waktu.
Stripe memungkinkan Anda mengumpulkan detail kartu dan men-charge pelanggan Anda di kemudian hari. Di beberapa wilayah, bank mengharuskan formulir autentikasi kedua seperti memasukkan kode yang dikirim ke ponsel. Langkah ekstra menurunkan konversi jika pelanggan Anda tidak secara aktif menggunakan situs web atau aplikasi Anda karena mereka tidak tersedia untuk mengautentikasi pembelian.
If you primarily do business in the US and Canada, banks don’t require authentication, so you can follow this simpler integration. This integration will be non-compliant in countries that require authentication for saving cards (for example, India) so building this integration means that expanding to other countries or adding other payment methods will require significant changes. Learn how to save cards that require authentication.
Kepatuhan
Anda bertanggung jawab atas kepatuhan Anda terhadap semua hukum, peraturan, dan aturan jaringan yang berlaku saat menyimpan detail pembayaran pelanggan. Misalnya, jika Anda ingin menyimpan metode pembayaran pelanggan untuk digunakan di masa mendatang, seperti men-charge saat mereka tidak aktif menggunakan situs web atau aplikasi Anda. Tambahkan ketentuan di situs web atau aplikasi Anda yang menyatakan rencana Anda menyimpan detail metode pembayaran dan mengizinkan pelanggan untuk ikut serta. Jika Anda ingin men-charge saat mereka offline, pastikan ketentuan Anda mencakup hal-hal berikut ini:
- Persetujuan pelanggan untuk melakukan pembayaran atau serangkaian pembayaran atas nama mereka untuk transaksi tertentu.
- Waktu dan frekuensi pembayaran yang diantisipasi (misalnya, jika charge untuk angsuran terjadwal, pembayaran langganan, atau penambahan saldo tidak terjadwal).
- Cara Anda menentukan jumlah pembayaran.
- Kebijakan pembatalan Anda, jika metode pembayarannya untuk layanan langganan.
Pastikan Anda menyimpan catatan persetujuan tertulis dari pelanggan atas ketentuan ini.
Kumpulkan detail kartuSisi klien
Sebelum memulai panduan ini, Anda membutuhkan akun Stripe. Daftar sekarang.
Bangun halaman checkout untuk mengumpulkan detail kartu pelanggan Anda. Gunakan Stripe Elements, pustaka UI yang membantu Anda membangun formulir pembayaran custom. Untuk memulai dengan Elements, sertakan pustaka Stripe.js dengan skrip berikut pada halaman checkout Anda.
<script src="https://js.stripe.com/v3/"></script>
Selalu muat Stripe.js secara langsung dari js.stripe.com agar tetap mematuhi PCI. Jangan menyertakan skrip dalam paket atau meng-host sendiri salinannya.
Untuk lebih memanfaatkan fungsionalitas anti-penipuan lanjutan Stripe, sertakan skrip ini pada setiap halaman di situs Anda, tidak hanya halaman checkout. Penyertaan skrip ini pada setiap halaman memungkinkan Stripe mendeteksi perilaku mencurigakan yang mungkin merupakan indikasi penipuan saat pengguna menelusuri situs web Anda.
Tambahkan Elements ke halaman Anda
Untuk mengumpulkan detail kartu dengan aman dari pelanggan, Elements membuatkan Anda komponen UI yang di-hosting oleh Stripe. Kemudian komponen tersebut dimasukkan dalam formulir pembayaran, bukan Anda yang membuatnya secara langsung. Untuk menentukan ke mana memasukkan komponen ini, buat (container) element DOM kosong dengan identifikasi unik dalam formulir pembayaran Anda.
<input id="cardholder-name" type="text"> <!-- placeholder for Elements --> <div id="card-element"></div> <div id="card-result"></div> <button id="card-button">Save Card</button>
Berikutnya, buat instance objek Stripe, yang menyediakan kunci API yang dapat dipublikasikan kepada Anda sebagai parameter pertama. Setelah itu, buat instance objek Elements dan gunakan itu untuk memasang elemen card
di DOM.
Element card
menyederhanakan formulir dan meminimalkan jumlah bidang yang diperlukan dengan memasukkan satu bidang input fleksibel yang dengan aman mengumpulkan semua detail kartu yang diperlukan.
Jika tidak, gabungkan Elements cardNumber
, cardExpiry
, dan cardCvc
untuk formulir kartu multiinput yang fleksibel.
Catatan
Selalu kumpulkan kode pos untuk meningkatkan rasio persetujuan kartu dan mengurangi penipuan.
The single line Card Element automatically collects and sends the customer’s postal code to Stripe. If you build your payment form with split Elements (Card Number, Expiry, CVC), add a separate input field for the customer’s postal code.
const stripe = Stripe(
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');'pk_test_TYooMQauvdEDq54NiTphI7jx'
Stripe Element berisi iframe yang mengirimkan informasi pembayaran dengan aman ke Stripe melalui koneksi HTTPS. Alamat halaman checkout juga harus dimulai dengan https://
bukan http://
agar integrasi Anda dapat berfungsi.
Anda dapat mencoba integrasi tanpa menggunakan HTTPS. Aktifkan bila Anda siap menerima pembayaran live.
const cardholderName = document.getElementById('cardholder-name'); const cardButton = document.getElementById('card-button'); const resultContainer = document.getElementById('card-result'); cardButton.addEventListener('click', async (ev) => { const {paymentMethod, error} = await stripe.createPaymentMethod({ type: 'card', card: cardElement, billing_details: { name: cardholderName.value, }, } ); if (error) { // Display error.message in your UI. resultContainer.textContent = error.message; } else { // You have successfully created a new PaymentMethod resultContainer.textContent = "Created payment method: " + paymentMethod.id; } });
Kirim identifikasi PaymentMethod yang dihasilkan ke server Anda.
Siapkan StripeSisi server
Gunakan pustaka resmi kami untuk mendapatkan akses ke API Stripe dari aplikasi Anda:
Simpan kartuSisi server
Simpan kartu dengan melampirkan PaymentMethod pada Pelanggan. Anda dapat menggunakan objek Customer untuk menyimpan informasi lain tentang pelanggan, seperti detail pengiriman dan alamat email.
Jika sudah memiliki Customer yang ada, Anda dapat melampirkan PaymentMethod pada objek itu sebagai gantinya.
Pada saat ini, kaitkan identifikasi Customer dan identifikasi PaymentMethod dengan perwakilan internal Anda sendiri dari pelanggan, jika memilikinya.
Charge kartu yang disimpanSisi server
Bila Anda sudah siap, ambil identifikasi PaymentMethod dan Customer yang akan di-charge. Anda dapat melakukan hal ini dengan menyimpan identifikasi keduanya di database, atau dengan menggunakan identifikasi Customer untuk mencari semua PaymentMethods Customer yang tersedia.
Gunakan identifikasi PaymentMethod dan identifikasi Pelanggan untuk membuat PaymentIntent baru. Atur error_on_requires_action ke true untuk menolak pembayaran yang memerlukan tindakan dari pelanggan Anda, seperti autentikasi dua faktor.
Bila upaya pembayaran gagal, permintaan juga gagal dengan kode status HTTP 402 dan Stripe menampilkan kesalahan. Anda perlu memberi tahu pelanggan untuk kembali ke aplikasi (misalnya, dengan mengirimkan email) guna menyelesaikan pembayaran. Periksa kode Kesalahan yang dimunculkan oleh pustaka Stripe API atau cek last_payment_error.decline_code pada PaymentIntent untuk memeriksa mengapa penerbit kartu menolak pembayaran tersebut.
Tangani kesalahan kartu
Notify your customer that the payment failed and direct them to the payment form you made in Step 1 where they can enter new card details. Send that new PaymentMethod ID to your server to attach to the Customer object and make the payment again.
Atau, Anda dapat membuat PaymentIntent dan menyimpan kartu semuanya dalam satu panggilan API jika Anda sudah membuat Customer.
Setting setup_future_usage to on_
indicates to Stripe that you wish to save the card for later, without triggering unnecessary authentication.
Coba integrasi
Stripe provides test cards you can use in test mode to simulate different cards’ behavior. Use these cards with any CVC, postal code, and expiry date in the future.
Nomor | Keterangan |
---|---|
Berhasil dan segera memproses pembayaran. | |
Selalu gagal dengan kode tolakan insufficient_ . | |
Perlu autentikasi, yang di integrasi ini akan ditolak dengan kode authentication_ . |
Upgrade integrasi Anda untuk menangani autentikasi kartu
Integrasi ini menolak kartu yang memerlukan autentikasi selama pembayaran. Jika Anda mulai melihat banyak 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.