Cover Image for Laravel Mobile Pass: создание пропусков для Apple и Google Wallet

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 и проверить обновления. Исходный код демо доступен в репозитории.

Полная документация и инструкции по настройке учётных данных — в основном репозитории.