Этот класс предоставляет функциональные возможности для создания пропусков для Wallet в iOS от Apple. Он создает, подписывает и упаковывает пропуск в файл .pkpass в соответствии с документацией Apple.
PHP 7.0 или выше (может работать и со старыми версиями)
Расширение PHP ZIP (часто устанавливается по умолчанию)
Доступ к файловой системе для записи временных файлов кэша.
Просто запустите следующую команду в корневом каталоге вашего проекта для установки через Composer:
composer require pkpass/pkpass
Или добавьте в ваш композитор.json: "pkpass/pkpass": "^2.0.0"
Пожалуйста, взгляните на файл example/example.php для примера использования. Дополнительную информацию о JSON для пропуска и его стилизации можно найти в документации на сайте Developers.apple.com.
Простой пример
Пример авиабилета
Пример карты Старбакс
addFile : добавить файл без локали, например icon.png
addRemoteFile : добавить файл по URL-адресу без локали, например https://xyz.io/icon.png
addLocaleFile : добавить локализованный файл, например, strip.png
addLocaleRemoteFile : добавьте локализованный файл по URL-адресу, например https://xyz.io/strip.png
Перейдите на портал подготовки iOS.
Создайте новый идентификатор типа пропуска и запишите выбранный вами идентификатор пропуска, он понадобится вам позже.
Нажмите кнопку «Изменить» под вновь созданным идентификатором типа пропуска и сгенерируйте сертификат в соответствии с инструкциями, показанными на странице. Обязательно не выбирайте имя для сертификата, а оставьте его пустым.
Загрузите файл .cer и перетащите его в Keychain Access.
Найдите сертификат, который вы только что импортировали, и щелкните треугольник слева, чтобы открыть закрытый ключ.
Выберите сертификат и закрытый ключ, затем щелкните сертификат правой кнопкой мыши в «Связке ключей» и выберите Export 2 items… .
Выберите пароль и экспортируйте файл в папку.
Когда вы получаете сообщение об ошибке «Не удалось прочитать файл сертификата. Это может быть связано с использованием версии OpenSSL, в которой устаревшие некоторые старые хэши. Дополнительную информацию можно найти здесь: https://schof.link/2Et6z3m Ошибка OpenSSL: ошибка: 0308010C: процедуры цифрового конверта:: unsupported». Это связано с тем, что osx экспортирует файл .p12 с использованием старой версии OpenSSL. Чтобы устранить эту проблему, используйте следующие команды:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp (замените key.p12 именем файла .p12).
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12 (используйте вновь созданный файл key_new.p12 при создании пароля ниже)

Запросите сертификат Pass ( .p12 ), как описано выше, и загрузите его на свой сервер.
Установите правильный путь и пароль в строке 22.
Измените passTypeIdentifier и teamIndentifier на правильные значения в строках 29 и 31 ( teamIndentifier можно найти на портале разработчика).
После выполнения этих шагов вы должны быть готовы к работе. Загрузите все файлы на свой сервер и перейдите по адресу файла example/example.php на своем iPhone.
Если вы не можете открыть свой пропуск на iPhone, подключите iPhone к Mac и откройте приложение «Консоль». Слева вы можете выбрать свой iPhone. После этого вы сможете проверить любые ошибки, возникающие при добавлении прохода:

Trust evaluate failure: [leaf TemporalValidity] : если вы видите эту ошибку, ваш пропуск был подписан устаревшим сертификатом.
Trust evaluate failure: [leaf LeafMarkerOid] : вы не оставили имя сертификата пустым при его создании на портале разработчика.
Версия 2.1.0 – апрель 2023 г.
Добавьте альтернативный метод извлечения содержимого P12, чтобы обойти проблемы в последних версиях OpenSSL.
Версия 2.0.2 – октябрь 2022 г.
Переключитесь на ZipArchive::OVERWRITE для открытия ZIP из-за устаревания PHP 8 (#120).
Версия 2.0.1 — октябрь 2022 г.
Обновите сертификат WWDR до версии 6 (#118).
Версия 2.0.0 – сентябрь 2022 г.
Изменена подпись конструктора, чтобы исключить третий параметр $json .
Удалите устаревший метод setJSON() .
Удалены методы checkError() и getError() в пользу исключений.
Прежде чем отправлять заявки или обращаться в службу поддержки, прочтите приведенные выше инструкции и ознакомьтесь с документацией по кошельку. Возможно, также стоит проверить Stackoverflow, где есть немало вопросов об этой библиотеке.
Получите профессиональную поддержку для этого пакета →
Доступны индивидуальные консультации для поддержки внедрения и разработки функций.