
Laravel Mobile Pass: создание пропусков для Apple и Google Wallet
29 апреля 2026
Laravel Mobile Pass — пакет от Spatie, разработанный совместно с Дэном Джонсоном. Он позволяет создавать мобильные пропуска для Apple Wallet и Google Wallet: посадочные талоны, билеты на мероприятия, купоны, карты лояльности и подарочные карты. Поддерживается отправка обновлений для уже установленных пропусков.

Основные возможности
Пакет предоставляет единый интерфейс для работы с пропусками обеих платформ. Пример создания билета для Apple Wallet:
$mobilePass = EventTicketPassBuilder::make()
->setOrganizationName('Fab Four Promotions')
->setSerialNumber('BTL-SHEA-0042')
->setDescription('The Beatles at Shea Stadium')
->addField('event', 'Beatles Live at Shea')
->addField('attendee', 'John Lennon', label: 'Name')
->addField('seat', 'Floor A, Row 12');
Для Google Wallet требуется дополнительная регистрация шаблона класса перед созданием пропусков:
$mobilePass = EventTicketPassBuilder::make()
->setClass('beatles-shea-1965')
->setAttendeeName('John Lennon')
->setSection('Floor A')
->setRow('12')
->setSeat('24')
->setBarcode(BarcodeType::Qr, 'TICKET-12345');
Интеграция с Laravel
Метод save() возвращает модель MobilePass, реализующую интерфейс Responsable. При возврате из контроллера пакет автоматически определяет платформу и отдаёт файл .pkpass для Apple или перенаправляет в Google Wallet для Android.
Обновление пропусков
Изменения можно отправлять на уже установленные пропуска. Для Apple Wallet:
$mobilePass->updateField('seat', 'Floor B, Row 5', changeMessage: 'Your seat was changed to :value');
Для Google Wallet обновите массив content и сохраните:
$mobilePass->content['seat'] = 'Floor B, Row 5';
$mobilePass->save();
Отправка обновлений выполняется через задание PushPassUpdateJob. По умолчанию оно работает синхронно, но можно настроить очередь через переменную окружения MOBILE_PASS_QUEUE_CONNECTION.
Типы пропусков
Помимо билетов, пакет включает конструкторы для:
- Посадочных талонов (авиа, ж/д, автобусы)
- Купонов
- Карт лояльности
- Подарочных карт
Для авиабилетов используется AirlinePassBuilder с полями вроде кодов аэропортов и места пассажира:
AirlinePassBuilder::make()
->setOrganizationName('Etihad')
->setDepartureAirportCode('AUH')
->setDestinationAirportCode('LHR')
->setPassengerName('Paul McCartney')
->setSeats(Seat::make(number: '12A'));
Для другого транспорта расширьте BoardingPassBuilder и укажите тип TransitType.
Демонстрация и документация
Spatie предоставляет живую демонстрацию, где можно создать пропуска, установить на iPhone и проверить обновления. Исходный код демо доступен в репозитории.
Полная документация и инструкции по настройке учётных данных — в основном репозитории.

