Este sistema permite generar tarjetas digitales personalizadas para Apple Wallet a partir de los datos almacenados en la base de datos pkpassgeneric. Cada tarjeta incluye la información profesional de un empleado y una vCard descargable mediante código QR.
El script generic/vcard/index.php se encarga de:
- Conectar a la base de datos
- Extrae los datos desde la tabla
empleados.
- Procesar cada empleado
- Crea una carpeta individual en
/generic/vcard/users/{idcard}/. - Descarga las imágenes de perfil y logo.
- Genera imágenes necesarias para el pase (icon, logo, fondo).
- Generar vCard
- Se construye una vCard con todos los datos personales y profesionales del empleado.
- Se guarda en
/generic/vcard/vcards/{idcard}.vcf.
- Construir el pase
- Se genera un JSON (
pass.json) con los datos del pase (nombre, puesto, colores, QR, etc.). - El QR apunta a la vCard del empleado para descarga directa.
- Se firma el pase con el certificado adecuado (
Certificados{empresa_slug}.p12o uno genérico). - El pase final se guarda como
/generic/vcard/pkpass/{idcard}.pkpass.
/vcards/{id}.vcf: Tarjeta de contacto en formato vCard 3.0./pkpass/{id}.pkpass: Pase listo para ser añadido a Apple Wallet./users/{id}/: Carpeta temporal con imágenes necesarias para el pase.
- php-pkpass: Librería PHP para generar y firmar archivos
.pkpass. - PHP >= 8.0 (con extensión
opensslhabilitada). - Certificado
.p12válido proporcionado por Apple Developer.
El sistema trabaja sobre una base de datos pkpassgeneric, que contiene las siguientes tablas relevantes:
empleados: información personal y profesional de cada empleado.distribution: registro de dispositivos que descargan el pase (utilizado en el servicio web de actualización).
Los empleados se insertan manualmente en la base de datos antes de ejecutar el script.
- Los certificados
.p12deben mantenerse fuera del repositorio si se publica el proyecto. - No almacenar las contraseñas ni rutas sensibles en el código en producción.
- Es recomendable utilizar variables de entorno para las credenciales de la base de datos y certificados.
- Accede al Apple Developer Portal e inicia sesión.
- Ve a Certificates, Identifiers & Profiles.
- En el apartado Identifiers, haz clic en el botón ➕ para añadir un nuevo identificador.
- Selecciona el tipo Pass Type ID.
- Introduce un identificador con el siguiente formato:
pass.com.tudominio.nombre - Guarda y continúa.
- Abre la aplicación Acceso a Llaveros (Keychain Access).
- En la barra de menús, selecciona:
Acceso a Llaveros > Asistente de Certificados > Solicitar un certificado a una Autoridad Certificadora… - Completa el formulario:
- Dirección de correo electrónico del usuario: tu email del Apple ID.
- Nombre común: nombre de la empresa o proyecto.
- CA por correo electrónico: deja en blanco.
- Selecciona la opción Guardar en disco.
- Guarda el archivo
.csren tu escritorio o ubicación deseada.
- Vuelve al portal de Apple Developer.
- Selecciona el identificador de tipo Pass Type ID que has creado.
- Haz clic en Create Certificate.
- Sube el archivo
.csrgenerado en el paso anterior. - Descarga el archivo
.cer(certificado) que te ofrece Apple al finalizar.
- Haz doble clic en el archivo
.cerdescargado para instalarlo en el llavero. - En Acceso a Llaveros, localiza el certificado bajo Mis certificados.
- Asegúrate de que está acompañado por su clave privada (desplegable).
- Haz clic derecho sobre el certificado > Exportar…
- Elige el formato Personal Information Exchange (.p12).
- Guarda el archivo
.p12y establece una contraseña segura cuando te lo solicite.
Ahora tienes un archivo .p12 válido que puedes utilizar para firmar tus archivos .pkpass.
