# Simpan detail pembayaran saat pembayaran Pelajari cara menerima pembayaran dan menyimpan detail pembayaran pelanggan Anda untuk pembelian mendatang. # Halaman yang di-hosting > This is a Halaman yang di-hosting for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=stripe-hosted. Gunakan [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) untuk integrasi minim kode cepat yang memungkinkan pelanggan Anda menyimpan detail pembayaran untuk pembelian mendatang. ## Siapkan Stripe [Sisi server] Pertama, [mendaftarlah](https://dashboard.stripe.com/register) untuk akun Stripe. Gunakan pustaka resmi kami untuk mengakses API Stripe dari aplikasi Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Buat pelanggan [Sisi server] Untuk menyiapkan kartu bagi pembayaran mendatang, Anda harus melampirkannya ke *Pelanggan* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Buat objek Customer bila pelanggan membuat akun pada bisnis Anda. Objek Customer memungkinkan penggunaan kembali metode pembayaran dan pelacakan ke beberapa pembayaran sekaligus. > #### Menggunakan API Akun v2 untuk mewakili pelanggan > > Jika integrasi Anda menggunakan [Akun yang dikonfigurasi pelanggan](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), ganti `Pelanggan` dan referensi peristiwa dalam contoh kode dengan referensi API Accounts v2 yang setara. Untuk informasi selengkapnya, lihat [Mewakili pelanggan dengan objek Akun](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Pembuatan yang berhasil mengembalikan objek [Customer](https://docs.stripe.com/api/customers/object.md). Anda dapat memeriksa objek untuk `id` pelanggan dan menyimpan nilai dalam database Anda untuk pengambilan nanti. Anda dapat menemukan pelanggan ini di halaman [Pelanggan](https://dashboard.stripe.com/customers) di Dashboard. ## Buat Sesi Checkout [Sisi client] [Sisi server] Tambahkan tombol checkout ke situs web Anda yang memanggil endpoint sisi server untuk membuat [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions/create.md). Anda juga dapat membuat Sesi Checkout untuk [pelanggan yang ada](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), sehingga memungkinkan Anda otomatis mengisi bidang Checkout dengan informasi kontak yang diketahui dan menyatukan riwayat pembelian Anda untuk pelanggan tersebut. ```html Buy cool new product
``` Sesi Checkout adalah representasi terprogram dari apa yang dilihat pelanggan Anda saat mereka dialihkan ke formulir pembayaran. Anda dapat mengonfigurasinya dengan opsi seperti: - [Mata anggaran](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) untuk di-charge - Mata uang untuk digunakan Anda harus mengisi `success_url` dengan nilai URL halaman di situs web Anda yang dikembalikan oleh Checkout kepada pelanggan Anda setelah mereka menyelesaikan pembayaran. > Sesi Checkout akan kedaluwarsa dalam waktu 24 jam setelah pembuatan secara default. Setelah membuat Sesi Checkout, alihkan pelanggan Anda ke [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) yang dikembalikan di respons. #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' dosession = client.v1.checkout.sessions.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', }) redirect session.url, 303 end ``` ### Metode pembayaran Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya. Anda dapat mengaktifkan atau menonaktifkan metode pembayaran individual di [Dashboard Stripe](https://dashboard.stripe.com/settings/payment_methods). Di Checkout, Stripe mengevaluasi mata uang dan batasan, lalu menyajikan metode pembayaran yang didukung secara dinamis kepada pelanggan. Untuk melihat cara metode pembayaran Anda ditampilkan kepada pelanggan, masukkan identifikasi transaksi atau tetapkan jumlah pesanan dan mata uang di Dashboard. Anda dapat mengaktifkan Apple Pay dan Google Pay di [pengaturan metode pembayaran](https://dashboard.stripe.com/settings/payment_methods). Secara default, Apple Pay diaktifkan dan Google Pay dinonaktifkan. Namun, dalam beberapa kasus Stripe memfilternya bahkan saat diaktifkan. Kami memfilter Google Pay jika Anda [mengaktifkan pajak otomatis](https://docs.stripe.com/tax/checkout.md) tanpa mengumpulkan alamat pengiriman. Halaman Checkout yang di-hosting Stripe tidak perlu perubahan integrasi untuk mengaktifkan Apple Pay atau Google Pay. Stripe menangani pembayaran ini dengan cara yang sama seperti pembayaran kartu lainnya. ### Konfirmasikan endpoint Anda Konfirmasi endpoint Anda dapat diakses dengan memulai server web (misalnya, `localhost:4242`) dan menjalankan perintah berikut: ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` Anda akan melihat respons di terminal seperti ini: ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Verifikasi integrasi Anda Anda sekarang telah memiliki tombol checkout yang mengalihkan pelanggan ke Stripe Checkout. 1. Klik tombol checkout. 1. Anda akan dialihkan ke formulir pembayaran Stripe Checkout. Jika integrasi Anda tidak berhasil: 1. Buka tab Network di alat pengembang browser Anda. 1. Klik tombol checkout dan konfirmasikan dengan mengirim permintaan XHR ke endpoint sisi server Anda (`POST /create-checkout-session`). 1. Verifikasi bahwa permintaan mengembalikan status 200. 1. Gunakan `console.log(session)` di dalam listener klik tombol Anda untuk mengonfirmasi bahwa data yang benar dikembalikan. Untuk informasi selengkapnya tentang cara melakukan konfigurasi dan mencoba integrasi Checkout yang di-hosting, lihat [Menerima Pembayaran](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Simpan metode pembayaran [Sisi server] Setelah menyiapkan integrasi Checkout yang di-hosting, pilih konfigurasi untuk integrasi Anda guna menyimpan metode pembayaran yang digunakan oleh pelanggan. Secara default, metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan Checkout tidak tersedia untuk digunakan di masa mendatang. ### Simpan metode pembayaran untuk men-charge di luar sesi Anda dapat mengatur Checkout untuk menyimpan metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan meneruskan argumen [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Ini berguna jika Anda perlu mencatat metode pembayaran secara on-file untuk digunakan sebagai biaya di masa mendatang, seperti biaya pembatalan atau biaya ketidakhadiran. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Jika Anda menggunakan Checkout `berlangganan` , Stripe secara otomatis menyimpan metode pembayaran untuk menagihnya untuk pembayaran berikutnya. Metode pembayaran kartu yang disimpan untuk pelanggan menggunakan salah satu `setup_future_usage` atau `berlangganan` tidak muncul untuk pembelian kembali di Checkout (selengkapnya tentang ini di bawah). Kami merekomendasikan untuk menggunakan [teks khusus](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) untuk menautkan ke ketentuan yang relevan terkait penggunaan informasi pembayaran yang disimpan. > Hukum privasi global sangat rumit dan bervariasi. Kami merekomendasikan Anda untuk menghubungi tim hukum dan privasi sebelum mengimplementasikan [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) karena hal ini dapat berimplikasi pada kerangka kerja kepatuhan privasi yang sudah ada. Lihat [panduan yang dikeluarkan oleh European Protection Board](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) untuk mempelajari selengkapnya tentang menyimpan detail pembayaran. ### Simpan metode pembayaran untuk mengisinya terlebih dahulu di Checkout Secara default, Checkout menggunakan [Link](https://docs.stripe.com/payments/link/checkout-link.md) untuk memberikan opsi kepada pelanggan Anda agar dapat menyimpan dan menggunakan kembali informasi pembayaran mereka dengan aman. Jika Anda lebih suka mengelola metode pembayaran sendiri, gunakan [ saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) saat membuat Sesi Checkout untuk memungkinkan pelanggan menyimpan metode pembayaran mereka untuk pembelian berikutnya di Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Meneruskan parameter ini dalam mode [pembayaran](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) atau [langganan](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) menampilkan kotak centang opsional agar pelanggan dapat secara eksplisit menyimpan metode pembayarannya untuk pembelian mendatang. Bila pelanggan mencentang kotak ini, Checkout akan menyimpan metode pembayaran dengan [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout menggunakan parameter ini untuk menentukan jika metode pembayaran dapat diisikan terlebih dahulu pada pembelian mendatang. Ketika menggunakan `saved_payment_method_options.payment_method_save`, Anda tidak perlu meneruskan `setup_future_usage` untuk menyimpan metode pembayaran. > #### Menggunakan API Akun v2 untuk mewakili pelanggan > > API Akun v2 adalah GA untuk pengguna Connect, dan dalam pratinjau publik untuk pengguna Stripe lainnya. Semua pengguna Stripe dapat mengaktifkan Akun v2 [di Dashboard mereka](https://dashboard.stripe.com/settings/connect/platform-setup). Namun, saat melakukan panggilan ke API Akun v2, pengguna pratinjau harus [menentukan versi pratinjau](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Untuk sebagian besar contoh penggunaan, sebaiknya Anda [memodelkan pelanggan Anda sebagai objek Account yang dikonfigurasi pelanggan](https://docs.stripe.com/connect/use-accounts-as-customers.md) alih-alih menggunakan [Customer](https://docs.stripe.com/api/customers.md) objek. Menggunakan [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) memerlukan objek untuk mewakili pelanggan Anda (baik yang dikonfigurasi pelanggan `Akun` atau `Pelanggan`). Untuk menyimpan pelanggan baru, atur Sesi Checkout [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) untuk `selalu`. Jika tidak, sesi tidak menyimpan pelanggan atau metode pembayaran. Jika `payment_method_save` tidak diteruskan atau jika pelanggan tidak setuju untuk menyimpan metode pembayaran, Checkout masih menyimpan metode pembayaran yang dibuat dalam mode `subscription` atau menggunakan `setup_future_usage`. Metode pembayaran ini memiliki nilai `allow_redisplay` `limited`, yang mencegahnya diisi terlebih dahulu untuk pembelian kembali serta memungkinkan Anda mematuhi peraturan jaringan kartu dan peraturan proteksi data. Pelajari cara [mengubah perilaku default yang diaktifkan oleh mode ini](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) dan cara mengubah atau mengesampingkan perilaku `allow_redisplay`. > Anda dapat menggunakan Checkout untuk menyimpan kartu dan metode pembayaran lain untuk men-charge di luar sesi, tetapi Checkout hanya mengisikan kartu tersimpan secara otomatis. Pelajari cara [mengisikan otomatis kartu tersimpan](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Untuk menyimpan metode pembayaran tanpa pembayaran awal, [gunakan Checkout dalam mode penyiapan](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Izinkan pelanggan menghapus metode pembayaran tersimpan Untuk mengizinkan pelanggan Anda menghapus metode pembayaran tersimpan sehingga tidak muncul kembali bagi pembayaran mendatang, gunakan [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) ketika membuat Sesi Checkout. #### Akun v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` #### Pelanggan v1 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Pelanggan tidak dapat menghapus metode pembayaran jika terikat dengan langganan aktif dan pelanggan tidak memiliki metode pembayaran default yang tersimpan untuk pembayaran langganan serta invoice. # Halaman tersemat > This is a Halaman tersemat for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=embedded-form. Gunakan [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) untuk menyematkan formulir pembayaran siap-rakit pada situs web Anda yang memungkinkan pelanggan menyimpan detail pembayaran untuk pembelian mendatang. ## Siapkan Stripe [Sisi server] Pertama, [mendaftarlah](https://dashboard.stripe.com/register) untuk akun Stripe. Gunakan pustaka resmi kami untuk mengakses API Stripe dari aplikasi Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Buat pelanggan [Sisi server] Untuk menyiapkan kartu bagi pembayaran mendatang, Anda harus melampirkannya ke *Pelanggan* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Buat objek Customer bila pelanggan membuat akun pada bisnis Anda. Objek Customer memungkinkan penggunaan kembali metode pembayaran dan pelacakan ke beberapa pembayaran sekaligus. > #### Menggunakan API Akun v2 untuk mewakili pelanggan > > Jika integrasi Anda menggunakan [Akun yang dikonfigurasi pelanggan](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), ganti `Pelanggan` dan referensi peristiwa dalam contoh kode dengan referensi API Accounts v2 yang setara. Untuk informasi selengkapnya, lihat [Mewakili pelanggan dengan objek Akun](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Pembuatan yang berhasil mengembalikan objek [Customer](https://docs.stripe.com/api/customers/object.md). Anda dapat memeriksa objek untuk `id` pelanggan dan menyimpan nilai dalam database Anda untuk pengambilan nanti. Anda dapat menemukan pelanggan ini di halaman [Pelanggan](https://dashboard.stripe.com/customers) di Dashboard. ## Buat Sesi Checkout [Sisi server] Dari server Anda, buatlah Sesi Checkout** dan atur [ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) ke `embedded_page`. Anda dapat mengonfigurasi [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions/create.md) dengan [mata anggaran](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) untuk disertakan serta opsi seperti [mata uang](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency). Anda juga dapat membuat Sesi Checkout untuk [pelanggan yang ada](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), sehingga memungkinkan Anda otomatis mengisi bidang Checkout dengan informasi kontak yang diketahui dan menyatukan riwayat pembelian Anda untuk pelanggan tersebut. Untuk mengembalikan pelanggan ke halaman custom yang Anda hosting pada situs web, tentukan URL halaman tersebut di parameter [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Sertakan variabel templat `{CHECKOUT_SESSION_ID}` di URL untuk mengambil status sesi di halaman pengembalian. Checkout secara otomatis menggantikan variabel dengan identifikasi Sesi Checkout sebelum pengalihan. Baca lebih lanjut tentang [cara mengonfigurasi halaman pengembalian](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) dan opsi lain untuk [menyesuaikan perilaku pengalihan](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form). Setelah Anda membuat Sesi Checkout, gunakan `client_secret` yang dikembalikan sebagai respons untuk [memasang Checkout](https://docs.stripe.com/payments/checkout/save-during-payment.md#mount-checkout). #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' do session = client.v1.checkout.sessions.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment',ui_mode: 'embedded_page', return_url: 'https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}' }) {clientSecret: session.client_secret}.to_json end ``` ## Pasang Checkout [Sisi client] [Sisi server] #### HTML+JS Checkout tersedia sebagai bagian dari [Stripe.js](https://docs.stripe.com/js.md). Sertakan skrip Stripe.js di halaman Anda dengan menambahkannya ke head file HTML Anda. Selanjutnya, buat node DOM kosong (kontainer) yang akan digunakan untuk pemasangan. ```html
``` Inisialisasikan Stripe.js dengan kunci API yang dapat diterbitkan. Buat fungsi `fetchClientSecret` asinkron yang melakukan permintaan ke server Anda untuk membuat Sesi Checkout dan mengambil client secret. Teruskan fungsi ini ke `options` saat Anda membuat instance Checkout: ```javascript // Initialize Stripe.js const stripe = Stripe('<>'); initialize(); // Fetch Checkout Session and retrieve the client secret async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Initialize Checkout const checkout = await stripe.createEmbeddedCheckoutPage({ fetchClientSecret, }); // Mount Checkout checkout.mount('#checkout'); } ``` #### React Instal [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) dan loader Stripe.js dari npm: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` Untuk menggunakan komponen Checkout Tersemat, buat `EmbeddedCheckoutProvider`. Panggil `loadStripe` dengan kunci API Anda yang dapat diterbitkan dan berikan `Promise` yang dikembalikan ke penyedia. Buat fungsi `fetchClientSecret` asinkron yang melakukan permintaan ke server Anda untuk membuat Sesi Checkout dan mengambil client secret. Teruskan fungsi ini ke prop `options` yang diterima oleh penyedia. ```jsx import * as React from 'react'; import {loadStripe} from '@stripe/stripe-js'; import { EmbeddedCheckoutProvider, EmbeddedCheckout } from '@stripe/react-stripe-js'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('pk_test_123'); const App = () => { const fetchClientSecret = React.useCallback(() => { // Create a Checkout Session return fetch("/create-checkout-session", { method: "POST", }) .then((res) => res.json()) .then((data) => data.clientSecret); }, []); const options = {fetchClientSecret}; return (
) } ``` Checkout ditampilkan di iframe yang mengirimkan informasi pembayaran dengan aman ke Stripe melalui koneksi HTTPS. > Hindari penempatan Checkout dalam iframe lain karena sejumlah metode pembayaran memerlukan pengalihan ke halaman lain untuk konfirmasi pembayaran. ## Simpan metode pembayaran [Sisi server] Setelah menyiapkan integrasi Checkout tersemat, pilih konfigurasi untuk integrasi Anda guna menyimpan metode pembayaran yang digunakan oleh pelanggan. Secara default, metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan Checkout tidak tersedia untuk digunakan di masa mendatang. ### Simpan metode pembayaran untuk men-charge di luar sesi Anda dapat mengatur Checkout untuk menyimpan metode pembayaran yang digunakan untuk melakukan pembayaran satu kali dengan meneruskan argumen [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Ini berguna jika Anda perlu mencatat metode pembayaran secara on-file untuk digunakan sebagai biaya di masa mendatang, seperti biaya pembatalan atau biaya ketidakhadiran. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Jika Anda menggunakan Checkout `berlangganan` , Stripe secara otomatis menyimpan metode pembayaran untuk menagihnya untuk pembayaran berikutnya. Metode pembayaran kartu yang disimpan untuk pelanggan menggunakan salah satu `setup_future_usage` atau `berlangganan` tidak muncul untuk pembelian kembali di Checkout (selengkapnya tentang ini di bawah). Kami merekomendasikan untuk menggunakan [teks khusus](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) untuk menautkan ke ketentuan yang relevan terkait penggunaan informasi pembayaran yang disimpan. > Hukum privasi global sangat rumit dan bervariasi. Kami merekomendasikan Anda untuk menghubungi tim hukum dan privasi sebelum mengimplementasikan [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) karena hal ini dapat berimplikasi pada kerangka kerja kepatuhan privasi yang sudah ada. Lihat [panduan yang dikeluarkan oleh European Protection Board](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) untuk mempelajari selengkapnya tentang menyimpan detail pembayaran. ### Simpan metode pembayaran untuk mengisinya terlebih dahulu di Checkout Secara default, Checkout menggunakan [Link](https://docs.stripe.com/payments/link/checkout-link.md) untuk memberikan opsi kepada pelanggan Anda agar dapat menyimpan dan menggunakan kembali informasi pembayaran mereka dengan aman. Jika Anda lebih suka mengelola metode pembayaran sendiri, gunakan [ saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) saat membuat Sesi Checkout untuk memungkinkan pelanggan menyimpan metode pembayaran mereka untuk pembelian berikutnya di Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Meneruskan parameter ini dalam mode [pembayaran](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) atau [langganan](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) menampilkan kotak centang opsional agar pelanggan dapat secara eksplisit menyimpan metode pembayarannya untuk pembelian mendatang. Bila pelanggan mencentang kotak ini, Checkout akan menyimpan metode pembayaran dengan [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout menggunakan parameter ini untuk menentukan jika metode pembayaran dapat diisikan terlebih dahulu pada pembelian mendatang. Ketika menggunakan `saved_payment_method_options.payment_method_save`, Anda tidak perlu meneruskan `setup_future_usage` untuk menyimpan metode pembayaran. > #### Menggunakan API Akun v2 untuk mewakili pelanggan > > API Akun v2 adalah GA untuk pengguna Connect, dan dalam pratinjau publik untuk pengguna Stripe lainnya. Semua pengguna Stripe dapat mengaktifkan Akun v2 [di Dashboard mereka](https://dashboard.stripe.com/settings/connect/platform-setup). Namun, saat melakukan panggilan ke API Akun v2, pengguna pratinjau harus [menentukan versi pratinjau](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Untuk sebagian besar contoh penggunaan, sebaiknya Anda [memodelkan pelanggan Anda sebagai objek Account yang dikonfigurasi pelanggan](https://docs.stripe.com/connect/use-accounts-as-customers.md) alih-alih menggunakan [Customer](https://docs.stripe.com/api/customers.md) objek. Menggunakan [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) memerlukan objek untuk mewakili pelanggan Anda (baik yang dikonfigurasi pelanggan `Akun` atau `Pelanggan`). Untuk menyimpan pelanggan baru, atur Sesi Checkout [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) untuk `selalu`. Jika tidak, sesi tidak menyimpan pelanggan atau metode pembayaran. Jika `payment_method_save` tidak diteruskan atau jika pelanggan tidak setuju untuk menyimpan metode pembayaran, Checkout masih menyimpan metode pembayaran yang dibuat dalam mode `subscription` atau menggunakan `setup_future_usage`. Metode pembayaran ini memiliki nilai `allow_redisplay` `limited`, yang mencegahnya diisi terlebih dahulu untuk pembelian kembali serta memungkinkan Anda mematuhi peraturan jaringan kartu dan peraturan proteksi data. Pelajari cara [mengubah perilaku default yang diaktifkan oleh mode ini](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) dan cara mengubah atau mengesampingkan perilaku `allow_redisplay`. > Anda dapat menggunakan Checkout untuk menyimpan kartu dan metode pembayaran lain untuk men-charge di luar sesi, tetapi Checkout hanya mengisikan kartu tersimpan secara otomatis. Pelajari cara [mengisikan otomatis kartu tersimpan](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Untuk menyimpan metode pembayaran tanpa pembayaran awal, [gunakan Checkout dalam mode penyiapan](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Izinkan pelanggan menghapus metode pembayaran tersimpan Untuk mengizinkan pelanggan Anda menghapus metode pembayaran tersimpan sehingga tidak muncul kembali bagi pembayaran mendatang, gunakan [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) ketika membuat Sesi Checkout. #### Akun v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_ID}}" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` #### Pelanggan v1 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Pelanggan tidak dapat menghapus metode pembayaran jika terikat dengan langganan aktif dan pelanggan tidak memiliki metode pembayaran default yang tersimpan untuk pembayaran langganan serta invoice.