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 Umum
Mulai dengan Connect
Dasar-dasar integrasi
Contoh integrasi
Pengelolaan akun
Lakukan onboarding akun
Konfigurasikan Dashboard akun
    Mulai dengan komponen tersemat Connect
      Mulai cepat
    Sesuaikan komponen tersemat Connect
    Komponen tersemat Connect yang didukung
    Penyesuaian Dashboard Stripe
    Kontrol platform untuk akun Dashboard Stripe
    Dashboard Express
Gunakan tipe akun terhubung
Pemrosesan pembayaran
Terima pembayaran
Kirim pembayaran ke akun
Administrasi platform
Kelola platform Connect Anda
Formulir pajak untuk platform Connect Anda
BerandaPlatform dan situs belanja onlineConfigure account Dashboards

Mulai dengan komponen Connect yang disematkan

Pelajari cara menyematkan fungsionalitas dashboard ke situs web Anda.

Gunakan komponen tersemat Connect untuk menambahkan fungsionalitas dashboard akun terhubung ke situs web Anda. Pustaka ini dan API pendukungnya memungkinkan Anda memberikan akses ke produk Stripe secara langsung di dashboard dan aplikasi seluler.

Siapkan StripeConnect
Sisi klien
Sisi server

Stripe menggunakan AccountSession untuk mengekspresikan maksud Anda guna mendelegasikan akses API ke akun terhubung Anda.

AccountSessions API mengembalikan client secret yang memungkinkan komponen tersemat mengakses sumber daya akun terhubung seolah-olah Anda yang melakukan panggilan API untuk mereka.

Buat AccountSession Server

Aplikasi Anda harus memprakarsai permintaan ke server untuk memperoleh sesi akun. Saat ini, hanya Onboarding akun yang didukung. Anda dapat membuat endpoint baru pada server yang mengembalikan client secret ke aplikasi:

