Iniziare a utilizzare i componenti incorporati di Connect
Incorporare le funzionalità della dashboard nel sito web
Utilizza i componenti incorporati di Connect per aggiungere al tuo sito web le funzionalità della Dashboard per gli account connessi. Queste librerie e l’API di supporto ti consentono di concedere agli utenti l’accesso ai prodotti Stripe direttamente dalla Dashboard e dalle applicazioni mobili.
Configurare StripeConnectLato clientLato server
Stripe utilizza un oggetto AccountSession per esprimere la tua intenzione di delegare l’accesso API al tuo account connesso.
L’API AccountSessions restituisce una chiave privata client che consente a un componente incorporato di accedere alle risorse di un account connesso come se facessi le chiamate API per suo conto.
Crea un oggetto AccountSession Server
L’app deve inviare una richiesta al server per ottenere la sessione dell’account. Al momento è supportata solo l’attivazione dell’account. Puoi creare un nuovo endpoint sul server che restituisce la chiave privata client all’app:
Creare l’API Account Session
L’API Create Account Session determina l’accesso ai componenti e alle funzioni per i componenti incorporati di Connect. Stripe applica questi parametri a tutti i componenti che corrispondono alla sessione dell’account. Se la tua app supporta più ruoli utente, assicurati che i componenti e le funzioni abilitati per la sessione dell’account corrispondano al ruolo dell’utente corrente. Ad esempio, puoi abilitare la gestione dei rimborsi solo per gli amministratori del tuo sito, ma non per gli altri utenti. Per assicurarti che l’accesso al ruolo utente sia applicato, devi associare il ruolo utente del tuo sito ai componenti della sessione dell’account.
Installa l’SDK di StripeConnect Client
L’SDK per iOS di Stripe è open source, completamente documentato e compatibile con le app che supportano iOS 15 o versioni successive.
Nota
Per ulteriori informazioni sulla versione più recente e su quelle precedenti dell’SDK, consulta la pagina Versioni su GitHub. Per ricevere notifiche quando viene pubblicata una nuova versione, guarda le versioni del repository.
Configura l’autorizzazione per la fotocamera lato client
L’SDK iOS di Stripe Connect richiede l’accesso alla fotocamera del dispositivo per acquisire i documenti di identità. Per fare in modo che la tua app richieda le autorizzazioni per la fotocamera:
- Apri il file Info.plist del tuo progetto in Xcode.
- Aggiungi la chiave
NSCameraUsageDescription
. - Aggiungi un valore stringa che spieghi agli utenti perché la tua app richiede le autorizzazioni per la fotocamera, ad esempio:
Questa app utilizza la fotocamera per scattare una foto dei tuoi documenti di identità.
Consulta la documentazione di Apple per ulteriori informazioni su come richiedere l’autorizzazione per la fotocamera.
Inizializza EmbeddedComponentManager Client
Imposta la tua chiave pubblicabile utilizzando StripeAPI.
e crea un’istanza di EmbeddedComponentManager con una chiusura che recupera una chiave privata client chiamando il nuovo endpoint che hai creato sul tuo server. Per creare un componente, chiama il metodo di creazione appropriato di EmbeddedComponentManager
per il quale hai creato un’istanza. Restituisce un controller che puoi usare per la presentazione nell’app.
@_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 ManagerLato client
Consulta il riferimento al codice .
Personalizzare l’aspetto dei componenti incorporati di Connect
Il toolkit Figma di componenti incorporati per personalizzare l’interfaccia utente contiene tutti i componenti, i pattern comuni e un’applicazione esemplificativa. Puoi utilizzarlo per visualizzare e progettare interfacce utente incorporate sul tuo sito web.
Offriamo una serie di opzioni per personalizzare l’aspetto dei componenti incorporati di Connect. Queste personalizzazioni influiscono su pulsanti, icone e altri elementi del nostro sistema di progettazione.
Finestre popup necessarie
Alcuni comportamenti nei componenti incorporati, come l’autenticazione utente, devono essere presentati in una vista web autenticata. Non puoi personalizzare il componente incorporato per eliminare tali WebView.
Puoi impostare queste opzioni utilizzando EmbeddedComponentManager.Appearance durante l’inizializzazione di EmbeddedComponentManager
.
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 )
I colori dell’aspetto che utilizzano provider dinamici vengono applicati automaticamente al componente incorporato di Connect quando la relativa UITraitCollection viene aggiornata, incluse la modalità scura e il contrasto per l’accessibilità. L’aspetto predefinito non include i colori della modalità scura, quindi devi specificare un aspetto con colori dinamici in EmbeddedComponentManager
per supportare la modalità scura nella tua app.
Quando specifichi le dimensioni dei caratteri, usa la dimensione dei caratteri non ridimensionata visualizzata per la classe di dimensioni predefinita del dispositivo. Il componente incorporato ridimensiona automaticamente la dimensione del carattere in base alla relativa UITraitCollection.
Consulta l’elenco completo delle opzioni di aspetto su iOS.
Usa font personalizzati
Se usi caratteri personalizzati nell’app (ad esempio, da file .
o .
incorporati nel file binario dell’app), devi specificare i file dei caratteri in un CustomFontSource specificato nell’argomento fonts
durante l’inizializzazione di EmbeddedComponentManager
. In questo modo, i componenti incorporati di Connect possono accedere ai file dei caratteri per visualizzarli correttamente.
Per una visualizzazione corretta, i font specificati in appearance
devono utilizzare un font di sistema supportato o un CustomFontSource specificato nel parametro EmbeddedComponentManager
al momento dell’inizializzazione.
Consulta la documentazione di riferimento .
Aggiornare i componenti incorporati di Connect dopo l’inizializzazione
Chiama il metodo update
per modificare l’aspetto dei componenti incorporati dopo l’inizializzazione:
var appearance = EmbeddedComponentManager.Appearance() appearance.colors.primary = UIColor.red manager.update(appearance: appearance)
Autenticazione
Offriamo una serie di API per gestire le sessioni degli account e le credenziali degli utenti nei componenti incorporati di Connect.
Aggiornare la chiave privata client
Nelle sessioni di lunga durata, la sessione della chiave privata client fornita inizialmente potrebbe scadere. Quando scade, utilizziamo automaticamente fetchClientSecret
per recuperare una nuova chiave privata client e aggiornare la sessione. Non devi specificare alcun parametro aggiuntivo.
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 )
Localizzazione
I componenti incorporati di Connect supportano le seguenti lingue:
Lingua | Codice lingua |
---|---|
Bulgaro (Bulgaria) | bg-BG |
Cinese (semplificato) | zh-Hans |
Cinese (tradizionale - Hong Kong) | zh-Hant-HK |
Cinese (tradizionale - Taiwan) | zh-Hant-TW |
Croato (Croazia) | hr-HR |
Ceco (Cechia) | cs-CZ |
Danese (Danimarca) | da-DK |
Olandese (Paesi Bassi) | nl-NL |
Inglese (Australia) | en-AU |
Inglese (India) | en-IN |
Inglese (Irlanda) | en-IE |
Inglese (Nuova Zelanda) | en-NZ |
Inglese (Singapore) | en-SG |
Inglese (Regno Unito) | en-GB |
Inglese (Stati Uniti) | en-US |
Estone (Estonia) | et-EE |
Filippino (Filippine) | fil-PH |
Finlandese (Finlandia) | fi-FI |
Francese (Canada) | fr-CA |
Francese (Francia) | fr-FR |
Tedesco (Germania) | de-DE |
Greco (Grecia) | el-GR |
Ungherese (Ungheria) | hu-HU |
Indonesiano (Indonesia) | id-ID |
Italiano (Italia) | it-IT |
Giapponese (Giappone) | ja-JP |
Coreano (Corea del Sud) | ko-KR |
Lettone (Lettonia) | lv-LV |
Lituano (Lituania) | lt-LT |
Malese (Malaysia) | ms-MY |
Maltese (Malta) | mt-MT |
Norvegese bokmål (Norvegia) | nb-NO |
Polacco (Polonia) | pl-PL |
Portoghese (Brasile) | pt-BR |
Portoghese (Portogallo) | pt-PT |
Rumeno (Romania) | ro-RO |
Slovacco (Slovacchia) | sk-SK |
Sloveno (Slovenia) | sl-SI |
Spagnolo (Argentina) | es-AR |
Spagnolo (Brasile) | es-BR |
Spagnolo (America Latina) | es-419 |
Spagnolo (Messico) | es-MX |
Spagnolo (Spagna) | es-ES |
Svedese (Svezia) | sv-SE |
Tailandese (Thailandia) | th-TH |
Turco (Turchia) | tr-TR |
Vietnamita (Vietnam) | vi-VN |
Autenticazione utente nei componenti incorporati di Connect
In genere, i componenti incorporati di Connect non richiedono l’autenticazione dell’utente. In alcuni casi i componenti incorporati di Connect richiedono che l’account connesso acceda con il proprio account Stripe prima di accedere al componente per eseguire le funzionalità necessarie, ad esempio inviare informazioni alla persona giuridica dell’account nel caso del componente di attivazione dell’account. Altri componenti potrebbero richiedere l’autenticazione all’interno del componente dopo la visualizzazione iniziale.
L’autenticazione è richiesta per gli account connessi in cui Stripe è responsabile della raccolta di informazioni aggiornate quando i requisiti cambiano. Per gli account connessi in cui sei responsabile della raccolta di informazioni aggiornate quando i requisiti lo presuppongono o cambiano, come gli account Custom, l’autenticazione è Stripe è controllata dalla funzione Sessione account disable_stripe_user_authentication. Ti consigliamo di implementare l’autenticazione a due fattori o misure di sicurezza equivalenti come best practice. Per le configurazioni degli account che supportano questa funzionalità, come Custom, ti assumi la responsabilità degli account connessi qualora non possano rimborsare i saldi negativi.
Componenti che richiedono l’autenticazione
Agli account connessi verrà mostrata una WebView autenticata nella tua applicazione. L’account connesso deve essere autenticato prima di poter continuare il proprio flusso di lavoro nella WebView.
Il flusso di autenticazione in hosting su Stripe mostra il nome, il colore e l’icona del tuo brand così come sono stati impostati nelle impostazioni di Connect e non utilizza l’aspetto e i caratteri personalizzati di Gestione componenti incorporati fino al completamento dell’autenticazione.
Il seguente componente richiede l’autenticazione degli account connessi in determinati scenari:
Gestire gli errori di caricamento
Se un componente non viene caricato, puoi reagire all’errore implementando il metodo delegato didFailLoadWithError
del componente. A seconda della causa dell’errore, il metodo didFailLoadWithError
potrebbe essere chiamato più volte. Qualsiasi logica attivata da un didFailLoadWithError
deve essere idempotente.
// 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)'") } }