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
Alat bantu pengembang
Gambaran Umum
Tentang pembayaran Stripe
Upgrade integrasi Anda
Analitik pembayaran
Pembayaran online
Gambaran umumTemukan contoh penggunaan AndaPembayaran Terkelola
Gunakan Payment Links
Buat halaman checkout
Bangun integrasi lanjutan
Bangun integrasi dalam aplikasi
Metode Pembayaran
Tambahkan metode pembayaran
Kelola metode pembayaran
Checkout lebih cepat dengan Link
    Gambaran umum
    Pembayaran Bank Instan
    Sekilas
    Link dengan Checkout
    Link dengan Web Elements
    Link dengan Mobile Elements
    Link dengan Invoicing
    Panduan integrasi
    Integrasi pembayaran Link
    Buat halaman checkout custom yang menyertakan Link
    Siapkan pembayaran masa depan menggunakan Elements dan Link
Antarmuka pembayaran
Payment Links
Checkout
Web Elements
Elements dalam aplikasi
Skenario pembayaran
Alur pembayaran custom
Akuisisi fleksibel
Orkestrasi
Pembayaran di tempat
Terminal
Produk Stripe lainnya
Financial Connections
Kripto
Climate
BerandaPembayaranFaster checkout with Link

Buat halaman checkout custom yang menyertakan Link

Integrasikan Link menggunakan Payment Element atau Link Authentication Element.

Salin halaman

Panduan ini memandu Anda melalui cara menerima pembayaran dengan Link menggunakan Payment Intents API dan Payment Element atau Link Authentication Element.

Ada tiga cara Anda dapat mengamankan alamat email pelanggan untuk autentikasi dan pendaftaran Link:

  • Masukkan alamat email: Anda dapat meneruskan alamat email ke Payment Element menggunakan defaultValues. Jika Anda sudah mengumpulkan alamat email dan atau nomor telepon pelanggan di alur checkout, kami merekomendasikan pendekatan ini.
  • Kumpulkan alamat email: Anda dapat mengumpulkan alamat email langsung di Payment Element. Jika Anda tidak mengumpulkan alamat email di mana pun dalam alur checkout, kami merekomendasikan pendekatan ini.
  • Link Authentication Element: Anda dapat menggunakan Link Authentication Element untuk membuat satu bidang input email untuk pengumpulan email maupun autentikasi Link. Kami merekomendasikan hal ini jika Anda menggunakan Address Element.
Autentikasi atau daftarkan dengan Link langsung di Payment Element saat checkout

Kumpulkan alamat email pelanggan untuk autentikasi atau pendaftaran Link

Siapkan Stripe
Sisi server

Pertama, buat akun Stripe atau masuk.

Gunakan pustaka resmi kami untuk mengakses API Stripe dari aplikasi Anda:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Buat PaymentIntent
Sisi server

Stripe menggunakan objek PaymentIntent untuk mewakili maksud Anda menagih pembayaran dari pelanggan, melacak upaya charge, dan perubahan status pembayaran di seluruh proses.

Diagram gambaran umum seluruh alur pembayaran

Jika Anda mengumpulkan detail kartu untuk penggunaan mendatang dengan Setup Intents, cantumkan metode pembayaran secara manual, bukan menggunakan metode pembayaran dinamis. Untuk menggunakan Link tanpa metode pembayaran dinamis, perbarui integrasi Anda untuk meneruskan link ke payment_method_types.

Saat Anda membuat PaymentIntent, tawarkan secara dinamis metode pembayaran yang paling relevan kepada pelanggan Anda, termasuk Link, dengan menggunakan metode pembayaran dinamis. Untuk menggunakan metode pembayaran dinamis, jangan sertakan parameter payment_method_types. Secara opsional, Anda juga dapat mengaktifkan automatic_payment_methods.

Catatan

Jika integrasi Anda tidak menetapkan parameter payment_method_types, beberapa metode pembayaran diaktifkan secara otomatis, termasuk kartu dan dompet digital.

Untuk menambahkan Link ke integrasi Elements Anda menggunakan metode pembayaran dinamis:

  1. Di pengaturan metode pembayaran Dashboard, aktifkan Link.
  2. Jika saat ini Anda memiliki integrasi yang mencantumkan metode pembayaran secara manual, hapus parameter payment_method_types dari integrasi Anda.

Ambil client secret

PaymentIntent menyertakan client secret yang digunakan pada sisi client untuk menyelesaian proses pembayaran dengan aman. Anda dapat menggunakan pendekatan berbeda untuk meneruskan client secret ke sisi client.

