Cette classe fournit la fonctionnalité permettant de créer des laissez-passer pour Wallet dans iOS d'Apple. Il crée, signe et conditionne le pass sous forme de fichier .pkpass
conformément à la documentation d'Apple.
PHP 7.0 ou supérieur (peut également fonctionner avec des versions plus anciennes)
Extension PHP ZIP (souvent installée par défaut)
Accès au système de fichiers pour écrire des fichiers de cache temporaires
Exécutez simplement la commande suivante dans le répertoire racine de votre projet pour l'installer via Composer :
composer require pkpass/pkpass
Ou ajoutez à votre composer.json : "pkpass/pkpass": "^2.0.0"
Veuillez jeter un œil au fichier examples/example.php pour un exemple d'utilisation. Pour plus d'informations sur le JSON du pass et comment le styliser, jetez un œil à la documentation sur développeurs.apple.com.
Exemple simple
Exemple de billet d'avion
Exemple de carte Starbucks
addFile
: ajoute un fichier sans paramètres régionaux comme icon.png
addRemoteFile
: ajoute un fichier à partir d'une URL sans paramètres régionaux comme https://xyz.io/icon.png
addLocaleFile
: ajoute un fichier localisé comme strip.png
addLocaleRemoteFile
: ajoute un fichier localisé à partir d'une url comme https://xyz.io/strip.png
Accédez au portail de provisionnement iOS.
Créez un nouvel ID de type de passe et notez l'ID de passe que vous choisissez, vous en aurez besoin plus tard.
Cliquez sur le bouton Modifier sous votre ID de type de passe nouvellement créé et générez un certificat selon les instructions affichées sur la page. Assurez-vous de ne pas choisir de nom pour le certificat, mais laissez-le vide.
Téléchargez le fichier .cer et faites-le glisser dans Trousseau Access.
Recherchez le certificat que vous venez d'importer et cliquez sur le triangle à gauche pour révéler la clé privée.
Sélectionnez à la fois le certificat et la clé privée, puis cliquez avec le bouton droit sur le certificat dans Trousseau d'accès et choisissez Export 2 items…
.
Choisissez un mot de passe et exportez le fichier dans un dossier.
Lorsque vous obtenez l'erreur « Impossible de lire le fichier de certificat. Cela peut être lié à l'utilisation d'une version d'OpenSSL qui a rendu obsolète certains hachages plus anciens. Plus d'informations ici : https://schof.link/2Et6z3m Erreur OpenSSL : error:0308010C:digital enveloppe routines ::unsupported' cela est dû au fait qu'osx exporte le fichier .p12 à l'aide d'une ancienne version d'OpenSSL. Pour résoudre ce problème, utilisez les commandes suivantes :
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
(remplacez key.p12 par votre nom de fichier .p12).
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
(utilisez le fichier key_new.p12 nouvellement généré dans votre génération de pass ci-dessous)
Demandez le certificat Pass ( .p12
) comme décrit ci-dessus et téléchargez-le sur votre serveur.
Définissez le chemin et le mot de passe corrects à la ligne 22.
Remplacez passTypeIdentifier
et teamIndentifier
par les valeurs correctes aux lignes 29 et 31 ( teamIndentifier
peut être trouvé sur le portail des développeurs).
Après avoir terminé ces étapes, vous devriez être prêt à partir. Téléchargez tous les fichiers sur votre serveur et accédez à l’adresse du fichier examples/example.php sur votre iPhone.
Si vous ne parvenez pas à ouvrir votre pass sur un iPhone, branchez l'iPhone sur un Mac et ouvrez l'application « Console ». Sur la gauche, vous pouvez sélectionner votre iPhone. Vous pourrez alors inspecter les erreurs survenues lors de l’ajout du pass :
Trust evaluate failure: [leaf TemporalValidity]
: Si vous voyez cette erreur, votre pass a été signé avec un certificat obsolète.
Trust evaluate failure: [leaf LeafMarkerOid]
: Vous n'avez pas laissé le nom du certificat vide lors de sa création dans le portail des développeurs.
Version 2.1.0 - avril 2023
Ajoutez une méthode alternative pour extraire le contenu P12 afin de contourner les problèmes dans les versions récentes d'OpenSSL.
Version 2.0.2 - octobre 2022
Passez à la méthode ZipArchive::OVERWRITE
pour ouvrir ZIP en raison de la dépréciation de PHP 8 (#120).
Version 2.0.1 - octobre 2022
Mettez à jour le certificat WWDR vers la v6 (#118).
Version 2.0.0 - septembre 2022
Modification de la signature du constructeur pour supprimer le troisième paramètre $json
.
Supprimez la méthode setJSON()
obsolète.
Suppression des méthodes checkError()
et getError()
en faveur des exceptions.
Veuillez lire les instructions ci-dessus et consulter la documentation du portefeuille avant de soumettre des tickets ou de demander de l'aide. Cela vaut peut-être également la peine de consulter Stackoverflow, qui contient de nombreuses questions sur cette bibliothèque.
Obtenez une assistance professionnelle pour ce package →
Séances de conseil personnalisées disponibles pour l’assistance à la mise en œuvre et le développement de fonctionnalités.