laulamanapps / apple-passbook
Generate Apple Passbooks from PHP
Installs: 119 905
Dependents: 1
Suggesters: 0
Security: 0
Stars: 7
Watchers: 2
Forks: 3
Open Issues: 2
Requires
- php: ^7.4|^8.0
- ext-exif: *
- ext-json: *
- ext-openssl: *
- ext-zip: *
- ramsey/uuid: ^3 || ^4
- werkspot/enum: ^2.1 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5
Suggests
README
This package provides a simple OOP integration of the Apple Passbook API for your PHP project.
Installation
With composer, add:
$ composer require laulamanapps/apple-passbook
Or if your using Symfony install laulamanapps/apple-passbook-bundle:
$ composer require laulamanapps/apple-passbook-bundle
Run Tests
We use act to run tests which runs github actions locally:
$ act -P ubuntu-latest=shivammathur/node:latest
Get certificate
Head over to the Apple Developer Portal to get yourself a certificate to sign your passbooks with.
Convert the certificate and key to a .p12 file using the Keychain Access
Setup Compiler
use LauLamanApps\ApplePassbook\Build\CompilerFactory; $factory = new CompilerFactory(); $compiler = $factory->getCompiler('<PathToCertificate>', '<CertificatePassword>');
AppleWWDRA certificate.
Included ar 2 AppleWWDRCA certificates:
- AppleWWDRCA.pem - Expires feb 3 2023
- AppleWWDRCAG3.pem - Expires feb 20 2030
By default AppleWWDRCA is used if you want to use the otherone you can do so by setting its file path as the 3rd option in the CompilerFactory
or calling setAppleWWDRCA()
on the Signer
class for custom implementation
Create Passbook
use LauLamanApps\ApplePassbook\EventTicketPassbook; use LauLamanApps\ApplePassbook\MetaData\Barcode; use LauLamanApps\ApplePassbook\MetaData\Field\Field; use LauLamanApps\ApplePassbook\MetaData\Image\LocalImage; use LauLamanApps\ApplePassbook\MetaData\Location; use LauLamanApps\ApplePassbook\Style\BarcodeFormat; use LauLamanApps\ApplePassbook\Style\Color\Rgb; $passbook = new EventTicketPassbook('nmyuxofgna'); $passbook->setTeamIdentifier('<TeamId>'); $passbook->setPassTypeIdentifier('<PassTypeId>'); $passbook->setOrganizationName('Apple Inc.'); $passbook->setDescription('Apple Event Ticket'); $passbook->setRelevantDate(new DateTimeImmutable('2011-12-08T13:00-08:00')); $passbook->setForegroundColor(new Rgb(255, 255, 255)); $passbook->setBackgroundColor(new Rgb(60, 65, 76)); $passbook->setWebService('https://example.com/passes/', 'vxwxd7J8AlNNFPS8k0a0FfUFtq0ewzFdc'); $passbook->addLocation(new Location(37.6189722, -122.3748889)); $passbook->addLocation(new Location(37.33182, -122.03118)); $barcode = new Barcode(); $barcode->setFormat(BarcodeFormat::pdf417()); $barcode->setMessage('123456789'); $passbook->setBarcode($barcode); $event = new Field(); $event->setKey('event'); $event->setLabel('EVENT'); $event->setValue('The Beat Goes On'); $passbook->addPrimaryField($event); $loc = new Field(); $loc->setKey('loc'); $loc->setLabel('LOCATION'); $loc->setValue('Moscone West'); $passbook->addSecondaryField($loc); $passbook->addImage(new LocalImage('/files/Event/background.png')); $passbook->addImage(new LocalImage('/files/Event/icon.png')); $passbook->addImage(new LocalImage('/files/Event/logo.png')); $passbook->addImage(new LocalImage('/files/Event/thumbnail.png'));
Compile Passbook
header('Content-Description: File Transfer'); header('Content-Type: application/vnd.apple.pkpass'); header('Content-Disposition: filename="boardingpass.pkpass"'); echo $compiler->compile($passbook);
Examples
For the examples to work place the certificate P12 file in the /certificates
folder and fill out the required information in the example scripts:
<CertificatePassword>
, <TeamId>
, <PassTypeId>
Example php scripts can be found in docs/example
:
Credits
This package has been developed by LauLaman.