Lewati ke konten
Buat akun atau Masuk
Logo Dokumen Stripe
/
Tanya AI
Buat akunMasuk
Mulai
Pembayaran
Pendapatan
Platform dan situs belanja online
Manajemen uang
Sumber daya pengembang
API & SDKBantuan
Gambaran Umum
Tentang pembayaran Stripe
Upgrade integrasi Anda
Analitik pembayaran
Pembayaran online
Gambaran umumTemukan contoh penggunaan AndaGunakan Managed Payments
Gunakan Payment Links
Gunakan halaman checkout bawaan
Buat integrasi kustom dengan Elements
Bangun integrasi dalam aplikasi
Pembayaran di tempat
Terminal
Metode Pembayaran
Tambahkan metode pembayaran
Kelola metode pembayaran
Checkout lebih cepat dengan Link
    Gambaran umum
    Pembayaran Bank Instan
    Klarna di Link
    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
Skenario pembayaran
Tangani beberapa mata uang
Alur pembayaran custom
Akuisisi fleksibel
Orkestrasi
Di luar pembayaran
Dirikan perusahaan Anda
Kripto
Perdagangan agen
Financial Connections
Climate
Pahami penipuan
Perlindungan penipuan Radar
Kelola sengketa
Verifikasikan identitas
Amerika Serikat
Bahasa Indonesia
BerandaPembayaranFaster checkout with Link

Buat halaman checkout custom yang menyertakan Link

Integrasikan Link menggunakan Payment Element atau Link Authentication Element.

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
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# 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
Python
PHP
Java
Node.js
Go
.NET
No results
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

Jika Anda memilikinya, mengisi informasi pelanggan terlebih dahulu semakin menyederhanakan proses checkout dan mengurangi entri data manual.

Jika Anda menggunakan Link Authentication Element, tambahkan objek defaultValues.billingDetails ke Payment Element untuk mengisi otomatis nama dan nomor telepon pelanggan serta alamat pengiriman. Dengan mengisikan informasi pelanggan sebanyak mungkin, berarti Anda menyederhanakan pembuatan dan penggunaan kembali akun Link.

Informasi yang telah diisi sebelumnya di formulir ikut serta Link.

Isi otomatis alamat email, nomor telepon, dan nama pelanggan Anda untuk menyederhanakan proses pendaftaran Link

Anda dapat memberikan nilai berikut ke objek defaultValues.billingDetails:

NilaiDiperlukanFormat
nameOpsionalstring
phoneOpsionalstring
addressOpsionalObjek JSON dengan bidang postal_code, dan country. Semua bidang adalah string.

Payment Element dengan semua nilainya yang telah diisikan sebelumnya terlihat mirip dengan contoh berikut:

<PaymentElement options={{ defaultValues: { billingDetails: { name: 'John Doe', phone: '888-888-8888', address: { postal_code: '10001', country: 'US', } }, }, }} />;

OpsionalKumpulkan alamat pengiriman
Sisi client

