Открыть сервис

Формат pass-файлов Apple Wallet

Формат pass-файлов Apple Wallet — это открытый стандарт цифровых пропусков и карт, разработанный компанией Apple для использования в экосистеме iOS и watchOS. Файлы с расширением .pkpass представляют собой ZIP-архивы, содержащие JSON-манифест, набор изображений и подпись, которые вместе формируют визуальное и функциональное представление проездного билета, посадочного талона, купона, подарочной карты или удостоверения личности.

История и развитие

Формат был представлен в 2012 году вместе с выходом iOS 6. Изначально он назывался Passbook и предназначался для хранения карт лояльности и купонов. С выходом iOS 9 в 2015 году сервис был переименован в Wallet, а формат файлов получил расширение .pkpass. Ключевым изменением стало добавление поддержки Apple Pay, что позволило интегрировать банковские карты и транзитные билеты непосредственно в приложение.

Техническое устройство

Структура архива

Pass-файл является ZIP-архивом со следующей структурой:

  • pass.json — основной файл манифеста, содержащий все данные о пропуске;
  • manifest.json — файл со списком всех файлов архива и их SHA-1 хэшами;
  • signature — файл подписи, созданный с использованием сертификата Apple;
  • изображения — набор PNG-файлов (icon.png, logo.png, background.png, strip.png и другие) в различных разрешениях для поддержки Retina-дисплеев.

Формат pass.json

Файл pass.json построен на основе JSON и содержит обязательные поля: formatVersion (версия формата), passTypeIdentifier (идентификатор типа пропуска), serialNumber (серийный номер), teamIdentifier (идентификатор команды разработчика) и organizationName (название организации). Дополнительные поля определяют визуальное оформление и поведение пропуска: backgroundColor, foregroundColor, labelColor, logoText, barcode (штрих-код или QR-код) и relevantDate (дата, когда пропуск становится актуальным).

Типы пропусков

Формат поддерживает несколько стандартизированных типов, определяемых в поле passType:

  • boardingPass — посадочные талоны на транспорт;
  • coupon — купоны и скидочные предложения;
  • eventTicket — билеты на мероприятия;
  • generic — универсальный тип для прочих случаев;
  • storeCard — карты лояльности и подарочные карты.

Механизм обновления

Apple Wallet поддерживает механизм push-уведомлений для обновления содержимого пропусков. Сервер эмитента может отправлять запрос на обновление через сервис Apple Push Notification Service (APNs). При получении уведомления устройство запрашивает новый .pkpass файл по URL, указанному в webServiceURL. Это позволяет обновлять статус посадочного талона при задержке рейса или изменять баланс подарочной карты без необходимости повторной загрузки файла пользователем.

Подпись и безопасность

Каждый pass-файл должен быть подписан цифровой подписью с использованием сертификата, выданного Apple разработчику. Подпись создается по алгоритму RSA с ключом не менее 2048 бит. Файл signature содержит подписанные хэши всех файлов архива, что гарантирует целостность данных. Устройства iOS проверяют подпись при импорте пропуска, отклоняя файлы с недействительными или просроченными сертификатами.

Применение

Формат широко используется авиакомпаниями, железнодорожными операторами, кинотеатрами, розничными сетями и банками. В России поддержку .pkpass реализовали такие сервисы, как «Аэрофлот», РЖД (мобильное приложение), а также ряд банков для отображения карт лояльности. Помимо стандартных сценариев, формат применяется для создания электронных пропусков на мероприятия и в системах контроля доступа.

Ограничения

Формат имеет ряд ограничений: он не поддерживает произвольные встраиваемые скрипты, размер архива ограничен (обычно не более 15–20 МБ), а срок действия сертификатов подписи ограничен одним годом. Кроме того, формат тесно связан с экосистемой Apple и не поддерживается нативно на устройствах Android, хотя существуют сторонние приложения-ридеры для просмотра содержимого файлов.

См. также

  • Apple Pay
  • iOS
  • JSON

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →