Extensiones de Push Provisioning
Con extensiones de la aplicación, puede exponer funcionalidad y contenido personalizado más allá de la aplicación del emisor. Esto permite al usuario final acceder a ello mientras interactúa con otras aplicaciones o iOS. Para obtener más información, consulte el documentación de extensiones de Apple.
Con una extensión de Apple Wallet, los tokens pueden aprovisionarse directamente desde la aplicación Apple Wallet en dispositivos iPhone y Apple Watch compatibles.
Aprovisionar tarjetas en la aplicación Apple Wallet mejora la experiencia dentro de la aplicación. Evita que el usuario final introduzca manualmente los datos de la tarjeta de pago.
NotaLa extensión de Apple Wallet se instala cuando el usuario final instala la aplicación del emisor. Para que Apple Wallet detecte las
pasesy muestre la extensión, el usuario final debe iniciar la aplicación del emisor al menos una vez.
Visión general

Cuando el usuario final inicia la aplicación Apple Wallet:
Apple consulta con la aplicación del emisor la disponibilidad de las tarjetas llamando a la API de estado API.
Cuando el usuario final selecciona la aplicación del emisor, el emisor solicita la autenticación del usuario utilizando la extensión de IU.
Apple consulta con la aplicación del emisor las tarjetas disponibles y muestra las tarjetas al usuario final. Apple llama a la API passEntries API para iPhone o remotePassEntries para Watch.
El usuario final selecciona una o más tarjetas. Para cada tarjeta seleccionada, Apple solicita la carga útil de aprovisionamiento a la aplicación del emisor. Luego Apple procede con el flujo de aprovisionamiento llamando a la generateAddPaymentPassRequest API.
Nota
El SDK de Push Provisioning usa la
generateAddPaymentPassRequestForInputAPI para obtener la carga útil de aprovisionamiento para el paso 4.Si los datos de autenticación del paso 2 se usan para obtener los detalles de la tarjeta en los pasos 3 y 4, establezca el tiempo de expiración en un valor suficiente. Por ejemplo, 5 minutos.
La extensión de Apple Wallet requiere dos extensiones en la aplicación del emisor:
Una extensión sin IU para informar el estado de la extensión y la descubribilidad de la tarjeta en la aplicación del emisor. Esto cubre los pasos 1, 3 y 4. Impléntela extendiendo la superclase PKIssuerProvisioningExtensionHandler superclase.
Una extensión de IU para autenticar al usuario final en el paso 2. Esta es una pantalla separada que usa las mismas credenciales de inicio de sesión de la aplicación del emisor. Implémentela cumpliendo con el protocolo PKIssuerProvisioningExtensionAuthorizationProviding protocolo.
Integración de Apple Wallet a través del SDK de Push Provisioning
Configuración de la aplicación
No se requiere configuración adicional para el SDK de Push Provisioning. Sin embargo, debe configurar un ID de App Group en la aplicación del emisor. Úselo para configurar el contenedor compartido entre la aplicación del emisor y sus extensiones.
Luego la aplicación del emisor puede usar este contenedor para almacenar detalles de la tarjeta (como los últimos 4 dígitos del PAN y el arte de la tarjeta) y datos de autenticación. La extensión puede recuperar los mismos datos.
De forma predeterminada, la aplicación del emisor no comparte almacenamiento con sus extensiones. Tanto la aplicación del emisor como sus extensiones deben usar el App Group para compartir almacenamiento. Para obtener más información, consulte la documentación de extensiones de Apple.
En Xcode, agregue el ID de App Group en la pestaña Capabilities, como se muestra a continuación. Para obtener más información, consulte la documentación de Apple App Groups.