Ambil client secret dari endpoint pada server Anda, menggunakan fungsi fetch browser. Pendekatan ini paling baik jika sisi client Anda adalah aplikasi satu halaman, terutama yang dibangun dengan kerangka kerja frontend modern seperti React. Buat endpoint server yang melayani client secret:

main.rb
Ruby
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Kemudian ambil client secret dengan JavaScript pada sisi client:

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Kumpulkan email pelanggan

Link mengautentikasi pelanggan dengan menggunakan alamat emailnya. Tergantung pada alur checkout, Anda memiliki opsi berikut: meneruskan email ke Payment Element, mengumpulkannya langsung di dalam Payment Element, atau menggunakan Link Authentication Element. Dari jumlah tersebut, Stripe merekomendasikan untuk meneruskan alamat email pelanggan ke Payment Element jika tersedia.

Jika salah satu dari hal berikut berlaku untuk Anda:

  • Anda menginginkan satu komponen yang dioptimalkan untuk pengumpulan email dan autentikasi Link.
  • Anda perlu mengumpulkan alamat pengiriman dari pelanggan Anda.

Kemudian gunakan alur integrasi yang mengimplementasikan elemen-elemen ini: Link Authentication Element, Payment Element, dan Address Element opsional.

Halaman checkout yang diaktifkan Link memiliki Link Authentication Element di awal, diikuti oleh Address Element, dan Payment Element di bagian akhir. Anda juga dapat menampilkan Link Authentication Element di halaman terpisah, dalam urutan yang sama, untuk alur checkout multihalaman.

Buat formulir pembayaran menggunakan beberapa Elements

Buat formulir pembayaran menggunakan beberapa Elements

Integrasi berfungsi sebagai berikut:

Siapkan formulir pembayaran Anda
Sisi client

Sekarang Anda dapat menyiapkan formulir pembayaran custom dengan komponen UI siap-rakit Elements. Alamat halaman pembayaran Anda harus dimulai dengan https:// bukan http:// agar integrasi Anda berfungsi. Anda dapat mencoba integrasi tanpa menggunakan HTTPS. Aktifkan HTTPS saat Anda siap menerima pembayaran live.

Link Authentication Element menampilkan input alamat email. Saat Link mencocokkan email pelanggan dengan akun Link yang ada, Link akan mengirimkan kode sekali pakai yang aman ke ponselnya untuk mengautentikasi. Jika pelanggan berhasil mengautentikasi, Stripe menampilkan alamat dan metode pembayaran yang disimpan Link secara otomatis untuk digunakan.

Integrasi ini juga membuat Payment Element, yang merender formulir dinamis yang memungkinkan pelanggan Anda memilih jenis metode pembayaran. Formulir secara otomatis mengumpulkan semua detail pembayaran yang diperlukan untuk jenis metode pembayaran yang dipilih oleh pelanggan. Payment Element juga menangani tampilan metode pembayaran yang disimpan Link untuk pelanggan yang diautentikasi.

Siapkan Stripe Elements

Instal React Stripe.js dan loader Stripe.js dari register publik npm.

Command Line
npm install --save @stripe/react-stripe-js @stripe/stripe-js

Di halaman pembayaran, bungkus formulir pembayaran Anda dengan komponen Elements, meneruskan client secret dari langkah sebelumnya. Jika Anda sudah mengumpulkan email pelanggan di bagian lain formulir, ganti input yang ada dengan linkAuthenticationElement​.

Jika Anda tidak mengumpulkan email, tambahkan linkAuthenticationElement​ ke alur checkout Anda. Anda harus menempatkan linkAuthenticationElement sebelum ShippingAddressElement (opsional jika Anda mengumpulkan alamat pengiriman) dan PaymentElement untuk Link untuk mengisi otomatis detail yang disimpan Link untuk pelanggan Anda di ShippingAddressElement dan PaymentElement. Anda juga dapat meneruskan opsi penampilan, menyesuaikan Elements agar sesuai dengan desain situs Anda.

Jika Anda memiliki email pelanggan, teruskan ke opsi defaultValues dari linkAuthenticationElement. Ini mengisikan alamat emailnya secara otomatis dan memulai proses autentikasi Link.

Jika Anda memiliki informasi pelanggan lainnya, teruskan ke objek defaultValues.billingDetails untuk PaymentElement. Mengisikan otomatis informasi sebanyak mungkin menyederhanakan pembuatan dan penggunaan kembali akun Link untuk pelanggan Anda.

