Extensión de Apple Wallet
Extensión de Apple Wallet
Use las extensiones de Apple Wallet para permitir que los usuarios finales descubran y aprovisionen tarjetas directamente desde la aplicación Apple Wallet, además de la aplicación del emisor.
Mediante las extensiones de la aplicación, puede exponer funcionalidades y contenido personalizados fuera de la aplicación del emisor y ponerlos a disposición mientras el usuario final interactúa con Apple Wallet o con el sistema.
El aprovisionamiento de tarjetas dentro de la aplicación Apple Wallet mejora la experiencia en la app al evitar la entrada manual de los datos de la tarjeta de pago.
Consulte la descripción general de la extensión de Apple para obtener información general sobre las extensiones de iOS.
Experiencia de usuario
El flujo integral de la extensión de Apple Wallet tiene dos fases principales:
Apple Wallet detecta que la aplicación del emisor tiene tarjetas disponibles para el aprovisionamiento.
El usuario final se autentica y selecciona qué tarjetas añadir; luego Apple Wallet solicita la carga útil de aprovisionamiento a la aplicación del emisor a través del SDK D1.
Descubrimiento y autenticación
Descubrir la aplicación del emisor en Apple Wallet
Apple Wallet comprueba con la aplicación del emisor si hay tarjetas disponibles. Si las hay, la aplicación del emisor aparece en la lista de opciones.
El usuario final selecciona la aplicación del emisor
Cuando el usuario final selecciona la aplicación del emisor, Apple Wallet activa la extensión de IU de la aplicación del emisor para autenticar al usuario final.
Autenticar al usuario final
La extensión de IU de la aplicación del emisor autentica al usuario final con las mismas credenciales y métodos (por ejemplo, inicio de sesión manual y biometría) que la aplicación principal del emisor.
Selección y aprovisionamiento de tarjetas
Apple Wallet obtiene las tarjetas disponibles
Apple Wallet solicita la lista de tarjetas disponibles a la aplicación del emisor a través de la extensión sin interfaz de usuario. El usuario final ve una lista de tarjetas para añadir.
Ver detalles de la tarjeta
El usuario final puede revisar los detalles de la tarjeta (por ejemplo, la imagen de la tarjeta, el título del producto y los últimos cuatro dígitos) antes de añadirla.
Aceptar términos y condiciones
El usuario final revisa y acepta los términos y condiciones del emisor y de la red de pagos.
Carga útil de aprovisionamiento y tokenización
Para cada tarjeta seleccionada, Apple Wallet solicita una carga útil de aprovisionamiento a la aplicación del emisor y luego inicia el flujo de tokenización con el TSP de la red de pago.
Extensiones
La integración de Apple Wallet requiere dos tipos de extensiones de la aplicación del emisor:
Extensión sin IU Informa del estado del flujo de la extensión y de la disponibilidad de tarjetas. Esto cubre los pasos de descubrimiento de tarjetas y de carga útil de aprovisionamiento. Se implementa extendiendo la clase base del SDK D1
D1IssuerProvisioningExtensionHandler.Extensión de IU Autentica al usuario final. Se trata de una pantalla independiente que usa las mismas credenciales de inicio de sesión que la aplicación del emisor. Implementa el
D1IssuerProvisioningExtensionAuthorizationProvidingprotocolo.
El SDK D1 proporciona una implementación base para la extensión sin IU, de modo que no tenga que implementar toda la lógica usted mismo. La aplicación del emisor llama a D1Task.configure() con WalletExtensionConfig durante el inicio de la aplicación para compartir los detalles de las tarjetas con la extensión. Aunque esta configuración solo es necesaria una vez después de la instalación, recomendamos llamarla en cada inicio de la aplicación para mantener actualizada la información de las tarjetas.
Después de una autenticación correcta en la extensión de IU, la aplicación del emisor debe llamar a D1IssuerProvisioningExtensionAuthorizationProviding.bindingHash() para recuperar la carga útil codificada del hash de vinculación del cliente (cbp). La aplicación del emisor debe pasar este cbp valor al backend del emisor al solicitar el token del emisor. Luego debe llamar a D1IssuerProvisioningExtensionAuthorizationProviding.login() para que el SDK pueda continuar el flujo de la extensión sin IU.
Diagramas de secuencia
1. Apple Wallet muestra el botón de la aplicación del emisor
2. Autenticación del usuario final
3. Se muestran las tarjetas disponibles
4. Tokenización
Integre Apple Wallet mediante el SDK D1
Configuración del SDK
Cuando realiza la inicialización del SDK de iOS, la aplicación del emisor también debe llamar a configure(ConfigParams.walletExtensionConfig(...)) y proporcionar:
cardParamsList
Use esta variante cuando tenga un único consumerId y un único issuerId:
cardParamsList– Lista de identificadores de tarjeta, imagen de la tarjeta, títulos del producto y últimos cuatro dígitos. La imagen de la tarjeta y el título del producto se muestran en Apple Wallet.appGroupID– El ID del contenedor compartido para que el SDK D1 pueda compartir datos entre la aplicación del emisor y sus extensiones.
issuerParamsList
Use esta variante cuando admita múltiples combinaciones de issuerId y consumerId:
issuerParamsList– Lista decardParamsListcon el correspondienteissuerIdyconsumerId.appGroupID– El ID del contenedor compartido para que el SDK D1 pueda compartir datos entre la aplicación del emisor y sus extensiones.
ID del grupo de la app
De forma predeterminada, la aplicación del emisor y sus extensiones no comparten almacenamiento. Use grupos de apps para compartir almacenamiento entre ellas. Consulte el descripción general de la extensión de Apple para más detalles.
appGroupID identifica el contenedor compartido entre la aplicación del emisor y sus extensiones. Se configura en Xcode en Capabilities.

