このクラスは、Apple の iOS で Wallet のパスを作成する機能を提供します。 Apple のドキュメントに従って、パスを作成、署名し、 .pkpass
ファイルとしてパッケージ化します。
PHP 7.0 以降 (古いバージョンでも動作する場合があります)
PHP ZIP 拡張機能 (多くの場合、デフォルトでインストールされます)
ファイルシステムにアクセスして一時キャッシュファイルを書き込む
Composer 経由でインストールするには、プロジェクトのルート ディレクトリで次のコマンドを実行するだけです。
composer require pkpass/pkpass
または、composer.json に"pkpass/pkpass": "^2.0.0"
を追加します。
使用例については、example/example.php ファイルをご覧ください。パスの JSON とそのスタイルの設定方法の詳細については、developers.apple.com のドキュメントを参照してください。
簡単な例
航空券例
スターバックスカードの例
addFile
: icon.png
のようなロケールなしのファイルを追加します
addRemoteFile
: https://xyz.io/icon.png
のようなロケールなしの URL からファイルを追加します
addLocaleFile
: strip.png
のようなローカライズされたファイルを追加します
addLocaleRemoteFile
: https://xyz.io/strip.png
のような URL からローカライズされたファイルを追加します
iOS プロビジョニング ポータルに移動します。
新しいパス タイプ ID を作成し、選択したパス ID を書き留めます。これは後で必要になります。
新しく作成したパス タイプ ID の下にある編集ボタンをクリックし、ページに表示される手順に従って証明書を生成します。証明書の名前は選択せず、空のままにしてください。
.cer ファイルをダウンロードし、キーチェーン アクセスにドラッグします。
インポートしたばかりの証明書を見つけて、左側の三角形をクリックして秘密キーを表示します。
証明書と秘密キーの両方を選択し、キーチェーン アクセスで証明書を右クリックし、 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
(以下のパス生成で新しく生成された key_new.p12 ファイルを使用します)
前述のようにパス証明書 ( .p12
) をリクエストし、サーバーにアップロードします。
22行目に正しいパスとパスワードを設定します。
29 行目と 31 行目でpassTypeIdentifier
とteamIndentifier
正しい値に変更します ( teamIndentifier
開発者ポータルにあります)。
これらの手順を完了すると、準備完了です。すべてのファイルをサーバーにアップロードし、iPhone 上の example/example.php ファイルのアドレスに移動します。
iPhone でパスを開けない場合は、iPhone を Mac に接続し、「コンソール」アプリケーションを開きます。左側でiPhoneを選択できます。これで、パスの追加中に発生したエラーを検査できるようになります。
Trust evaluate failure: [leaf TemporalValidity]
: このエラーが表示された場合、パスは古い証明書で署名されています。
Trust evaluate failure: [leaf LeafMarkerOid]
: 開発者ポータルで証明書を作成するときに、証明書の名前を空のままにしませんでした。
バージョン 2.1.0 - 2023 年 4 月
OpenSSL の最新バージョンの問題を回避するために、P12 コンテンツを抽出するための代替方法を追加します。
バージョン 2.0.2 - 2022 年 10 月
PHP 8 の非推奨のため、ZIP を開くZipArchive::OVERWRITE
メソッドに切り替えます (#120)。
バージョン 2.0.1 - 2022 年 10 月
WWDR 証明書を v6 (#118) に更新します。
バージョン 2.0.0 - 2022 年 9 月
3 番目の$json
パラメータを取り出すようにコンストラクターのシグネチャを変更しました。
非推奨のsetJSON()
メソッドを削除します。
例外を優先して、 checkError()
とgetError()
メソッドを削除しました。
チケットを送信したりサポートをリクエストしたりする前に、上記の手順を読み、ウォレットのドキュメントを参照してください。このライブラリに関する多くの質問が含まれている Stackoverflow をチェックすることも価値があるかもしれません。
このパッケージについて専門的なサポートを受ける →
導入サポートと機能開発には、カスタム コンサルティング セッションをご利用いただけます。