laulamanapps/apple-passbook

Generate Apple Passbooks from PHP

v1.1.4 2021-11-22 22:37 UTC

This package is auto-updated.

Last update: 2024-04-23 04:37:32 UTC


README

This package provides a simple OOP integration of the Apple Passbook API for your PHP project.

GithubCi Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version License

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.