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
Sumber daya pengembang
Gambaran UmumLihat semua produk
Mulai membangun
Mulai mengembangkan
    Siapkan lingkungan pengembangan Anda
    Kirim permintaan API pertama Anda
    Terima pembayaran
    Bangun dan coba fitur baru
    Daftar periksa menjadi live
Tentang API
Membangun dengan LLM
Gunakan Stripe tanpa kode
Siapkan Stripe
Buat akun
Dashboard Stripe
Migrasikan ke Stripe
BerandaMulaiStart developing

Terima pembayaran

Terima pembayaran dengan aman secara online.

Buat formulir pembayaran atau gunakan halaman checkout yang telah dibuat sebelumnya untuk mulai menerima pembayaran online.

Integrasikan UI pembayaran siap-rakit Stripe ke dalam checkout aplikasi iOS Anda dengan kelas PaymentSheet. Lihat sampel integrasi kami di GitHub.

Siapkan Stripe
Sisi server
Sisi client

Pertama, Anda membutuhkan akun Stripe. Daftar sekarang.

Sisi server

Integrasi ini memerlukan endpoint di server Anda yang berinteraksi dengan Stripe API. Gunakan pustaka resmi kami untuk akses ke Stripe API dari server 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'

Sisi client

Stripe iOS SDK adalah sumber terbuka, yang didokumentasikan lengkap, dan kompatibel dengan aplikasi yang mendukung iOS 13 ke atas.

Untuk menginstal SDK, ikuti langkah-langkah ini:

  1. Di Xcode, pilih File > Tambahkan Dependensi Paket… dan masukkan https://github.com/stripe/stripe-ios-spm sebagai URL repositori.
  2. Pilih nomor versi terbaru dari halaman rilis kami.
  3. Tambahkan produk StripePaymentSheet ke target aplikasi Anda.

Catatan

Untuk detail mengenai rilis SDK terbaru dan versi sebelumnya, lihat halaman Rilis di GitHub. Untuk menerima notifikasi bila rilis baru diterbitkan, lihat rilis untuk repositori.

Aktifkan metode pembayaran

Lihat pengaturan metode pembayaran dan aktifkan metode pembayaran yang ingin Anda dukung. Anda membutuhkan setidaknya satu metode pembayaran yang diaktifkan untuk membuat PaymentIntent.

Secara default, Stripe mengaktifkan kartu dan metode pembayaran umum lainnya yang dapat membantu menjangkau lebih banyak pelanggan, tetapi sebaiknya aktifkan metode pembayaran tambahan yang relevan untuk bisnis dan pelanggan Anda. Lihat Dukungan metode pembayaran untuk dukungan produk dan metode pembayaran, dan halaman skema biaya kami untuk mengetahui biayanya.

Tambahkan endpoint
Sisi server

Catatan

Untuk menampilkan PaymentSheet sebelum membuat PaymentIntent, lihat Kumpulkan detail pembayaran sebelum membuat Intent.

Integrasi ini menggunakan tiga objek API Stripe:

  1. PaymentIntent: Stripe menggunakannya untuk mewakili maksud Anda menagih pembayaran dari pelanggan, yang melacak upaya charge dan perubahan status pembayaran selama proses.

  2. (Opsional) Pelanggan: Untuk menyiapkan metode pembayaran bagi pembayaran mendatang, Anda harus melampirkannya ke Pelanggan. Buat objek Pelanggan saat pelanggan membuat akun pada bisnis Anda. Jika pelanggan melakukan pembayaran sebagai tamu, Anda dapat membuat objek Pelanggan sebelum pembayaran dan mengaitkannya dengan representasi internal Anda sendiri dari akun pelanggan nanti.

  3. (Opsional) Kunci Efemeral Pelanggan: Informasi mengenai objek Pelanggan bersifat sensitif, dan tidak dapat diambil langsung dari aplikasi. Kunci Efemeral memberikan akses sementara SDK kepada Pelanggan.

Catatan

Jika belum pernah menyimpan kartu ke Pelanggan dan tidak mengizinkan Pelanggan yang kembali untuk menggunakan kembali kartu yang disimpan, Anda dapat menghilangkan objek Pelanggan dan Kunci Efemeral Pelanggan dari integrasi.

