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 StripeSisi serverSisi 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:
Sisi client
Stripe iOS SDK adalah sumber terbuka, yang didokumentasikan lengkap, dan kompatibel dengan aplikasi yang mendukung iOS 13 ke atas.
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 endpointSisi server
Catatan
Untuk menampilkan PaymentSheet sebelum membuat PaymentIntent, lihat Kumpulkan detail pembayaran sebelum membuat Intent.
Integrasi ini menggunakan tiga objek API Stripe:
PaymentIntent: Stripe menggunakannya untuk mewakili maksud Anda menagih pembayaran dari pelanggan, yang melacak upaya charge dan perubahan status pembayaran selama proses.
(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.
(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:
- Mengambil Pelanggan, atau membuat yang baru.
- Membuat Kunci Efemeral untuk Pelanggan.
- Membuat PaymentIntent dengan amount, currency, dan customer. Secara opsional, Anda juga dapat menyertakan parameter
automatic_
. Stripe mengaktifkan fungsinya secara default di versi terbaru API.payment_ methods - 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.
Kumpulkan detail pembayaranSisi 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
Jika PaymentSheetResult
adalah .
, 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 kembaliSisi 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.
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 pascapembayaranSisi 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_
, kami merekomendasikan penanganan kejadian ini yang lain ketika menagih pembayaran dengan Payment Element:
Kejadian | Keterangan | Tindakan |
---|---|---|
payment_intent.succeeded | Dikirim bila pelanggan berhasil menyelesaikan pembayaran. | Kirimi pelanggan konfirmasi pesanan dan penuhi pesanan mereka. |
payment_intent. pemrosesan | Dikirim 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_ atau payment_ 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_failed | Dikirim bila pelanggan mencoba melakukan pembayaran, tetapi pembayaran itu gagal. | Jika transisi pembayaran dilakukan dari processing menjadi payment_ , tawarkan upaya lain untuk membayar kepada pelanggan. |
Coba integrasi
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.
.
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.
).
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
Pelacakan pesanan
Untuk menambahkan informasi pelacakan pesanan di iOS 16 atau yang lebih baru, konfigurasikan authorizationResultHandler di PaymentSheet.
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.
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.
ke true. Dalam hal ini, PaymentSheet.
diatur sebagai detail tagihan metode pembayaran.
Jika Anda ingin mengumpulkan detail tagihan tambahan yang tidak diperlukan oleh metode pembayaran, atur billingDetailsCollectionConfiguration.
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.
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
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_
selama pembuatan PaymentIntent.