Después de agregar el ID de App Group en Xcode, la aplicación del emisor puede almacenar datos en el grupo de acceso al llavero.
Apple Pay Entitlement
De manera similar al flujo de aprovisionamiento de Apple Pay, el desarrollador de la aplicación debe agregar la concesión com.apple.developer.payment-pass-provisioning concesión a ambos objetivos de extensión con y sin IU. Para obtener más información, consulte configuración del SDK.
Extensión de IU
La extensión de IU se utiliza para realizar la autenticación del usuario. Como el SDK no ofrece dicha funcionalidad, la aplicación del emisor debe implementar su propia IU de autenticación en esta extensión.
Crear una extensión de IU
En Xcode, agregue un nuevo objetivo de tipo Extensión de IU de Intents.
En el objetivo recién creado, agregue la concesión y, opcionalmente, el ID de App Group. Estos valores son los mismos que los definidos en la aplicación del emisor.

Ejemplo de WalletExtensionsUI.entitlements:
Reemplace los valores en
Info.plistcon los siguientes valores:
NSExtensionPointIdentifier
com.apple.PassKit.issuer-provisioning.authorization
NSExtensionPrincipalClass
Esta clase cumple con protocolo PKIssuerProvisioningExtensionAuthorizationProviding.
Ejemplo de Info.plist de la Extensión de IU de Wallet:
Implemente la extensión de IU protocolo PKIssuerProvisioningExtensionAuthorizationProviding protocolo
La autenticación del usuario final en la extensión Apple Wallet se implementa cumpliendo con el protocolo protocolo PKIssuerProvisioningExtensionAuthorizationProviding.
Aunque Apple marca esto como opcional, recomendamos autenticar al usuario final antes del aprovisionamiento.
Ejemplo de implementación de la Extensión de IU de Wallet:
Extensión sin IU
La extensión sin IU informa la disponibilidad de la tarjeta y los detalles de la tarjeta. También obtiene la carga útil de aprovisionamiento llamando a generateAddPaymentPassRequestForInput.
Crear una extensión sin IU
En Xcode, agregue un nuevo objetivo de tipo Extensión de Intents. Borre la Incluir extensión de IU casilla de verificación ya que la extensión de IU se ha creado en la sección anterior.
En el objetivo recién creado, agregue la concesión y, opcionalmente, el ID de App Group. Los valores son los mismos que los definidos en la aplicación del emisor.