Karena alasan keamanan, aplikasi Anda tidak dapat membuat objek ini. Sebagai gantinya, tambahkan endpoint di server Anda yang:

  1. Mengambil Pelanggan, atau membuat yang baru.
  2. Membuat Kunci Efemeral untuk Pelanggan.
  3. Membuat PaymentIntent dengan amount, currency, dan customer. Secara opsional, Anda juga dapat menyertakan parameter automatic_payment_methods. Stripe mengaktifkan fungsinya secara default di versi terbaru API.
  4. Mengembalikan client secret Payment Intent, secret Kunci Efemeral, id Pelanggan, dan kunci yang dapat dipublikasikan ke aplikasi Anda.

Metode pembayaran yang ditampilkan kepada pelanggan selama proses checkout juga disertakan dalam PaymentIntent. Anda dapat mengizinkan Stripe menarik metode pembayaran dari pengaturan Dashboard atau Anda dapat mencantumkannya secara manual. Terlepas dari opsi yang Anda pilih, ketahui mata uang yang diteruskan di PaymentIntent memfilter metode pembayaran yang ditampilkan kepada pelanggan. Misalnya, jika Anda meneruskan eur pada PaymentIntent dan mengaktifkan OXXO di Dashboard, OXXO tidak akan ditampilkan kepada pelanggan karena OXXO tidak mendukung pembayaran eur.

Kecuali jika integrasi Anda memerlukan opsi berbasis kode untuk menawarkan metode pembayaran, Stripe merekomendasikan opsi otomatis. Hal ini karena Stripe mengevaluasi mata uang, pembatasan metode pembayaran, dan parameter lainnya untuk menentukan daftar metode pembayaran yang didukung. Metode pembayaran yang meningkatkan konversi serta yang paling relevan dengan mata uang dan lokasi pelanggan akan diprioritaskan.

Catatan

Anda dapat melakukan fork dan menjalankan implementasi endpoint ini CodeSandbox untuk keperluan pengujian.

Anda dapat mengelola metode pembayaran dari Dashboard. Stripe menangani pengembalian metode pembayaran yang memenuhi syarat berdasarkan faktor-faktor seperti jumlah transaksi, mata uang, dan alur pembayaran. PaymentIntent dibuat menggunakan metode pembayaran yang Anda konfigurasikan di Dashboard. Jika tidak ingin menggunakan Dashboard atau jika ingin menentukan metode pembayaran secara manual, Anda dapat mencantumkannya menggunakan atribut payment_method_types.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-08-27.basil" \ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="eur" \ # 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 \

Kumpulkan detail pembayaran
Sisi client

Untuk menampilkan Payment Element seluler pada layar checkout, pastikan Anda:

  • Tampilkan produk yang dibeli pelanggan beserta jumlah totalnya
  • Gunakan Address Element untuk mengumpulkan informasi pengiriman yang diperlukan dari pelanggan
  • Tambahkan tombol checkout untuk menampilkan UI Stripe

Di layar checkout aplikasi Anda, ambil client secret Intent Payment, rahasia Kunci Efemeral, identifikasi Pelanggan, dan kunci yang dapat dipublikasikan dari endpoint yang Anda buat di langkah sebelumnya. Atur kunci yang dapat diterbitkan menggunakan StripeAPI.shared dan inisialisasikan PaymentSheet.

