此类提供了在 Apple iOS 中为 Wallet 创建通行证的功能。它根据 Apple 的文档创建、签署通行证并将其打包为.pkpass
文件。
PHP 7.0 或更高版本(也可能适用于旧版本)
PHP ZIP 扩展(通常默认安装)
访问文件系统以写入临时缓存文件
只需在项目的根目录中运行以下命令即可通过 Composer 安装:
composer require pkpass/pkpass
或者添加到你的composer.json: "pkpass/pkpass": "^2.0.0"
请查看 Examples/example.php 文件以获取示例用法。有关 pass 的 JSON 以及如何设置其样式的更多信息,请查看developers.apple.com 上的文档。
简单的例子
机票示例
星巴克卡示例
addFile
: 添加一个没有区域设置的文件,如icon.png
addRemoteFile
:从不带区域设置的 url 添加文件,例如https://xyz.io/icon.png
addLocaleFile
:添加本地化文件,例如strip.png
addLocaleRemoteFile
:从https://xyz.io/strip.png
等 url 添加本地化文件
转至 iOS 配置门户。
创建一个新的通行证类型 ID,并记下您选择的通行证 ID,稍后您将需要它。
单击新创建的 Pass Type ID 下方的编辑按钮,并根据页面上显示的说明生成证书。确保不要为证书选择名称,而是将其保留为空。
下载 .cer 文件并将其拖到 Keychain Access 中。
找到您刚刚导入的证书,然后单击左侧的三角形以显示私钥。
选择证书及其私钥,然后右键单击“钥匙串访问”中的证书并选择Export 2 items…
。
选择密码并将文件导出到文件夹。
当您收到错误“无法读取证书文件”时。这可能与使用已弃用一些旧哈希值的 OpenSSL 版本有关。更多信息请参见:https://schof.link/2Et6z3m OpenSSL 错误:错误:0308010C:数字信封例程::不支持' 这是由于 osx 使用旧版本的 OpenSSL 导出 .p12 文件。要解决此问题,请使用以下命令:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
(将 key.p12 替换为您的 .p12 文件名)。
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
(在下面的 pass 生成中使用新生成的 key_new.p12 文件)
如上所述请求 Pass 证书 ( .p12
) 并将其上传到您的服务器。
在第 22 行设置正确的路径和密码。
将第 29 行和第 31 行的passTypeIdentifier
和teamIndentifier
更改为正确的值( teamIndentifier
可以在开发者门户上找到)。
完成这些步骤后,您应该可以开始了。将所有文件上传到您的服务器并导航到 iPhone 上的 Examples/example.php 文件的地址。
如果您无法在 iPhone 上打开通行证,请将 iPhone 插入 Mac 并打开“控制台”应用程序。在左侧,您可以选择您的 iPhone。然后,您将能够检查添加通行证时发生的任何错误:
Trust evaluate failure: [leaf TemporalValidity]
:如果您看到此错误,则表明您的通证是使用过时的证书签名的。
Trust evaluate failure: [leaf LeafMarkerOid]
:您在开发人员门户中创建证书时未将证书名称留空。
版本 2.1.0 - 2023 年 4 月
添加提取 P12 内容的替代方法,以避免最新版本的 OpenSSL 中的问题。
版本 2.0.2 - 2022 年 10 月
由于 PHP 8 弃用,切换到ZipArchive::OVERWRITE
方法来打开 ZIP (#120)。
版本 2.0.1 - 2022 年 10 月
将 WWDR 证书更新为 v6 (#118)。
版本 2.0.0 - 2022 年 9 月
更改了构造函数的签名以取出第三个$json
参数。
删除已弃用的setJSON()
方法。
删除了checkError()
和getError()
方法以支持异常。
在提交票证或请求支持之前,请阅读上述说明并查阅电子钱包文档。也许还值得检查一下 Stackoverflow,其中包含很多有关该库的问题。
获得此软件包的专业支持 →
定制咨询会议可用于实施支持和功能开发。