pkpass/pkpass

PHP iOS钱包PKPass类

资助包维护!
tschoffelen

安装数: 1,721,243

依赖项: 2

建议者: 0

安全性: 0

星级: 909

关注者: 54

分支: 187

v2.3.1 2024-03-25 13:37 UTC

This package is auto-updated.

Last update: 2024-09-20 17:42:50 UTC


README

Packagist Version Packagist Downloads Packagist License

此类提供了在苹果iOS钱包中创建通用的功能。它根据苹果的文档创建、签名并打包通用于.pkpass文件。

需求

  • PHP 7.0或更高版本(可能也适用于旧版本)
  • PHP ZIP扩展(通常默认安装)
  • 访问文件系统以写入临时缓存文件

安装

在项目根目录中运行以下命令即可通过Composer进行安装

composer require pkpass/pkpass

或在composer.json中添加:"pkpass/pkpass": "^2.0.0"

用法

请参阅examples/example.php文件以获取示例用法。有关通用的JSON以及如何对其进行样式的更多信息,请参阅developer.apple.com上的文档

包含的示例

添加文件的功能

  • addFile : 添加不带地区设置的文件,如 icon.png
  • addRemoteFile : 从URL添加不带地区设置的文件,如 https://xyz.io/icon.png
  • addLocaleFile : 添加带地区设置的文件,如 strip.png
  • addLocaleRemoteFile : 从URL添加带地区设置的文件,如 https://xyz.io/strip.png

请求通用的证书

  1. 访问iOS配置文件门户
  2. 创建一个新的通用类型ID,并记下您选择的通用ID,您稍后需要它。
  3. 点击您刚刚创建的通用类型ID下的编辑按钮,并根据页面上的说明生成证书。请确保不要为证书选择名称,而是将其保留为空。
  4. 下载.cer文件,并将其拖入钥匙串访问。
  5. 找到您刚刚导入的证书,点击左侧的三角形以显示私钥。
  6. 选择证书及其私钥,然后在钥匙串访问中右键单击证书,选择导出2项…
  7. 选择密码并将文件导出到文件夹。

OpenSSL错误

当您收到错误“无法读取证书文件。这可能与使用已弃用某些旧哈希的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(在下面的密码生成中使用新生成的 key_new.p12 文件)

Exporting P12 file

使 example.php 示例工作

  1. 按照上述说明请求 Pass 证书(.p12)并将其上传到您的服务器。
  2. 第 22 行 设置正确的路径和密码。
  3. 在第 29 行和第 31 行更改 passTypeIdentifierteamIndentifier 到正确的值(teamIndentifier 可在 开发者门户 中找到)。

完成这些步骤后,您应该可以开始使用了。将所有文件上传到您的服务器,然后在您的 iPhone 上导航到 examples/example.php 文件的地址。

调试通行证

如果您无法在 iPhone 上打开通行证,请将 iPhone 连接到 Mac,并打开“控制台”应用程序。在左侧,您可以选择您的 iPhone。然后您将能够检查添加通行证时发生的任何错误。

Console with Passkit error

  • 信任评估失败:[leaf TemporalValidity]:如果您看到此错误,则您的通行证是用过时的证书签名的。
  • 信任评估失败:[leaf LeafMarkerOid]:在创建它时,您没有在开发者门户中留下证书的名称。

更新日志

版本 2.1.0 - 2023 年 4 月

  • 添加提取 P12 内容的替代方法,以绕过 OpenSSL 最新版本中的问题。

版本 2.0.2 - 2022 年 10 月

  • 由于 PHP 8 弃用,切换到打开 ZIP 的 ZipArchive::OVERWRITE 方法(#120)。

版本 2.0.1 - 2022 年 10 月

  • 更新 WWDR 证书到 v6(#118)。

版本 2.0.0 - 2022 年 9 月

  • 更改构造函数的签名,移除第三个 $json 参数。
  • 删除已弃用的 setJSON() 方法。
  • 用异常替换 checkError()getError() 方法。

支持和文档

请在提交工单或请求支持之前阅读上述说明并查阅 钱包文档。检查 Stackoverflow(其中包含许多有关此库的问题)也可能很有帮助。



为此包获得专业支持 →
提供定制咨询服务,以支持实施和功能开发。