Kemudian, render komponen linkAuthenticationElement dan PaymentElement dalam formulir pembayaran Anda:

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { Elements, LinkAuthenticationElement, PaymentElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // Customize the appearance of Elements using the Appearance API. const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto';

linkAuthenticationElement, PaymentElement, dan ShippingAddressElement tidak perlu berada di halaman yang sama. Jika Anda memiliki proses di mana informasi kontak pelanggan, detail pengiriman, dan detail pembayaran ditampilkan kepada pelanggan dalam langkah terpisah, Anda dapat menampilkan setiap Element dalam langkah atau halaman yang sesuai. Sertakan linkAuthenticationElement sebagai formulir input email dalam langkah pengumpulan info kontak untuk memastikan pelanggan dapat memanfaatkan sepenuhnya pengisian otomatis pengiriman dan pembayaran yang disediakan oleh Link.

Jika Anda mengumpulkan email pelanggan dengan Link Authentication Element di awal alur checkout, Anda tidak perlu menampilkannya lagi di halaman pengiriman atau pembayaran.

Ambil alamat email

Anda dapat mengambil detail alamat email menggunakan prop onChange pada komponen linkAuthenticationElement. Handler onChange menyala setiap kali pengguna memperbarui bidang email, atau saat email pelanggan yang disimpan diisi otomatis.

<linkAuthenticationElement onChange={(event) => { setEmail(event.value.email); }} />

Isi dahulu alamat email pelanggan

Link Authentication Element menerima alamat email. Memberikan alamat email pelanggan akan memicu alur autentikasi Link segera setelah pelanggan membuka halaman pembayaran menggunakan opsi defaultValues.

<linkAuthenticationElement options={{defaultValues: {email: 'foo@bar.com'}}}/>

OpsionalIsi dahulu data pelanggan tambahan
Sisi client

OpsionalKumpulkan alamat pengiriman
Sisi client

OpsionalSesuaikan penampilan
Sisi client

Serahkan pembayaran ke Stripe
Sisi client

Gunakan stripe.confirmPayment untuk menyelesaikan pembayaran dengan detail yang dikumpulkan dari pelanggan Anda di formulir Elements yang berbeda. Berikan return_url ke fungsi ini untuk menunjukkan ke mana Stripe mengalihkan pengguna setelah menyelesaikan pembayaran.

Pengguna Anda mungkin terlebih dahulu diarahkan ulang ke situs perantara, seperti halaman otorisasi bank, sebelum Stripe mengalihkannya ke return_url.

Secara default, pembayaran kartu dan bank segera dialihkan ke return_url saat pembayaran berhasil. Jika tidak ingin dialihkan ke return_url, Anda dapat menggunakan if_required untuk mengubah perilaku.

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { useStripe, useElements, Elements, LinkAuthenticationElement, PaymentElement, // If collecting shipping AddressElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto'; const CheckoutPage =({clientSecret}) => ( <Elements stripe={stripe} options={{clientSecret, appearance, loader}}> <CheckoutForm /> </Elements> ); export default function CheckoutForm() { const stripe = useStripe(); const elements = useElements(); const handleSubmit = async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ elements, confirmParams: { return_url: "https://example.com/order/123/complete", }, }); if (error) { // handle error } }; return ( <form onSubmit={handleSubmit}> <h3>Contact info</h3> <LinkAuthenticationElement /> {/* If collecting shipping */} <h3>Shipping</h3> <AddressElement options={{mode: 'shipping', allowedCountries: ['US']}} /> <h3>Payment</h3> <PaymentElement /> <button type="submit">Submit</button> </form> ); }

return_url sesuai dengan halaman pada situs web Anda yang menyediakan status pembayaran dari PaymentIntent bila Anda menampilkan halaman pengembalian. Saat Stripe mengalihkan pelanggan ke return_url, Anda dapat menggunakan parameter query URL berikut untuk memverifikasi status pembayaran. Anda juga dapat menambahkan parameter query sendiri ketika memberikan return_url. Parameter query ini bertahan selama proses pengalihan.

ParameterKeterangan
payment_intentIdentifier unik untuk PaymentIntent
payment_intent_client_secretClient secret dari objek PaymentIntent.

OpsionalPisahkan otorisasi dan penarikan
Sisi server

Tangani kejadian pascapembayaran
Sisi server

Stripe mengirim kejadian payment_intent.succeeded ketika selesai pembayaran. Gunakan webhook untuk menerima kejadian ini dan menjalankan tindakan, seperti mengirim email konfirmasi pesanan kepada pelanggan Anda, mencatat penjualan di database, atau memulai alur kerja pengiriman.

Konfigurasikan integrasi Anda untuk mendengarkan kejadian ini daripada menunggu callback dari client. Saat Anda menunggu callback dari client, pelanggan dapat menutup jendela browser atau keluar dari aplikasi sebelum callback mengeksekusi. Menyiapkan integrasi untuk mendengarkan kejadian asinkron memungkinkan Anda menyetujui berbagai tipe metode pembayaran dengan satu integrasi tunggal.

Selain menangani kejadian payment_intent.succeeded, Anda juga dapat menangani dua kejadian penting lainnya ketika menagih pembayaran dengan Payment Element:

KejadianKeteranganTindakan
payment_intent.succeededDikirim dari Stripe bila pelanggan berhasil menyelesaikan suatu pembayaran.Kirimi pelanggan konfirmasi pesanan dan penuhi pesanan mereka.
payment_intent.payment_failedDikirim dari Stripe ketika pelanggan mencoba melakukan pembayaran, tetapi pembayaran itu gagal.Jika transisi pembayaran dilakukan dari processing menjadi payment_failed, tawarkan upaya lain untuk membayar kepada pelanggan.

Uji integrasinya

Peringatan

Jangan simpan data pengguna asli di sandbox akun Link. Perlakukan seolah-olah tersedia untuk umum, karena akun percobaan ini dikaitkan dengan kunci Anda yang dapat dipublikasikan.

Saat ini, Link hanya berfungsi dengan kartu kredit, kartu debit, dan pembelian rekening bank AS yang memenuhi syarat. Link memerlukan pendaftaran domain.

Anda dapat membuat akun sandbox untuk Link menggunakan alamat email yang valid. Tabel berikut menampilkan nilai kode sandi satu kali tetap yang Stripe terima untuk melakukan autentikasi akun sandbox:

NilaiHasil
6 angka lainnya yang tidak tercantum di bawahBerhasil
000001Kesalahan, kode tidak valid
000002Kesalahan, kode kedaluwarsa
000003Kesalahan, upaya maksimum terlampaui

Untuk mencoba metode pembayaran tertentu, lihat contoh percobaan Payment Element.

Berbagai sumber pendanaan

Saat Stripe menambahkan dukungan sumber pendanaan tambahan, Anda tidak perlu memperbarui integrasi. Stripe secara otomatis mendukungnya dengan waktu penyelesaian transaksi dan jaminan yang sama seperti pembayaran kartu dan rekening bank.

Autentikasi kartu dan 3D Secure

Link mendukung autentikasi 3D Secure 2 (3DS2) untuk pembayaran kartu. 3DS2 mengharuskan pelanggan menyelesaikan langkah verifikasi tambahan dengan penerbit kartu ketika membayar. Pembayaran yang telah berhasil diautentikasi menggunakan 3D Secure dicakup oleh pengalihan pertanggungjawaban.

Untuk memicu alur tantangan autentikasi 3DS2 dengan Link di sandbox, gunakan kartu percobaan berikut dengan CVC, kode pos, dan tanggal kedaluwarsa mendatang: .

Di sandbox, proses autentikasi menampilkan halaman autentikasi rekaan. Pada halaman tersebut, Anda dapat memberikan otorisasi ataupun membatalkan penyiapan. Pemberian otorisasi pembayaran menyimulasikan autentikasi yang berhasil dan mengalihkan Anda ke URL kembali yang telah ditentukan. Mengeklik tombol Kegagalan menyimulasikan percobaan autentikasi yang tidak berhasil.

Untuk detail selengkapnya, lihat halaman autentikasi 3D Secure.

Catatan

Saat mencoba alur 3DS, hanya kartu percobaan untuk 3DS2 yang akan memicu autentikasi di Link.

OpsionalTampilkan data yang disimpan pelanggan
Sisi server
Sisi client

OpsionalSimpan metode pembayaran Link
Sisi server
Sisi client

Ungkapkan Stripe kepada pelanggan Anda

Stripe mengumpulkan informasi tentang interaksi pelanggan dengan Elements untuk memberikan layanan kepada Anda, mencegah penipuan, serta meningkatkan layanannya. Ini termasuk penggunaan cookie dan alamat IP guna mengidentifikasi Elements mana yang dilihat pelanggan selama satu sesi checkout. Anda bertanggung jawab untuk mengungkapkan serta memperoleh semua hak dan persetujuan yang diperlukan agar Stripe dapat menggunakan data dengan cara ini. Untuk informasi selengkapnya, kunjungi pusat privasi kami.

Lihat juga

  • Apa itu Link?
  • Link dengan Elements
  • Link di Payment Element
  • Jelajahi Link Authentication Element
  • Link di berbagai integrasi pembayaran
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