Ejemplo de WalletExtensions.entitlements:
Reemplace los valores en
Info.plistcon los siguientes valores:
NSExtensionPointIdentifier
com.apple.PassKit.issuer-provisioning
NSExtensionPrincipalClass
Esta clase que cumple con superclase PKIssuerProvisioningExtensionHandler.
Ejemplo de Info.plist de la Extensión sin IU de Wallet:
Implemente una extensión sin IU superclase PKIssuerProvisioningExtensionHandler superclase
Apple exige que la aplicación del emisor extienda la superclase PKIssuerProvisioningExtensionHandler superclase para implementar la extensión Apple Wallet. Las siguientes secciones describen cada una de las API utilizadas:
Ejemplo de implementación de la Extensión sin IU de Wallet:
Implemente una extensión sin IU API de estado API
Apple llama a la API de estado API para consultar con la aplicación del emisor si hay tarjetas disponibles.
Apple impone un límite de tiempo de 100 ms para devolver la respuesta del manejador. Si lo excede, la aplicación Apple Wallet podría no mostrar la aplicación del emisor. Recomendamos recuperar la información de la tarjeta del grupo de llavero local. Luego use la SDK de Push Provisioning API getToken API para comprobar si la tarjeta está digitalizada.
Antes de llamar a API getToken, configure el SDK de Push Provisioning llamando a configure.
Ejemplo de implementación de la API de la Extensión sin IU de Wallet estado:
Implemente una extensión sin IU API passEntries API
Apple llama a la API passEntries API para solicitar los detalles de la tarjeta disponibles para agregar a un iPhone y mostrarlos al usuario final.
Debe proporcionar la siguiente información para que la tarjeta se muestre correctamente:
arte de la tarjeta
nombre del titular de la tarjeta
últimos 4 dígitos del PAN
esquema de la tarjeta
título del producto de la tarjeta
identificador de la tarjeta, usado más adelante por la
generateAddPaymentPassRequestAPI
Esta API tiene un límite de tiempo de 20 s para recuperar los detalles de la tarjeta. Si lo excede, la aplicación Apple Wallet lo trata como si no hubiera tarjetas disponibles.
Ejemplo de implementación de la API de la Extensión sin IU de Wallet passEntries:
Implemente la extensión sin IU remotePassEntries API
De forma similar a la API passEntries API, la remotePassEntries API se utiliza para obtener los detalles de la tarjeta. La diferencia es que esta API comprueba las tarjetas disponibles para ser aprovisionadas en un Apple Watch. Normalmente, la tarjeta se aprovisiona en el Apple Watch a través de la aplicación Apple Watch (aplicación puente).
Esta API también tiene un límite de tiempo de 20 s.
Ejemplo de implementación de la API de la Extensión sin IU de Wallet remotePassEntries:
Implemente la extensión sin IU generateAddPaymentPassRequest API
Después de que el usuario final haya seleccionado la tarjeta a aprovisionar, Apple llama a la generateAddPaymentPassRequest API para obtener la carga útil de aprovisionamiento.
El SDK TPC proporciona la generateAddPaymentPassRequestForInput API para obtener la carga útil de aprovisionamiento.
Esta API también tiene un límite de tiempo de 20 s.
Ejemplo de implementación de la API de la Extensión sin IU de Wallet generateAddPaymentPassRequest:
Requisitos funcionales de Apple
Para alinearse con los requisitos funcionales de Apple, la aplicación del emisor debe adoptar las siguientes prácticas:
Mostrar el arte de la tarjeta y el nombre del titular.
Usar bordes cuadrados para el arte de la tarjeta y el icono de la aplicación.
Compatibilizar métodos de inicio de sesión manual y biométrico para la autenticación en la extensión de IU.
Comprobar la elegibilidad de la tarjeta dentro de los 100 ms después de que Apple invoque la API.
Preguntas frecuentes
La aplicación del emisor necesita proporcionar información a Apple Wallet si las tarjetas están disponibles para aprovisionamiento antes de que el usuario final inicie sesión. ¿Cómo hacen esto los emisores?
El usuario final debe iniciar sesión en la aplicación del emisor al menos una vez. Esto actualiza la extensión con el estado de la tarjeta antes de que el usuario final use la extensión Apple Wallet.
Si un inicio de sesión falla, ¿dónde muestra la aplicación el error?
Se recomienda mostrar el error en la pantalla de inicio de sesión. La extensión de IU sigue la misma política que un inicio de sesión típico de la aplicación.
¿Cuáles son los requisitos de tamaño y resolución para las imágenes de la tarjeta?
La imagen de la tarjeta digital debe seguir los requisitos funcionales de Apple:
Usar un PDF vectorial (recomendado) o un PNG rasterizado.
Usar resolución 1536 x 969.
Mantener el tamaño de la imagen por debajo de 4 MB.
Usar esquinas cuadradas (no redondeadas).
Excluir elementos exclusivos de la tarjeta física, como el número de tarjeta, caracteres en relieve, holograma y contactos del chip.
Usar orientación horizontal. Si la tarjeta física usa orientación vertical, reorientarla a horizontal.
Se puede añadir un indicador contactless donde se acepten pagos NFC.
¿Las extensiones de Apple Wallet requieren un nuevo identificador de paquete?
Sí. Agregue los nuevos IDs de paquete a associatedApplicationIdentifier en el PNO. iOS admite identificadores de paquete comodín. Los emisores también deben actualizar los existentes pases en Apple Wallet usando las APIs de PNO.
Si el ID de paquete no está incluido en associatedApplicationIdentifier, la aplicación del emisor podría no poder acceder a la tarjeta que se añadió a través de la extensión Apple Wallet (por ejemplo, a través de API getToken).
¿Qué podría estar mal si el icono de la aplicación del emisor no se muestra?
Asegúrese de que la nueva aplicación del emisor esté instalada y abierta al menos una vez para actualizar las extensiones de Apple Wallet.
¿Los emisores necesitan implementar Aprovisionamiento dentro de la aplicación para que las extensiones de Apple Wallet funcionen?
Sí. La aplicación del emisor debe implementar Push Provisioning antes de implementar la extensión de Apple Wallet.
Última actualización
¿Te fue útil?