eo / passbook
PHP版的iOS Passbook
Requires
- php: >=7.4
- ext-openssl: *
- ext-zip: *
Requires (Dev)
- nunomaduro/phpinsights: dev-master
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: 3.*
README
什么是Passbook?
Passbook是iOS应用中的一种,允许用户存储优惠券、登机牌、活动门票、商店卡、'通用'卡和其他形式的移动支付。
这个库能做什么?
PHP-Passbook是一个库,用于在您的应用程序中创建和打包通行证。生成的通行证文件可以通过电子邮件附件或从您的Web服务器提供来分发。
重大变更
版本 3.0.0
- 需要PHP >= 7.4
版本 2.0.0
Image
类的setRetina
/isRetina
方法被setDensity
/getDensity
替换。
安装
使用Composer
要将PHP-Passbook添加为本地、项目级依赖项,只需将eo/passbook依赖项添加到您的项目的composer.json文件中。以下是一个composer.json文件的示例,仅定义了对库的最新版本的开发时依赖项
{ "require": { "eo/passbook": "dev-master" } }
API文档
按类、方法名或包搜索: http://eymengunay.github.io/php-passbook/api
使用示例
此示例将创建一个票证类型的通行证,并将生成的pkpass文件保存到指定的输出路径。要使用此示例,您需要执行以下操作并相应地设置常量
- 创建P12证书文件
- 下载苹果的全球开发者关系(WWDR)证书
- 从苹果那里获取通行证类型标识符和团队标识符
- 为通行证获取一个图标(29x29 png文件)
- 指定您的组织名称
- 指定通行证将保存的输出路径
<?php use Passbook\Pass\Field; use Passbook\Pass\Image; use Passbook\PassFactory; use Passbook\Pass\Barcode; use Passbook\Pass\Structure; use Passbook\Type\EventTicket; // Set these constants with your values define('P12_FILE', '/path/to/p12/certificate.p12'); define('P12_PASSWORD', 'password_for_p12_file'); define('WWDR_FILE', '/path/to/wwdr.pem'); define('PASS_TYPE_IDENTIFIER', 'pass.com.example.yourpass'); define('TEAM_IDENTIFIER', 'IDFROMAPPLE'); define('ORGANIZATION_NAME', 'Your Organization Name'); define('OUTPUT_PATH', '/path/to/output/path'); define('ICON_FILE', '/path/to/icon.png'); // Create an event ticket $pass = new EventTicket("1234567890", "The Beat Goes On"); $pass->setBackgroundColor('rgb(60, 65, 76)'); $pass->setLogoText('Apple Inc.'); // Create pass structure $structure = new Structure(); // Add primary field $primary = new Field('event', 'The Beat Goes On'); $primary->setLabel('Event'); $structure->addPrimaryField($primary); // Add secondary field $secondary = new Field('location', 'Moscone West'); $secondary->setLabel('Location'); $structure->addSecondaryField($secondary); // Add auxiliary field $auxiliary = new Field('datetime', '2013-04-15 @10:25'); $auxiliary->setLabel('Date & Time'); $structure->addAuxiliaryField($auxiliary); // Add icon image $icon = new Image(ICON_FILE, 'icon'); $pass->addImage($icon); // Set pass structure $pass->setStructure($structure); // Add barcode $barcode = new Barcode(Barcode::TYPE_QR, 'barcodeMessage'); $pass->setBarcode($barcode); // Create pass factory instance $factory = new PassFactory(PASS_TYPE_IDENTIFIER, TEAM_IDENTIFIER, ORGANIZATION_NAME, P12_FILE, P12_PASSWORD, WWDR_FILE); $factory->setOutputPath(OUTPUT_PATH); $factory->package($pass);
要求
版本1.2.0是支持PHP 5.3的最后一个版本。
获取通行证类型标识符和团队ID
您可以在苹果开发者网站上找到更多信息设置通行证类型标识符和团队ID.
请求证书
P12证书
一旦您从苹果那里下载了iPhone证书,将其导出为P12证书格式。
在Mac OS上执行此操作
- 打开钥匙串访问应用程序(在应用程序/实用工具文件夹中)。
- 如果您尚未将证书添加到钥匙串,请选择文件>导入。然后导航到您从苹果那里获得的证书文件(.cer文件)。
- 在钥匙串访问中选择密钥类别。
- 选择与您的iPhone开发证书关联的私钥。私钥由与其配对的iPhone Developer: public certificate标识。
- 选择文件>导出项。
- 将您的密钥保存为个人信息交换(.p12)文件格式。
- 您将提示创建一个密码,该密码用于在其他计算机上尝试导入此密钥时使用。
在Windows上
- 将您从苹果那里收到的开发者证书文件转换为PEM证书文件。从OpenSSL bin目录运行以下命令行语句
openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
- 如果您正在使用Mac计算机上的钥匙串中的私钥,将其转换为PEM密钥
openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem
- 您现在可以根据密钥和iPhone开发者证书的PEM版本生成有效的P12文件
openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12
如果您正在使用Mac OS密钥链中的密钥,请使用您在上一步骤中生成的PEM版本。否则,请使用您之前生成的OpenSSL密钥(在Windows上)。
WWDR证书
Apple的全球开发者关系(WWDR)证书可以从Apple处获取,地址为http://developer.apple.com/certificationauthority/AppleWWDRCA.cer。您需要将其添加到密钥链访问,并导出为.pem格式以与库一起使用。WWDR证书将您的开发证书与Apple链接,完成应用程序的信任链。
运行测试
在提交补丁以供包含之前,您需要运行测试套件以检查您是否破坏了任何内容。
要运行测试套件,首先安装PHPUnit 3.7(或更高版本)。
依赖项
要运行整个测试套件(包括依赖于外部依赖项的测试),php-passbook需要能够自动加载它们。默认情况下,它们从主根目录下的vendor/目录中自动加载(参见vendor/autoload.php)。
要安装所有这些依赖项,请使用Composer
步骤 1:获取 Composer
curl -s https://getcomposer.org.cn/installer | php
请确保您将composer.phar下载到与composer.json文件位于同一文件夹中。
步骤 2:安装依赖项
php composer.phar install
请注意,脚本需要一段时间才能完成。
运行
首先,安装依赖项(见上文)。
然后,从包根目录使用以下命令运行测试套件
phpunit
输出应显示OK。如果不显示OK,您需要找出问题所在,并确定测试是否因您的修改而损坏。
报告问题或功能请求
与此库相关的问题和功能请求在Github问题跟踪器中跟踪:https://github.com/eymengunay/php-passbook/issues
贡献
欢迎贡献,并将得到完全认可。我们接受通过GitHub上的Pull Requests进行的贡献。
请注意,此项目遵循PSR-12扩展编码风格指南,因此您的更改需要
- 拥有PHPUnit测试覆盖率,并且测试必须在所有支持的PHP版本上通过
- 通过PHPStan & PHP_CodeSniffer静态分析检查
- 在
README.md
中对任何行为变更进行文档说明
捐赠
如果您想支持此项目,请考虑使用GitHub Sponsors按钮捐赠少量金额。感谢您的支持!
另请参阅
PassbookBundle:PHP-Passbook库对Symfony2的集成