Diese Klasse bietet die Funktionalität zum Erstellen von Pässen für Wallet in Apples iOS. Es erstellt, signiert und verpackt den Pass als .pkpass
Datei gemäß der Dokumentation von Apple.
PHP 7.0 oder höher (funktioniert möglicherweise auch mit älteren Versionen)
PHP-ZIP-Erweiterung (häufig standardmäßig installiert)
Zugriff auf das Dateisystem zum Schreiben temporärer Cache-Dateien
Führen Sie einfach den folgenden Befehl im Stammverzeichnis Ihres Projekts aus, um die Installation über Composer durchzuführen:
composer require pkpass/pkpass
Oder fügen Sie zu Ihrer Composer.json hinzu: "pkpass/pkpass": "^2.0.0"
Bitte werfen Sie einen Blick auf die Datei „examples/example.php“, um ein Beispiel für die Verwendung zu finden. Weitere Informationen zum JSON für den Pass und zur Gestaltung finden Sie in den Dokumenten unter Developers.Apple.com.
Einfaches Beispiel
Beispiel für ein Flugticket
Beispiel einer Starbucks-Karte
addFile
: Fügen Sie eine Datei ohne Gebietsschema hinzu, z. B. icon.png
addRemoteFile
: Fügen Sie eine Datei von einer URL ohne Gebietsschema hinzu, z. B. https://xyz.io/icon.png
addLocaleFile
: Fügen Sie eine lokalisierte Datei wie strip.png
hinzu
addLocaleRemoteFile
: Fügen Sie eine lokalisierte Datei von einer URL wie https://xyz.io/strip.png
hinzu
Gehen Sie zum iOS-Bereitstellungsportal.
Erstellen Sie eine neue Pass-Typ-ID und notieren Sie sich die von Ihnen gewählte Pass-ID. Sie benötigen sie später.
Klicken Sie auf die Schaltfläche „Bearbeiten“ unter Ihrer neu erstellten Pass-Type-ID und erstellen Sie ein Zertifikat gemäß den Anweisungen auf der Seite. Achten Sie darauf, keinen Namen für das Zertifikat zu wählen, sondern ihn stattdessen leer zu lassen.
Laden Sie die .cer-Datei herunter und ziehen Sie sie in den Schlüsselbundzugriff.
Suchen Sie das Zertifikat, das Sie gerade importiert haben, und klicken Sie auf das Dreieck links, um den privaten Schlüssel anzuzeigen.
Wählen Sie sowohl das Zertifikat als auch den privaten Schlüssel aus, klicken Sie dann in der Schlüsselbundverwaltung mit der rechten Maustaste auf das Zertifikat und wählen Sie Export 2 items…
aus.
Wählen Sie ein Passwort und exportieren Sie die Datei in einen Ordner.
Wenn Sie die Fehlermeldung „Zertifikatdatei konnte nicht gelesen werden“ erhalten. Dies hängt möglicherweise mit der Verwendung einer OpenSSL-Version zusammen, bei der einige ältere Hashes veraltet sind. Weitere Informationen hier: https://schof.link/2Et6z3m OpenSSL-Fehler: Fehler:0308010C:Digital Envelope Routines::unsupported' Dies liegt daran, dass OSX die .p12-Datei mit einer alten Version von OpenSSL exportiert. Um dieses Problem zu beheben, verwenden Sie die folgenden Befehle:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
(ersetzen Sie key.p12 durch Ihren .p12-Dateinamen).
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
(verwenden Sie die neu generierte Datei key_new.p12 in Ihrer Pass-Generierung unten)
Fordern Sie das Pass-Zertifikat ( .p12
) wie oben beschrieben an und laden Sie es auf Ihren Server hoch.
Legen Sie in Zeile 22 den richtigen Pfad und das richtige Passwort fest.
Ändern Sie passTypeIdentifier
und teamIndentifier
in den Zeilen 29 und 31 in die richtigen Werte ( teamIndentifier
finden Sie im Entwicklerportal).
Nachdem Sie diese Schritte ausgeführt haben, sollten Sie startklar sein. Laden Sie alle Dateien auf Ihren Server hoch und navigieren Sie zur Adresse der Datei „examples/example.php“ auf Ihrem iPhone.
Wenn Sie Ihren Pass nicht auf einem iPhone öffnen können, schließen Sie das iPhone an einen Mac an und öffnen Sie die Anwendung „Konsole“. Auf der linken Seite können Sie Ihr iPhone auswählen. Anschließend können Sie alle Fehler überprüfen, die beim Hinzufügen des Passes auftreten:
Trust evaluate failure: [leaf TemporalValidity]
: Wenn dieser Fehler angezeigt wird, wurde Ihr Pass mit einem veralteten Zertifikat signiert.
Trust evaluate failure: [leaf LeafMarkerOid]
: Sie haben den Namen des Zertifikats beim Erstellen im Entwicklerportal nicht leer gelassen.
Version 2.1.0 – April 2023
Fügen Sie eine alternative Methode zum Extrahieren von P12-Inhalten hinzu, um Probleme in neueren Versionen von OpenSSL zu umgehen.
Version 2.0.2 – Oktober 2022
Wechseln Sie zur ZipArchive::OVERWRITE
Methode zum Öffnen von ZIP aufgrund der Ablehnung von PHP 8 (#120).
Version 2.0.1 – Oktober 2022
Aktualisieren Sie das WWDR-Zertifikat auf v6 (#118).
Version 2.0.0 – September 2022
Die Signatur des Konstruktors wurde geändert, um den dritten $json
-Parameter herauszunehmen.
Entfernen Sie die veraltete setJSON()
-Methode.
Die Methoden checkError()
und getError()
wurden zugunsten von Ausnahmen entfernt.
Bitte lesen Sie die obigen Anweisungen und konsultieren Sie die Wallet-Dokumentation, bevor Sie Tickets einreichen oder Support anfordern. Es könnte sich auch lohnen, einen Blick auf Stackoverflow zu werfen, der einige Fragen zu dieser Bibliothek enthält.
Holen Sie sich professionelle Unterstützung für dieses Paket →
Für die Implementierungsunterstützung und Funktionsentwicklung sind maßgeschneiderte Beratungssitzungen verfügbar.