main.rb
Ruby
require 'sinatra' require 'stripe' # This is a placeholder - it should be replaced with your secret API key. # Sign in to see your own test API key embedded in code samples. # Don’t submit any personally identifiable information in requests made with this key. Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
post '/account_session' do content_type 'application/json' # Create an AccountSession begin account_session = Stripe::AccountSession.create({ account:
'{{CONNECTED_ACCOUNT_ID}}'
, components: { account_onboarding: { enabled: true, features: { # We recommend disabling authentication for a better user experience when possible disable_stripe_user_authentication: true, } } } }) { client_secret: account_session[:client_secret] }.to_json rescue => error puts "An error occurred when calling the Stripe API to create an account session: #{error.message}"; return [500, { error: error.message }.to_json] end end

Buat Account Session API

Create Account Session API menentukan akses komponen dan fitur untuk komponen tersemat Connect. Stripe memberlakukan parameter ini untuk setiap komponen yang sesuai dengan sesi akun. Jika aplikasi Anda mendukung beberapa peran pengguna, pastikan komponen dan fitur yang diaktifkan untuk sesi akun tersebut sesuai dengan peran pengguna saat ini. Misalnya, Anda dapat mengaktifkan manajemen pengembalian dana hanya untuk administrator situs Anda, tetapi tidak untuk pengguna lain. Untuk memastikan akses peran pengguna diberlakukan, Anda harus memetakan peran pengguna situs ke komponen sesi akun.

Instal StripeConnect SDK Client

Stripe iOS SDK adalah sumber terbuka, yang didokumentasikan lengkap, dan kompatibel dengan aplikasi yang mendukung iOS 15 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 StripeConnect 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.

Siapkan otorisasi kamera Sisi client

Stripe Connect iOS SDK memerlukan akses ke kamera perangkat untuk mengambil dokumen identitas. Untuk mengaktifkan aplikasi Anda guna meminta izin kamera:

  1. Buka Info.plist proyek Anda di Xcode.
  2. Tambahkan kunci NSCameraUsageDescription.
  3. Tambahkan nilai string yang menjelaskan kepada pengguna mengapa aplikasi Anda memerlukan izin kamera, sesuatu seperti:

Aplikasi ini menggunakan kamera untuk mengambil gambar dokumen identitas Anda.

Lihat dokumentasi Apple untuk mempelajari selengkapnya tentang meminta otorisasi kamera.

Inisialisasikan EmbeddedComponentManager Client

Atur kunci yang dapat dipublikasikan menggunakan StripeAPI.shared dan buat instance EmbeddedComponentManager dengan penutupan yang mengambil client secret dengan memanggil endpoint baru yang Anda buat pada server. Untuk membuat komponen, panggil metode buat yang sesuai pada instance EmbeddedComponentManager yang Anda buat di atas. Ini mengembalikan pengontrol yang dapat Anda gunakan untuk menyajikannya di aplikasi.

MyViewController.swift
@_spi(PrivateBetaConnect) import StripeConnect import UIKit class MyViewController: UIViewController { let errorView: UIView func fetchClientSecret() async -> String? { let url = URL(string: "https://{{YOUR_SERVER}}/account_session")! var request = URLRequest(url: url) request.httpMethod = "POST" do { // Fetch the AccountSession client secret let (data, _) = try await URLSession.shared.data(for: request) let json = try JSONSerialization.jsonObject(with: data) as? [String : Any] errorView.isHidden = true return json?["client_secret"] as? String } catch let error { // Handle errors on the client side here print("An error occurred: \(error)") errorView.isHidden = false return nil } } override func viewDidLoad() { super.viewDidLoad() // This is your test publishable API key. STPAPIClient.shared.publishableKey = "{{PUBLISHABLE_KEY}}", let embeddedComponentManager = EmbeddedComponentManager( fetchClientSecret: fetchClientSecret ) let controller = embeddedComponentManager.createAccountOnboardingController() controller.present(from: self) } }

Configure the Embedded Component Manager
Sisi client

Lihat referensi kode .

Sesuaikan tampilan komponen tersemat Connect

Toolkit Figma UI komponen tersemat berisi setiap komponen, pola umum, dan contoh aplikasi. Anda dapat menggunakannya untuk memvisualisasikan serta mendesain UI yang disematkan pada situs web Anda.

Kami menawarkan serangkaian opsi untuk menyesuaikan tampilan dan cara kerja komponen tersemat Connect. Penyesuaian ini memengaruhi tombol, ikon, dan aksen lainnya di sistem desain kami.

Popup yang diperlukan

Beberapa perilaku dalam komponen tersemat, seperti autentikasi pengguna, harus disajikan di WebView yang diautentikasi. Anda tidak dapat menyesuaikan komponen tersemat untuk menghilangkan Tampilan Web tersebut.

Anda dapat mengatur opsi ini menggunakan EmbeddedComponentManager.Appearance ketika melakukan inisialisasi EmbeddedComponentManager.

MyViewController.swift
func fetchClientSecret() async -> String? { let url = URL(string: "https://{{YOUR_SERVER}}/account_session")! var request = URLRequest(url: url) request.httpMethod = "POST" do { let (data, _) = try await URLSession.shared.data(for: request) let json = try JSONSerialization.jsonObject(with: data) as? [String : Any] return json?["client_secret"] as? String } catch { return nil } } // Specify custom fonts var customFonts: [CustomFontSource] = [] let myFont = UIFont(name: "My Font", size: 16)! let fontUrl = Bundle.main.url(forResource: "my-font-2", withExtension: "woff")! do { let customFontSource = try CustomFontSource(font: myFont, fileUrl: fontUrl) customFonts.append(customFontSource) } catch { print("Error loading custom font: \(error)") } // Customize appearance var appearance = EmbeddedComponentManager.Appearance() appearance.typography.fontfont.base = myFont appearance.typography.fontSizeBase = 16 // Unscaled font size appearance.colors.primary = UIColor { traitCollection in if traitCollection.userInterfaceStyle == .dark { UIColor(red: 0.455, green: 0.424, blue: 1.000, alpha: 1.0) } else { UIColor(red: 0.404, green: 0.365, blue: 1.000, alpha: 1.0) } } STPAPIClient.shared.publishableKey = "{{PUBLISHABLE_KEY}}", let embeddedComponentManager = EmbeddedComponentManager( appearance: appearance, fonts: customFonts, fetchClientSecret: fetchClientSecret )

Warna tampilan yang menggunakan penyedia dinamis secara otomatis diterapkan ke komponen tersemat Connect bila UITraitCollection diperbarui, termasuk Mode Gelap dan kontras aksesibilitas. Penampilan default tidak menyertakan warna mode gelap, jadi Anda harus menentukan penampilan dengan warna dinamis ke EmbeddedComponentManager untuk mendukung mode gelap di aplikasi.

Ketika menentukan ukuran font, gunakan ukuran font yang tidak diubah skalanya dan ditampilkan untuk kelas ukuran default perangkat. Komponen tersemat secara otomatis menskalakan ukuran font berdasarkan UITraitCollection.

Lihat daftar lengkap opsi penampilan di iOS.

Gunakan font custom

Jika menggunakan font custom di aplikasi (misalnya, dari file .otf atau .tff yang disematkan di biner aplikasi), Anda harus menentukan file font di CustomFontSource yang diteruskan ke argumen fonts ketika melakukan inisialisasi EmbeddedComponentManager. Hal ini memberi komponen tersemat Connect akses ke file font untuk merender font dengan benar.

Font yang ditentukan di appearance harus menggunakan font sistem yang didukung ataupun CustomFontSource yang diteruskan ke EmbeddedComponentManager pada inisialisasi untuk dirender dengan benar.

Lihat dokumentasi referensi .

Perbarui komponen tersemat Connect setelah inisialisasi

Panggil metode update untuk mengubah tampilan komponen tersemat setelah inisialisasi:

MyViewController.swift
var appearance = EmbeddedComponentManager.Appearance() appearance.colors.primary = UIColor.red manager.update(appearance: appearance)

Autentikasi

Kami menawarkan seperangkat API untuk mengelola sesi akun dan kredensial pengguna di komponen tersemat Connect.

Muat ulang client secret

Pada sesi yang berjalan lama, sesi dari client secret yang semula diberikan mungkin kedaluwarsa. Bila kedaluwarsa, kami secara otomatis menggunakan fetchClientSecret untuk mengambil client secret baru dan memuat ulang sesi. Anda tidak perlu meneruskan parameter tambahan.

MyViewController.swift
func fetchClientSecret() async -> String? { var request = URLRequest(url: URL(string: "https://{{YOUR_SERVER}}/account_session")!) request.httpMethod = "POST" do { let (data, _) = try await URLSession.shared.data(for: request) let json = try JSONSerialization.jsonObject(with: data) as? [String : Any] return json?["client_secret"] as? String } catch let error { return nil } } STPAPIClient.shared.publishableKey = "{{PUBLISHABLE_KEY}}", let embeddedComponentManager = EmbeddedComponentManager( fetchClientSecret: fetchClientSecret )

Pelokalan

Komponen tersemat Connect mendukung lokal berikut:

BahasaKode lokal
Bahasa Bulgaria (Bulgaria)bg-BG
Bahasa Tionghoa (Disederhanakan)zh-Hans
Bahasa Tionghoa (Tradisional - Hong Kong)zh-Hant-HK
Bahasa Tionghoa (Tradisional - Taiwan)zh-Hant-TW
Bahasa Kroasia (Kroasia)hr-HR
Bahasa Ceko (Cheska)cs-CZ
Bahasa Denmark (Denmark)da-DK
Bahasa Belanda (Belanda)nl-NL
Bahasa Inggris (Australia)en-AU
Bahasa Inggris (India)en-IN
Bahasa Inggris (Irlandia)en-IE
Bahasa Inggris (Selandia Baru)en-NZ
Bahasa Inggris (Singapura)en-SG
Bahasa Inggris (Kerajaan Inggris)en-GB
Bahasa Inggris (Amerika Serikat)en-US
Bahasa Estonia (Estonia)et-EE
Bahasa Filipina (Filipina)fil-PH
Bahasa Finlandia (Finlandia)fi-FI
Bahasa Prancis (Kanada)fr-CA
Bahasa Prancis (Prancis)fr-FR
Bahasa Jerman (Jerman)de-DE
Bahasa Yunani (Yunani)el-GR
Bahasa Hungaria (Hungaria)hu-HU
Bahasa Indonesia (Indonesia)id-ID
Bahasa Italia (Italia)it-IT
Bahasa Jepang (Jepang)ja-JP
Bahasa Korea (Korea Selatan)ko-KR
Bahasa Latvia (Latvia)lv-LV
Bahasa Lituania (Lituania)lt-LT
Bahasa Melayu (Malaysia)ms-MY
Bahasa Malta (Malta)mt-MT
Bahasa Bokmål Norwegia (Norwegia)nb-NO
Bahasa Polandia (Polandia)pl-PL
Portugis (Brasil)pt-BR
Bahasa Portugis (Portugal)pt-PT
Bahasa Rumania (Rumania)ro-RO
Bahasa Slowakia (Slowakia)sk-SK
Bahasa Slovenia (Slovenia)sl-SI
Bahasa Spanyol (Argentina)es-AR
Bahasa Spanyol (Brasil)es-BR
Spanyol (Amerika Latin)es-419
Bahasa Spanyol (Meksiko)es-MX
Bahasa Spanyol (Spanyol)es-ES
Bahasa Swedia (Swedia)sv-SE
Bahasa Thailand (Thailand)th-TH
Bahasa Turki (Türkiye)tr-TR
Bahasa Vietnam (Vietnam)vi-VN

Autentikasi pengguna di komponen tersemat Connect

Komponen tersemat Connect biasanya tidak memerlukan autentikasi pengguna. Dalam sejumlah skenario, komponen tersemat Connect mengharuskan akun terhubung masuk dengan akun Stripe sebelum mengakses komponen untuk menyediakan fungsionalitas yang diperlukan (misalnya, menulis informasi ke badan hukum akun dalam kasus komponen onboarding akun). Komponen lain mungkin memerlukan autentikasi dalam komponen setelah komponen tersebut ditampilkan di awal.

Autentikasi diperlukan untuk akun terhubung di mana Stripe bertanggung jawab untuk mengumpulkan informasi terbaru bila persyaratan berubah. Untuk akun terhubung tempat Anda bertanggung jawab mengumpulkan informasi terbaru bila persyaratan jatuh tempo atau berubah, seperti akun Custom, autentikasi Stripe dikontrol oleh fitur Sesi Akun disable_stripe_user_authentication. Kami merekomendasikan pengimplementasian 2FA atau tindakan keamanan yang setara sebagai praktik terbaik. Untuk konfigurasi akun yang mendukung fitur ini, seperti Custom, Anda bertanggung jawab atas akun terhubung jika akun tersebut tidak dapat membayar kembali saldo negatif.

Komponen yang memerlukan autentikasi

Akun terhubung akan ditampilkan Tampilan Web yang diautentikasi dalam aplikasi Anda. Akun terhubung harus melakukan autentikasi sebelum dapat melanjutkan alur kerjanya dalam Tampilan Web.

Alur autentikasi yang di-hosting Stripe menampilkan nama, warna, dan ikon brand Anda sebagaimana diatur di pengaturan Connect serta tidak menggunakan tampilan dan font custom dari Manajer Komponen Tersemat sampai autentikasi selesai.

Komponen berikut mengharuskan akun terhubung melakukan autentikasi dalam skenario tertentu:

  • Onboarding Akun

Tangani kesalahan pemuatan

Jika komponen tidak dimuat, Anda dapat bereaksi terhadap kegagalan dengan mengimplementasikan metode delegasi didFailLoadWithError komponen. Tergantung penyebab kegagalan, metode didFailLoadWithError mungkin dipanggil beberapa kali. Logika yang dipicu oleh didFailLoadWithError harus idempoten.

MyViewController.swift
// All components emit load errors. This example uses AccountOnboarding. // All components support didFailLoadWithError. class MyViewController: UIViewController, AccountOnboardingControllerDelegate { func openAccountOnboarding() { let accountOnboardingController = embeddedComponentManager.createAccountOnboardingController(); accountOnboardingController.delegate = self accountOnboardingController.present(from: self) } // MARK: - AccountOnboardingControllerDelegate func accountOnboarding(_ accountOnboarding: AccountOnboardingController, didFailLoadWithError error: Error) { print("Account onboarding failed to load with error '\(error)'") } }
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