Empieza a usar los componentes integrados de Connect
Descubre cómo integrar las funciones del Dashboard en tu sitio web.
Utiliza los componentes integrados de Connect para añadir las funciones del Dashboard de cuentas conectadas a tu sitio web. Estas bibliotecas y su API de soporte te permiten otorgar a tus usuarios acceso a los productos de Stripe directamente en tu Dashboard y aplicaciones móviles.
Configurar Stripe ConnectLado del clienteLado del servidor
Stripe utiliza una AccountSession para expresar tu intención de delegar el acceso a la API a tu cuenta conectada.
La API de AccountSessions devuelve un secreto de cliente que permite que un componente integrado acceda a los recursos de una cuenta conectada como si estuvieras haciendo las llamadas a la API para ellos.
Crea una AccountSession Servidor
La aplicación debe iniciar una solicitud a tu servidor para obtener la sesión de la cuenta. Actualmente, solo se admite el onboarding de cuentas. Puedes crear un nuevo punto de conexión en tu servidor que devuelva el secreto de cliente a la aplicación:
Crear una API Account Session
La API Create Account Session determina el acceso a los componentes y funciones para los componentes integrados de Connect. Stripe aplica estos parámetros para cualquier componente que corresponda a la sesión de la cuenta. Si tu aplicación acepta varios roles de usuario, asegúrate de que los componentes y las funciones que están habilitados para esa sesión de cuenta correspondan al rol del usuario actual. Por ejemplo, puedes habilitar la gestión de reembolsos solo para los administradores de tu sitio, pero no para otros usuarios. Para asegurarse de que se aplica el acceso a la función de usuario, debes asignar la función de usuario de tu sitio a los componentes de la sesión de la cuenta.
Instala el SDK de StripeConnect Client
El SDK para iOS de Stripe es de código abierto, está plenamente documentado y es compatible con aplicaciones que admiten iOS 15 o posterior.
Nota
Para obtener más información sobre la versión más reciente y sobre versiones anteriores del SDK, consulta la página Versiones en GitHub. Para recibir notificaciones cuando se publica una nueva versión, consulta las versiones del repositorio.
Configurar la autorización de la cámara Client-side
El SDK para iOS de Stripe Connect necesita acceso a la cámara del dispositivo para capturar documentos de identidad. Para permitir que tu aplicación solicite permisos de cámara, haz lo siguiente:
- Abre la Info.plist de tu proyecto en Xcode.
- Añade la clave
NSCameraUsageDescription
. - Añade un valor de cadena que explique a los usuarios por qué la aplicación requiere permisos de cámara, por ejemplo:
Esta aplicación utiliza la cámara para hacer una foto de tus documentos de identidad.
Consulta la documentación de Apple para obtener más información sobre cómo solicitar la autorización de la cámara.
Inicializa EmbeddedComponentManager Client
Establece tu clave publicable usando StripeAPI.
y crea una instancia de EmbeddedComponentManager con un cierre que recupere el secreto de cliente llamando al nuevo punto de conexión que hayas creado en tu servidor. Para crear un componente, llama al método correspondiente en el EmbeddedComponentManager
para el que creaste una instancia anteriormente. Esto devuelve un controlador que puedes usar para presentarlo en la aplicación.
@_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 ManagerLado del cliente
Consulta la referencia de código .
Personaliza el aspecto de los componentes integrados de Connect
El conjunto de herramientas de interfaz de usuario Figma para componentes incorporados contiene todos los componentes, patrones comunes y una aplicación de ejemplo. Puedes usarlo para visualizar y diseñar interfaces de usuario integradas en tu sitio web.
Ofrecemos un conjunto de opciones para personalizar el aspecto de los componentes integrados de Connect. Estas personalizaciones afectan los botones, los iconos y otros acentos de nuestro sistema de diseño.
Ventanas emergentes necesarias
Algunos comportamientos de los componentes integrados, como la autenticación de usuarios, deben presentarse en una vista web autenticada. No se puede personalizar el componente incrustado para eliminar dichas WebViews.
Puedes configurar estas opciones usando EmbeddedComponentManager.Appearance al inicializar 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 )
Los colores de apariencia que utilizan proveedores dinámicos se aplican automáticamente al componente integrado de Connect cuando se actualiza su UITraitCollection, incluyendo el modo oscuro y el contraste de accesibilidad. La apariencia predeterminada no incluye colores en modo oscuro; por lo tanto, debes especificar una apariencia con colores dinámicos en EmbeddedComponentManager
para aceptar el modo oscuro en tu aplicación.
Al especificar los tamaños de fuente, usa el tamaño de fuente sin escalar que se muestra para la clase de tamaño predeterminada del dispositivo. El componente integrado escala automáticamente el tamaño de la fuente en función de su UITraitCollection.
Consulta la lista completa de opciones de apariencia en iOS.
Usar fuentes personalizadas
Si usas fuentes personalizadas en tu aplicación (por ejemplo, de archivos .
o .
integrados en el binario de tu aplicación), debes especificar los archivos de fuentes en un CustomFontSource pasado al argumento fonts
al inicializar EmbeddedComponentManager
. Esto permite que los componentes integrados de Connect accedan a los archivos de fuentes para renderizarlas correctamente.
Las fuentes especificadas en appearance
deben usar una fuente de sistema compatible o una CustomFontSource especificada en EmbeddedComponentManager
en la inicialización para renderizarse correctamente.
Consulta la documentación de referencia .
Actualiza los componentes integrados de Connect después de la inicialización
Llama al método update
para cambiar la apariencia de los componentes integrados después de la inicialización:
var appearance = EmbeddedComponentManager.Appearance() appearance.colors.primary = UIColor.red manager.update(appearance: appearance)
Autenticación
Ofrecemos un conjunto de API para gestionar las sesiones de la cuenta y las credenciales de usuario en los componentes integrados de Connect.
Actualizar el secreto de cliente
En sesiones de larga duración, podría caducar la sesión del secreto de cliente que se proporcionó inicialmente. Cuando caduca, usamos automáticamente fetchClientSecret
para recuperar un nuevo secreto de cliente y actualizar la sesión. No es necesario que especifiques ningún otro parámetro.
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 )
Localización
Los componentes integrados de Connect aceptan las siguientes configuraciones regionales:
Idioma | Código de configuración regional |
---|---|
Búlgaro (Bulgaria) | bg-BG |
Chino (simplificado) | zh-Hans |
Chino (tradicional de Hong Kong) | zh-Hant-HK |
Chino (tradicional de Taiwán) | zh-Hant-TW |
Croata (Croacia) | hr-HR |
Checo (República Checa) | cs-CZ |
Danés (Dinamarca) | da-DK |
Neerlandés (Países Bajos) | nl-NL |
Inglés (Australia) | en-AU |
Inglés (India) | en-IN |
Inglés (Irlanda) | en-IE |
Inglés (Nueva Zelanda) | en-NZ |
Inglés (Singapur) | en-SG |
Inglés (Reino Unido) | en-GB |
Inglés (Estados Unidos) | en-US |
Estonio (Estonia) | et-EE |
Filipino (Filipinas) | fil-PH |
Finlandés (Finlandia) | fi-FI |
Francés (Canadá) | fr-CA |
Francés (Francia) | fr-FR |
Alemán (Alemania) | de-DE |
Griego (Grecia) | el-GR |
Húngaro (Hungría) | hu-HU |
Indonesio (Indonesia) | id-ID |
Italiano (Italia) | it-IT |
Japonés (Japón) | ja-JP |
Coreano (Corea del Sur) | ko-KR |
Letón (Letonia) | lv-LV |
Lituano (Lituania) | lt-LT |
Malayo (Malasia) | ms-MY |
Maltés (Malta) | mt-MT |
Noruego bokmål (Noruega) | nb-NO |
Polaco (Polonia) | pl-PL |
Portugués (Brasil) | pt-BR |
Portugués (Portugal) | pt-PT |
Rumano (Rumania) | ro-RO |
Eslovaco (Eslovaquia) | sk-SK |
Esloveno (Eslovenia) | sl-SI |
Español (Argentina) | es-AR |
Español (Brasil) | es-BR |
Español (Latinoamérica) | es-419 |
Español (México) | es-MX |
Español (España) | es-ES |
Sueco (Suecia) | sv-SE |
Tailandés (Tailandia) | th-TH |
Turco (Turquía) | tr-TR |
Vietnamita (Vietnam) | vi-VN |
Autenticación de usuarios en los componentes integrados de Connect
Por lo general, los componentes integrados de Connect no necesitan la autenticación de usuario. En algunas situaciones, los componentes integrados de Connect requieren que la cuenta conectada inicie sesión con su cuenta de Stripe antes de acceder al componente para proporcionar las funciones necesarias (por ejemplo, escribir información a la entidad jurídica de la cuenta en el caso del componente account onboarding). Es posible que otros componentes requieran autenticación dentro del componente después de que se rendericen inicialmente.
La autenticación es obligatoria para las cuentas conectadas en las que Stripe es responsable de recopilar información actualizada cuando cambian los requisitos. Para las cuentas conectadas en las que eres responsable de recopilar información actualizada cuando los requisitos vencen o cambian, como las cuentas Custom, la autenticación de Stripe se controla mediante la función de sesión de cuenta de disable_stripe_user_authentication. Recomendamos implementar 2FA o medidas de seguridad equivalentes como una práctica recomendada. Para las configuraciones de cuenta que admiten esta función, como Custom, asumes la responsabilidad de las cuentas conectadas si no pueden devolver los saldos negativos.
Componentes que requieren autenticación
A las cuentas conectadas se les mostrará un WebView autenticado dentro de tu aplicación. La cuenta conectada debe autenticarse antes de poder continuar su flujo de trabajo dentro de WebView.
El flujo de autenticación alojado en Stripe muestra el nombre, el color y el icono de tu marca tal y como están establecidos en la configuración de Connect y no utiliza tu aspecto personalizado ni las fuentes del Administrador de componentes integrados hasta que se completa la autenticación.
El siguiente componente requiere que las cuentas conectadas se autentiquen en determinadas situaciones:
Gestiona los errores de carga
Si un componente no se carga, puedes reaccionar al error implementando el método delegado didFailLoadWithError
del componente. Dependiendo de la causa del error, se puede llamar varias veces al método didFailLoadWithError
. Cualquier lógica activada por un didFailLoadWithError
debe ser 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)'") } }