Personalizar PPSE
Descripción general
Según se define en EMV Book B, el PPSE (Proximity Payment System Environment) es el punto de entrada para los pagos sin contacto. Cada tarjeta digital tiene su propio PPSE, definido en el perfil del token. Contiene la lista de identificadores de aplicación (AID) compatibles, con las etiquetas de aplicación y prioridades correspondientes.
NFC Wallet SDK proporciona API de gestión de PPSE. Permite que tu aplicación de billetera digital:
Obtén el PPSE (PPSE predeterminado definido en el perfil de la tarjeta digital).
Obtén el PPSE auxiliar (PPSE definido en el perfil auxiliar de la tarjeta digital para tarjetas de doble marca).
Personaliza un nuevo PPSE (PPSE personalizado).
Obtén o restablece el PPSE personalizado.
NFC Wallet SDK utiliza el PPSE personalizado cuando está definido para una transacción sin contacto.
Usar API de gestión de PPSE para aplicar tu política en un programa de billetera digital de doble marca.
SDK de NFC Wallet utiliza solo el PPSE o el PPSE personalizado. No utiliza el PPSE auxiliar.
Integración del SDK
El API de gestión de PPSE incluye el PPSEFCITemplate clase y estas DigitalCard operaciones:
DigitalCard.ppse: Obtiene el PPSE predeterminado definido en el perfil del token.DigitalCard.auxiliaryPPSE: Obtiene el PPSE definido en el perfil auxiliar de la tarjeta digital (tarjetas de doble marca).DigitalCard.customPPSE: Obtiene el PPSE personalizado. Devuelvenilsi no está definido.DigitalCard.setCustomPPSE: Establece un PPSE personalizado. Pasanilpara borrarlo.
El SDK valida automáticamente la plantilla PPSE cuando llamas a DigitalCard.setCustomPPSE.
Consulta Reglas de validación.
Creación de PPSE personalizado
Crea un PPSE personalizado con PPSEFCITemplate de una de estas maneras:
Usa una plantilla de PPSE existente.
Usa bytes de PPSE sin procesar.
Constrúyelo desde cero.
Método 1: Crear PPSE a partir de una plantilla existente
Usa este enfoque cuando quieras partir del PPSE de la tarjeta digital y hacer modificaciones específicas.
Cuándo usarlo:
Quieres personalizar campos específicos del PPSE existente, como la prioridad o las etiquetas.
Quieres conservar la estructura predeterminada del PPSE mientras realizas cambios selectivos.
Necesitas una plantilla base para la personalización.
Método 2: Crear PPSE a partir de bytes en bruto
Usa este enfoque cuando ya tengas disponibles los datos completos de la respuesta PPSE en formato BER-TLV.
Cuándo usarlo:
Ya tienes los datos completos de la respuesta PPSE como bytes en bruto.
Método 3: Crear PPSE desde cero
Usa este enfoque cuando necesites construir una estructura PPSE mediante programación definiendo cada componente individualmente.
Cuándo usarlo:
Estás creando datos PPSE sin datos de bytes existentes.
Necesitas definir entradas de directorio, AID, etiquetas y otros componentes del PPSE mediante programación.
Quieres una construcción segura de tipos con validación en tiempo de compilación.
Prefieres objetos estructurados en lugar de bytes en bruto.
DigitalCard expone la respuesta PPSE como PPSEFCITemplate. También puedes construir tu propio PPSEFCITemplate. El siguiente ejemplo muestra cómo.
Borrar un PPSE personalizado
Pasa nil para eliminar el PPSE personalizado y restaurar la respuesta PPSE predeterminada.
Reglas de validación
NFC Wallet SDK valida el PPSE personalizado cuando llamas a DigitalCard.setCustomPPSE. Se asegura de que el PPSE personalizado cumpla los requisitos EMV y la codificación BER-TLV.
Límites de tamaño
La carga útil BER-TLV serializada debe tener 256 bytes o menos.
Las claves de etiquetas personalizadas dentro de
BF0Co61no deben superar los 2 bytes.
Etiquetas requeridas
Tu PPSEFCITemplate debe incluir:
DF Name — etiqueta
84Al menos una entrada de directorio — etiqueta
61dentro deBF0CUn identificador de aplicación en cada entrada de directorio — etiqueta
4F
Si la validación falla, el SDK lanza DigitialCard.Error.invaldPPSE(_:) error
Restricciones de bloqueo de AID
Bloquear un AID con LockStatus.locked solo se admite para tarjetas Visa de una sola marca.
Si estableces LockStatus.locked para una tarjeta no compatible, el SDK lanza DigitialCard.Error.clientError(_:) error
Última actualización
¿Te fue útil?