Untuk mengumpulkan alamat, buat node DOM kosong bagi Address Element yang akan dirender. Address Element harus ditampilkan setelah Link Authentication Element agar Link mengisi otomatis detail alamat yang disimpan pelanggan:

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { Elements, LinkAuthenticationElement, AddressElement, 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'; const CheckoutPage = ({clientSecret}) => ( <Elements stripe={stripe} options={{clientSecret, appearance, loader}}> <CheckoutForm /> </Elements> ); export default function CheckoutForm() { return ( <form> <h3>Contact info</h3> <LinkAuthenticationElement /> <h3>Shipping</h3> <AddressElement options={{mode: 'shipping', allowedCountries: ['US']}} /> <h3>Payment</h3> <PaymentElement /> <button type="submit">Submit</button> </form> ); }

Tampilkan AddressElement sebelum PaymentElement. PaymentElement secara dinamis mendeteksi data alamat yang dikumpulkan oleh AddressElement, menyembunyikan bidang yang tidak diperlukan, dan mengumpulkan detail alamat tagihan tambahan seperlunya.

Mengambil informasi alamat

AddressElement secara otomatis meneruskan alamat pengiriman bila pelanggan menyerahkan pembayaran, tetapi Anda juga dapat mengambil detail alamat pada frontend menggunakan properti onChange. Penangan onChange mengirim kejadian setiap kali pengguna memperbarui bidang di Address Element atau memilih alamat yang disimpan:

<AddressElement onChange={(event) => { setAddressState(event.value); }} />

Isi otomatis alamat pengiriman

Gunakan defaultValues untuk mengisi informasi alamat secara otomatis, sehingga mempercepat proses pembayaran bagi pelanggan Anda.

<AddressElement options={{ mode: 'shipping', defaultValues: { name: 'Jane Doe', address: { line1: '354 Oyster Point Blvd', line2: '', city: 'South San Francisco', state: 'CA', postal_code: '94080', country: 'US', } } }}>

OpsionalSesuaikan penampilan
Sisi client

Setelah menambahkan Elements ini ke halaman, Anda dapat menyesuaikan appearance agar sesuai dengan desain Anda selengkapnya:

Sesuaikan penampilan Elements Anda

Sesuaikan penampilan Elements Anda

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

Link mendukung otorisasi dan penarikan terpisah. Anda harus menarik pembayaran Link yang diotorisasi dalam waktu 7 hari sejak otorisasi. Jika tidak, otorisasi akan otomatis dibatalkan dan Anda tidak dapat menarik pembayaran itu.

Beri tahu Stripe untuk memberi otorisasi saja

Untuk menunjukkan bahwa Anda ingin memisahkan otorisasi dan penarikan, atur capture_method ke manual ketika membuat PaymentIntent. Parameter ini menginstruksikan Stripe untuk hanya mengotorisasikan jumlah pada metode pembayaran pelanggan.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "payment_method_types[]"=link \ -d "payment_method_types[]"=card \ -d amount=1099 \ -d currency=usd \ -d capture_method=manual

Tarik dana

Setelah otorisasi berhasil, status PaymentIntent beralih ke requires_capture. Untuk menarik dana yang diotorisasi, buat permintaan penarikan PaymentIntent. Total jumlah yang diotorisasi ditarik secara default—Anda tidak dapat menarik lebih dari ini, tetapi Anda dapat menarik lebih sedikit.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents/
{{PAYMENT_INTENT_ID}}
/capture
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount_to_capture=750

Opsional Batalkan otorisasi

Jika perlu membatalkan otorisasi, Anda dapat membatalkan PaymentIntent.

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

Selain menampilkan alamat tersimpan dan metode pembayaran sendiri untuk Pelanggan, Anda dapat menampilkan data mereka yang tersimpan di Link.

Jika pelanggan memiliki lebih dari satu metode pembayaran tersimpan, Stripe akan menampilkan tiga kartu yang terakhir digunakan dan disimpan ke Pelanggan selain metode pembayaran yang telah disimpan pelanggan pada Link.

Pratinjau data tersimpan pelanggan

Untuk mencapai hal ini, buat Kunci Efemeral dan kirimkan ke frontend Anda beserta identifikasi Pelanggan. Informasi tentang objek customer bersifat sensitif—Anda tidak dapat mengambilnya secara langsung di dalam Stripe.js. Kunci Efemeral memberikan akses sementara ke data customer.

Command Line
curl
Ruby
Python
PHP
Node.js
No results
curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-10-29.clover" \ -d "customer"="{{CUSTOMER_ID}}" \ curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "payment_method_types[]"="link" \ -d "payment_method_types[]"="card"

Di sisi client, ambil customerOptions dengan clientSecret.

(async () => { const response = await fetch('/secret'); const {clientSecret, customerOptions} = await response.json(); })

Kemudian, teruskan nilai customerOptions.ephemeralKey dan customerOptions.customer ke opsi customerOptions pada kelompok Elements. Anda juga harus meneruskan tanda beta elements_customers_beta_1 saat memuat instance Stripe.

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { useStripe, useElements, Elements, LinkAuthenticationElement, PaymentElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
, { apiVersion: '2025-10-29.clover', betas: ['elements_customers_beta_1'], }); const appearance = {/* ... */}; const loader = 'auto'; const CheckoutPage =({ clientSecret, customerOptions, }) => ( <Elements stripe={stripe} options={{ clientSecret, appearance, loader, customerOptions, }}> <CheckoutForm /> </Elements> );

OpsionalSimpan metode pembayaran Link
Sisi server
Sisi client

Anda dapat menyimpan metode pembayaran Link untuk pembayaran di luar sesi atau langganan di masa mendatang, tetapi tidak untuk pembayaran di dalam sesi di masa mendatang. Caranya, Anda harus melampirkannya pada Pelanggan. Buat objek customer bila pelanggan membuat akun pada bisnis Anda. Kemudian, tentukan customer saat membuat PaymentIntent Anda.

Saat pelanggan baru melakukan transaksi pertama dengan bisnis Anda, buat objek customer di Stripe untuk menyimpan datanya untuk digunakan di masa mendatang.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d customer=
"{{CUSTOMER_ID}}"
\ -d setup_future_usage=off_session

Di versi terbaru API, menentukan parameter automatic_payment_methods bersifat opsional karena Stripe mengaktifkan fungsionalitasnya secara default.

Saat Anda siap men-charge pelanggan lagi, gunakan customer dan menghasilkan identifikasi PaymentMethod untuk membuat PaymentIntent baru. Atur off_session ke true. Hal ini menyebabkan PaymentIntent mengirim kesalahan jika autentikasi diperlukan saat pelanggan Anda tidak aktif menggunakan situs atau aplikasi Anda.

Command Line
curl
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d amount=1099 \ -d currency=usd \ # In the latest version of the API, specifying the `automatic_payment_methods` parameter is optional because Stripe enables its functionality by default. -d "automatic_payment_methods[enabled]"=true \ -d customer="{{CUSTOMER_ID}}" \ -d payment_method="{{PAYMENT_METHOD_ID}}" \ -d return_url="https://example.com/order/123/complete" \ -d off_session=true \ -d confirm=true

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.
  • Lihat log perubahan kami.
  • Ada pertanyaan? Hubungi Bagian Penjualan.
  • LLM? Baca llms.txt.
  • Dijalankan oleh Markdoc