laulamanapps / apple-passbook
从PHP生成Apple Passbooks
v1.1.4
2021-11-22 22:37 UTC
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
本软件包为PHP项目提供了一个简单的面向对象(OOP)的Apple Passbook API集成。
安装
使用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开发。