Entitlement de Apple Pay
De forma similar al aprovisionamiento de Apple Pay dentro de la app, debe añadir el entitlement com.apple.developer.payment-pass-provisioning a los targets de extensión con y sin IU. Para obtener detalles de incorporación, consulte la documentación de aprovisionamiento de Apple Wallet o Incorporación de aprovisionamiento push para carteras.
Extensión de IU
Crear una extensión de IU

Añada un nuevo target en Xcode de tipo Extensión de IU de Intents.
En el nuevo target, habilite los mismos valores de ID del grupo de apps y de entitlement que en la aplicación del emisor. Si el ID del grupo de apps es diferente, el login API devuelve el walletExtensionAppGroupIDNotFound error.
Actualice la extensión Info.plist:
Establezca
NSExtensionPointIdentifierencom.apple.PassKit.issuer-provisioning.authorization.Establezca
NSExtensionPrincipalClassa una clase que cumpla conD1IssuerProvisioningExtensionAuthorizationProviding.
Ejemplo de entitlements y configuración de la extensión:
Integre el SDK para la extensión de IU
El SDK D1 proporciona el D1IssuerProvisioningExtensionAuthorizationProviding protocolo, que extiende el de Apple PKIssuerProvisioningExtensionAuthorizationProviding y añade bindingHash() y login() APIs.
En la extensión de IU, implemente un controlador de vista que cumpla con D1IssuerProvisioningExtensionAuthorizationProviding, autentica al usuario final, llama a bindingHash() para recuperar el cbp, solicita el token del emisor al backend del emisor con este cbp, y luego llama a login. Consulte la inicio de sesión del SDK documentación para la generación de tokens.
Inicio de sesión con un único issuerId
Inicio de sesión con varios issuerIds
Extensión sin IU
Crear una extensión sin IU

Añada un nuevo target en Xcode de tipo Extensión de Intents. Desmarque Incluir extensión de IU porque la extensión de IU se creó previamente.
En el nuevo target, habilite los mismos valores de ID del grupo de apps y de entitlement que en la aplicación del emisor. Si el ID del grupo de apps es diferente, las operaciones del SDK D1 devuelven el walletExtensionAppGroupIDNotFound error.
Actualice la extensión Info.plist:
Establezca
NSExtensionPointIdentifierencom.apple.PassKit.issuer-provisioning.Establezca
NSExtensionPrincipalClassa una clase que extiendaD1IssuerProvisioningExtensionHandler.
Ejemplo de entitlements y configuración de la extensión:
Integre el SDK para la extensión sin IU
El SDK D1 proporciona la clase base D1IssuerProvisioningExtensionHandler, que extiende el de Apple PKIssuerProvisioningExtensionHandler e implementa las API requeridas. En la mayoría de los casos, solo necesita extender esta clase.
Gestión de errores
Opcionalmente, sobrescriba errorEncountered(_:) en la extensión sin IU para registrar o hacer seguimiento de los errores recibidos durante el flujo de la extensión.
Los casos de error típicos incluyen:
El
appGroupIDes inválido o no se encuentra.El backend D1 devuelve un error.
Requisitos funcionales de Apple
Para alinearse con los requisitos funcionales de Apple, el SDK D1 D1IssuerProvisioningExtensionHandler y la aplicación del emisor adoptan las siguientes prácticas:
Muestre la imagen de la tarjeta y el nombre del titular.
Determine si hay tarjetas disponibles (elegibilidad) en un plazo de 100 ms desde que Apple invoque la API.
Proporcione la imagen de la tarjeta y los iconos de la app con bordes cuadrados.
Admita tanto métodos de inicio de sesión manual como biométrico para la autenticación en la extensión de IU.
Preguntas frecuentes
Última actualización
¿Te fue útil?