import UIKit import StripePaymentSheet class CheckoutViewController: UIViewController { @IBOutlet weak var checkoutButton: UIButton! var paymentSheet: PaymentSheet? let backendCheckoutUrl = URL(string: "Your backend endpoint/payment-sheet")! // Your backend endpoint override func viewDidLoad() { super.viewDidLoad() checkoutButton.addTarget(self, action: #selector(didTapCheckoutButton), for: .touchUpInside) checkoutButton.isEnabled = false // MARK: Fetch the PaymentIntent client secret, Ephemeral Key secret, Customer ID, and publishable key var request = URLRequest(url: backendCheckoutUrl) request.httpMethod = "POST" let task = URLSession.shared.dataTask(with: request, completionHandler: { [weak self] (data, response, error) in guard let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any], let customerId = json["customer"] as? String, let customerEphemeralKeySecret = json["ephemeralKey"] as? String, let paymentIntentClientSecret = json["paymentIntent"] as? String, let publishableKey = json["publishableKey"] as? String, let self = self else { // Handle error return } STPAPIClient.shared.publishableKey = publishableKey // MARK: Create a PaymentSheet instance var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "Example, Inc." configuration.customer = .init(id: customerId, ephemeralKeySecret: customerEphemeralKeySecret) // Set `allowsDelayedPaymentMethods` to true if your business handles // delayed notification payment methods like US bank accounts. configuration.allowsDelayedPaymentMethods = true self.paymentSheet = PaymentSheet(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) DispatchQueue.main.async { self.checkoutButton.isEnabled = true } }) task.resume() } }

Bila pelanggan mengetuk tombol Checkout, panggil present untuk menyajikan PaymentSheet. Setelah pelanggan menyelesaikan pembayaran, Stripe akan menutup PaymentSheet dan memanggil blok penyelesaian dengan PaymentSheetResult.

@objc func didTapCheckoutButton() { // MARK: Start the checkout process paymentSheet?.present(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Your order is confirmed") case .canceled: print("Canceled!") case .failed(let error): print("Payment failed: \(error)") } } }

Jika PaymentSheetResult adalah .completed, informasikan pengguna (misalnya, dengan menampilkan layar konfirmasi pesanan).

Mengatur allowsDelayedPaymentMethods ke true memungkinkan metode pembayaran pemberitahuan tertunda seperti rekening bank AS. Untuk metode pembayaran ini, status pembayaran finalnya tidak diketahui bila PaymentSheet selesai, dan berhasil atau gagal sebagai gantinya nanti. Jika Anda mendukung jenis pembayaran ini, informasikan kepada pelanggan bahwa pesanannya telah dikonfirmasi dan hanya memenuhi pesanan (misalnya, mengirim produknya) bila pembayaran berhasil.

Siapkan URL kembali
Sisi client

Pelanggan dapat keluar dari aplikasi Anda untuk melakukan autentikasi (misalnya, di Safari atau aplikasi perbankannya). Untuk mengizinkan pelanggan kembali secara otomatis ke aplikasi Anda setelah mengautentikasi, konfigurasikan skema URL custom dan siapkan delegasi aplikasi Anda untuk meneruskan URL ke SDK. Stripe tidak mendukung tautan universal.

SceneDelegate.swift
Swift
No results
// This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } let stripeHandled = StripeAPI.handleURLCallback(with: url) if (!stripeHandled) { // This was not a Stripe url – handle the URL normally as you would } }

Selain itu, atur returnURL pada objek PaymentSheet.Configuration ke URL untuk aplikasi Anda.

var configuration = PaymentSheet.Configuration() configuration.returnURL = "your-app://stripe-redirect"

Tangani kejadian pascapembayaran
Sisi server

Stripe mengirim kejadian payment_intent.succeeded ketika selesai pembayaran. Gunakan alat webhook Dashboard atau ikuti panduan 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.

Dengarkan kejadian ini daripada menunggu callback dari client. Di client, pelanggan dapat menutup jendela browser atau keluar dari aplikasi sebelum callback mengeksekusi, dan klien jahat dapat memanipulasi respons. Penyiapan integrasi untuk mendengarkan kejadian asinkron memungkinkan Anda menyetujui berbagai tipe metode pembayaran dengan satu integrasi tunggal.

Selain menangani kejadian payment_intent.succeeded, kami merekomendasikan penanganan kejadian ini yang lain ketika menagih pembayaran dengan Payment Element:

KejadianKeteranganTindakan
payment_intent.succeededDikirim bila pelanggan berhasil menyelesaikan pembayaran.Kirimi pelanggan konfirmasi pesanan dan penuhi pesanan mereka.
payment_intent. pemrosesanDikirim bila pelanggan berhasil memprakarsai pembayaran, tetapi pembayaran itu belum selesai. Kejadian ini paling umum dikirim saat pelanggan memprakarsai debit bank. Kejadian diikuti dengan kejadian payment_intent.succeeded atau payment_intent.payment_failed di masa mendatang.Kirimi pelanggan konfirmasi pesanan yang menunjukkan bahwa pembayaran mereka menunggu penyelesaian. Untuk barang digital, Anda mungkin ingin memenuhi pesanan sebelum menunggu pembayaran selesai.
payment_intent.payment_failedDikirim bila pelanggan mencoba melakukan pembayaran, tetapi pembayaran itu gagal.Jika transisi pembayaran dilakukan dari processing menjadi payment_failed, tawarkan upaya lain untuk membayar kepada pelanggan.

Coba integrasi

Nomor kartuSkenarioCara mencoba
Pembayaran kartu berhasil dan tidak memerlukan autentikasi.Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos.
Pembayaran kartu memerlukan autentikasi.Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos.
Kartu ini ditolak dengan kode penolakan seperti insufficient_funds.Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos.
Kartu UnionPay memiliki panjang variabel 13–19 angka.Isilah formulir kartu kredit menggunakan nomor kartu kredit dengan sembarang tanggal kedaluwarsa, CVC, dan kode pos.

Lihat Pengujian untuk mendapatkan informasi tambahan untuk menguji integrasi Anda.

OpsionalAktifkan Link

Aktifkan Link di pengaturan Metode Pembayaran untuk memungkinkan pelanggan Anda menyimpan dan menggunakan kembali informasi pembayaran mereka dengan aman menggunakan tombol checkout ekspres sekali klik dari Link.

Teruskan email pelanggan Anda ke Mobile Payment Element

Link melakukan autentikasi pelanggan menggunakan alamat emailnya. Stripe merekomendasikan pengisian informasi otomatis sebanyak mungkin untuk mengefisienkan proses checkout.

Untuk mengisikan otomatis nama pelanggan, alamat email, dan nomor telepon, berikan defaultBillingDetails dengan informasi pelanggan Anda setelah menginisialisasi PaymentSheet.Configuration.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.name = "Jenny Rosen" configuration.defaultBillingDetails.email = "jenny.rosen@example.com" configuration.defaultBillingDetails.phone = "888-888-8888"

OpsionalAktifkan Apple Pay

Catatan

Jika layar checkout Anda memiliki Tombol Apple Pay khusus, ikuti panduan Apple Pay dan gunakan ApplePayContext untuk mengumpulkan pembayaran dari tombol Apple Pay. Anda dapat menggunakan PaymentSheet untuk menangani tipe metode pembayaran lainnya.

Mendaftar Apple Merchant ID

Dapatkan Apple Merchant ID dengan mendaftar identifier baru di situs web Apple Developer.

Isi formulir dengan keterangan dan identifier. Keterangan adalah untuk catatan Anda sendiri dan nanti dapat diubah. Stripe merekomendasikan penggunaan nama aplikasi Anda sebagai identifier (misalnya, merchant.com.{{YOUR_APP_NAME}}).

Buat sertifikat Apple Pay yang baru

Buat sertifikat untuk aplikasi Anda guna mengenkripsi data pembayaran.

Buka Pengaturan Sertifikat iOS di Dashboard, klik Tambahkan aplikasi baru, dan ikuti panduannya.

Unduh file Permintaan Penandatanganan Sertifikat (CSR) untuk mendapatkan sertifikat aman dari Apple yang memungkinkan Anda menggunakan Apple Pay.

Satu file CSR harus digunakan untuk menerbitkan tepat satu sertifikat. Jika Anda mengganti Apple Merchant ID, Anda harus membuka Pengaturan Sertifikat iOS di Dashboard untuk mendapatkan CSR dan sertifikat baru.

Integrasikan dengan Xcode

Tambahkan kemampuan Apple Pay ke aplikasi Anda. Di Xcode, buka pengaturan proyek, klik tab Signing & Capabilities, dan tambahkan kemampuan Apple Pay. Pada saat ini Anda mungkin diminta untuk masuk ke akun pengembang. Pilih identifikasi merchant yang Anda buat sebelumnya, dan aplikasi Anda siap menyetujui Apple Pay.

Aktifkan kemampuan Apple Pay di Xcode

Tambahkan Apple Pay

Untuk menambahkan Apple Pay ke PaymentSheet, atur applePay setelah memprakarsai PaymentSheet.Configuration dengan identitas merchant Apple dan kode negara bisnis Anda.

var configuration = PaymentSheet.Configuration() configuration.applePay = .init( merchantId: "merchant.com.your_app_name", merchantCountryCode: "US" )

Pelacakan pesanan

Untuk menambahkan informasi pelacakan pesanan di iOS 16 atau yang lebih baru, konfigurasikan authorizationResultHandler di PaymentSheet.ApplePayConfiguration.Handlers Anda. Stripe memanggil implementasi Anda setelah pembayaran selesai, tetapi sebelum iOS menutup lembar Apple Pay.

Dalam implementasi authorizationResultHandler, ambil detail pesanan dari server untuk pesanan yang sudah selesai. Tambahkan detail ke PKPaymentAuthorizationResult yang disediakan dan panggil handler penyelesaian yang disediakan.

Untuk mempelajari selengkapnya tentang pelacakan pesanan, lihat dokumentasi Pesanan Dompet Apple.

let customHandlers = PaymentSheet.ApplePayConfiguration.Handlers( authorizationResultHandler: { result, completion in // Fetch the order details from your service MyAPIClient.shared.fetchOrderDetails(orderID: orderID) { myOrderDetails result.orderDetails = PKPaymentOrderDetails( orderTypeIdentifier: myOrderDetails.orderTypeIdentifier, // "com.myapp.order" orderIdentifier: myOrderDetails.orderIdentifier, // "ABC123-AAAA-1111" webServiceURL: myOrderDetails.webServiceURL, // "https://my-backend.example.com/apple-order-tracking-backend" authenticationToken: myOrderDetails.authenticationToken) // "abc123" // Call the completion block on the main queue with your modified PKPaymentAuthorizationResult completion(result) } } ) var configuration = PaymentSheet.Configuration() configuration.applePay = .init(merchantId: "merchant.com.your_app_name", merchantCountryCode: "US", customHandlers: customHandlers)

OpsionalAktifkan pemindaian kartu

Untuk mengaktifkan dukungan pemindaian kartu, atur NSCameraUsageDescription (Privasi - Keterangan Penggunaan Kamera) di Info.plist aplikasi Anda, dan berikan alasan untuk mengakses kamera (misalnya, “Untuk memindai kartu”). Perangkat dengan iOS 13 atau yang lebih tinggi mendukung pemindaian kartu.

OpsionalAktifkan pembayaran ACH

Untuk mengaktifkan pembayaran debit ACH, sertakan StripeFinancialConnections sebagai dependensi bagi aplikasi Anda.

Stripe iOS SDK adalah sumber terbuka, yang didokumentasikan lengkap, dan kompatibel dengan aplikasi yang mendukung iOS 13 ke atas.

Untuk menginstal SDK, ikuti langkah-langkah ini:

  1. Di Xcode, pilih File > Tambahkan Dependensi Paket… dan masukkan https://github.com/stripe/stripe-ios-spm sebagai URL repositori.
  2. Pilih nomor versi terbaru dari halaman rilis kami.
  3. Tambahkan produk StripeFinancialConnections ke target aplikasi Anda.

Catatan

Untuk detail mengenai rilis SDK terbaru dan versi sebelumnya, lihat halaman Rilis di GitHub. Untuk menerima notifikasi bila rilis baru diterbitkan, lihat rilis untuk repositori.

OpsionalSesuaikan lembaran

Semua penyesuaian dikonfigurasi melalui objek PaymentSheet.Configuration.

Penampilan

Sesuaikan warna, font, dan lainnya agar sesuai dengan tampilan dan nuansa aplikasi Anda dengan menggunakan appearance API.

Tata letak metode pembayaran

Konfigurasikan tata letak metode pembayaran di lembaran menggunakan paymentMethodLayout. Anda dapat menampilkannya secara horizontal, vertikal, atau membiarkan Stripe mengoptimalkan tata letak secara otomatis.

var configuration = PaymentSheet.Configuration() configuration.paymentMethodLayout = .automatic

Kumpulkan alamat pengguna

Kumpulkan alamat tagihan atau pengiriman lokal dan internasional dari pelanggan Anda menggunakan Address Element.

Nama tampilan merchant

Tentukan nama bisnis yang dilihat pelanggan dengan mengatur merchantDisplayName. Secara default, ini adalah nama aplikasi Anda.

var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "My app, Inc."

Mode gelap

PaymentSheet secara otomatis beradaptasi dengan pengaturan penampilan skala-sistem pengguna (mode terang dan gelap). Jika aplikasi tidak mendukung mode gelap, Anda dapat mengatur gaya ke mode alwaysLight atau alwaysDark.

var configuration = PaymentSheet.Configuration() configuration.style = .alwaysLight

Detail tagihan default

Untuk mengatur nilai default bagi detail tagihan yang dikumpulkan di lembar pembayaran, konfigurasikan properti defaultBillingDetails. PaymentSheet akan melengkapi bidang-bidangnya dengan nilai yang Anda berikan.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.address.country = "US" configuration.defaultBillingDetails.email = "foo@bar.com"

Pengumpulan detail tagihan

Gunakan billingDetailsCollectionConfiguration untuk menentukan cara Anda ingin mengumpulkan detail tagihan di lembar pembayaran.

Anda dapat mengumpulkan nama, email, nomor telepon, dan alamat pelanggan.

Jika Anda hanya ingin detail tagihan yang diperlukan oleh metode pembayaran, atur billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod ke true. Dalam hal ini, PaymentSheet.Configuration.defaultBillingDetails diatur sebagai detail tagihan metode pembayaran.

Jika Anda ingin mengumpulkan detail tagihan tambahan yang tidak diperlukan oleh metode pembayaran, atur billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod ke false. Dalam hal ini, detail tagihan yang dikumpulkan melalui PaymentSheet ditetapkan sebagai detail tagihan metode pembayaran.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.email = "foo@bar.com" configuration.billingDetailsCollectionConfiguration.name = .always configuration.billingDetailsCollectionConfiguration.email = .never configuration.billingDetailsCollectionConfiguration.address = .full configuration.billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod = true

Catatan

Konsultasikan dengan penasihat hukum mengenai undang-undang yang berlaku untuk mengumpulkan informasi. Hanya kumpulkan nomor telepon jika Anda memerlukannya untuk transaksi.

OpsionalTangani keluar pengguna

PaymentSheet menyimpan sejumlah informasi secara lokal guna mengingat apakah pengguna telah menggunakan Link dalam aplikasi. Untuk mengosongkan status internal PaymentSheet, panggil metode PaymentSheet.resetCustomer() bila pengguna Anda keluar.

import UIKit import StripePaymentSheet class MyViewController: UIViewController { @objc func didTapLogoutButton() { PaymentSheet.resetCustomer() // Other logout logic required by your app } }

OpsionalSelesaikan pembayaran di UI Anda

Anda dapat menyajikan Lembar Pembayaran untuk hanya mengumpulkan detail metode pembayaran, kemudian memanggil metode confirm untuk menyelesaikan pembayaran di UI aplikasi Anda. Hal ini akan berguna jika Anda memiliki tombol beli custom atau memerlukan langkah tambahan setelah mengumpulkan detail pembayaran.

Selesaikan pembayaran di UI aplikasi Anda

Langkah-langkah berikut memandu Anda menyelesaikan pembayaran di UI aplikasi. Lihat sampel integrasi kami di GitHub.

  1. Pertama, lakukan inisialisasi PaymentSheet.FlowController, bukan PaymentSheet, serta perbarui UI Anda dengan properti paymentOption. Properti ini berisi gambar dan label yang menunjukkan metode pembayaran default yang dipilih pertama kali oleh pelanggan.
PaymentSheet.FlowController.create(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) { [weak self] result in switch result { case .failure(let error): print(error) case .success(let paymentSheetFlowController): self?.paymentSheetFlowController = paymentSheetFlowController // Update your UI using paymentSheetFlowController.paymentOption } }
  1. Berikutnya, panggil presentPaymentOptions untuk mengumpulkan detail pembayaran. Setelah selesai, perbarui UI Anda lagi dengan properti paymentOption.
paymentSheetFlowController.presentPaymentOptions(from: self) { // Update your UI using paymentSheetFlowController.paymentOption }
  1. Terakhir, panggil confirm.
paymentSheetFlowController.confirm(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Payment complete!") case .canceled: print("Canceled!") case .failed(let error): print(error) } }

Mengatur allowsDelayedPaymentMethods ke true memungkinkan metode pembayaran pemberitahuan tertunda seperti rekening bank AS. Untuk metode pembayaran ini, status pembayaran finalnya tidak diketahui bila PaymentSheet selesai, dan berhasil atau gagal sebagai gantinya nanti. Jika Anda mendukung jenis pembayaran ini, informasikan kepada pelanggan bahwa pesanannya telah dikonfirmasi dan hanya memenuhi pesanan (misalnya, mengirim produknya) bila pembayaran berhasil.

OpsionalAktifkan pengumpulan kembali CVC pada konfirmasi

Instruksi berikut untuk mengumpulkan kembali CVC kartu tersimpan selama konfirmasi PaymentIntent beranggapan bahwa integrasi Anda mencakup hal berikut:

  • Pembuatan PaymentIntents sebelum mengumpulkan detail pembayaran

Perbarui parameter pembuatan maksud

Untuk mengumpulkan kembali CVC ketika mengonfirmasikan pembayaran, sertakan require_cvc_recollection selama pembuatan PaymentIntent.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-08-27.basil" \ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="eur" \ -d "payment_method_options[card][require_cvc_recollection]"=true \ # 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 \
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
Code quickstart
Panduan Terkait
Elements Appearance API
Skenario pembayaran lainnya
Cara kerja kartu