laulamanapps/apple-passbook

从PHP生成Apple Passbooks

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

This package is auto-updated.

Last update: 2024-09-23 05:40:43 UTC


README

本软件包为PHP项目提供了一个简单的面向对象(OOP)的Apple Passbook API集成。

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

安装

使用composer,添加

$ composer require laulamanapps/apple-passbook

或者,如果你使用Symfony,安装laulamanapps/apple-passbook-bundle

$ composer require laulamanapps/apple-passbook-bundle

运行测试

我们使用act来运行测试,它可以在本地运行github actions

$ act -P ubuntu-latest=shivammathur/node:latest

获取证书

前往Apple Developer Portal获取证书,以使用它签署你的passbooks。

转换证书和密钥为.p12文件,使用“密钥链访问”

设置编译器

use LauLamanApps\ApplePassbook\Build\CompilerFactory;

$factory = new CompilerFactory();
$compiler = $factory->getCompiler('<PathToCertificate>', '<CertificatePassword>');

AppleWWDRA证书。

包含2个AppleWWDRCA证书

  • AppleWWDRCA.pem - 有效期至2023年2月3日
  • AppleWWDRCAG3.pem - 有效期至2030年2月20日

默认情况下使用AppleWWDRCA,如果你想使用另一个,可以在CompilerFactory的第三个选项中设置其文件路径,或者在Signer类上调用setAppleWWDRCA()以进行自定义实现

创建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'));

编译Passbook

header('Content-Description: File Transfer');
header('Content-Type: application/vnd.apple.pkpass');
header('Content-Disposition: filename="boardingpass.pkpass"');

echo $compiler->compile($passbook);

示例

为了让示例工作,请将证书P12文件放置在/certificates文件夹中,并在示例脚本中填写所需信息:<CertificatePassword><TeamId><PassTypeId>

示例php脚本可以在docs/example中找到

信用

本软件包由LauLaman开发。