Esta classe fornece a funcionalidade para criar passes para Wallet no iOS da Apple. Ele cria, assina e empacota o passe como um arquivo .pkpass
de acordo com a documentação da Apple.
PHP 7.0 ou superior (também pode funcionar com versões mais antigas)
Extensão PHP ZIP (geralmente instalada por padrão)
Acesso ao sistema de arquivos para gravar arquivos de cache temporários
Basta executar o seguinte comando no diretório raiz do seu projeto para instalar via Composer:
composer require pkpass/pkpass
Ou adicione ao seu compositor.json: "pkpass/pkpass": "^2.0.0"
Por favor, dê uma olhada no arquivo samples/example.php para ver um exemplo de uso. Para obter mais informações sobre o JSON do passe e como estilizá-lo, dê uma olhada na documentação em developers.apple.com.
Exemplo simples
Exemplo de passagem aérea
Exemplo de cartão Starbucks
addFile
: adicione um arquivo sem localidade como icon.png
addRemoteFile
: adicione um arquivo de um URL sem localidade como https://xyz.io/icon.png
addLocaleFile
: adicione um arquivo localizado como strip.png
addLocaleRemoteFile
: adicione um arquivo localizado de um URL como https://xyz.io/strip.png
Acesse o portal de provisionamento do iOS.
Crie um novo ID de tipo de passe e anote o ID de passe escolhido, pois você precisará dele mais tarde.
Clique no botão editar abaixo do ID do tipo de passe recém-criado e gere um certificado de acordo com as instruções mostradas na página. Certifique-se de não escolher um nome para o certificado, mas mantenha-o vazio.
Baixe o arquivo .cer e arraste-o para o Keychain Access.
Encontre o certificado que você acabou de importar e clique no triângulo à esquerda para revelar a chave privada.
Selecione o certificado e a chave privada, clique com o botão direito do mouse no certificado em Keychain Access e escolha Export 2 items…
.
Escolha uma senha e exporte o arquivo para uma pasta.
Quando você recebe o erro 'Não foi possível ler o arquivo de certificado. Isso pode estar relacionado ao uso de uma versão OpenSSL que obsoleto alguns hashes mais antigos. Mais informações aqui: https://schof.link/2Et6z3m Erro OpenSSL: erro:0308010C:rotinas de envelope digital::unsupported' isso se deve ao fato de o osx exportar o arquivo .p12 usando uma versão antiga do OpenSSL. Para corrigir esse problema, use os seguintes comandos:
openssl pkcs12 -legacy -in key.p12 -nodes -out key_decrypted.tmp
(substitua key.p12 pelo nome do arquivo .p12).
openssl pkcs12 -in key_decrypted.tmp -export -out key_new.p12
(use o arquivo key_new.p12 recém-gerado na geração do passe abaixo)
Solicite o certificado Pass ( .p12
) conforme descrito acima e carregue-o em seu servidor.
Defina o caminho e a senha corretos na linha 22.
Altere passTypeIdentifier
e teamIndentifier
para os valores corretos nas linhas 29 e 31 ( teamIndentifier
pode ser encontrado no Portal do Desenvolvedor).
Depois de concluir essas etapas, você estará pronto para prosseguir. Faça upload de todos os arquivos para o seu servidor e navegue até o endereço do arquivo samples/example.php no seu iPhone.
Se você não conseguir abrir seu passe em um iPhone, conecte o iPhone a um Mac e abra o aplicativo ‘Console’. À esquerda, você pode selecionar seu iPhone. Você poderá então inspecionar quaisquer erros que ocorram ao adicionar o passe:
Trust evaluate failure: [leaf TemporalValidity]
: Se você vir esse erro, seu passe foi assinado com um certificado desatualizado.
Trust evaluate failure: [leaf LeafMarkerOid]
: você não deixou o nome do certificado vazio ao criá-lo no portal do desenvolvedor.
Versão 2.1.0 – abril de 2023
Adicionado método alternativo para extrair conteúdo P12 para contornar problemas em versões recentes do OpenSSL.
Versão 2.0.2 – outubro de 2022
Mude para o método ZipArchive::OVERWRITE
de abertura do ZIP devido à descontinuação do PHP 8 (#120).
Versão 2.0.1 – outubro de 2022
Atualize o certificado WWDR para v6 (#118).
Versão 2.0.0 – setembro de 2022
Assinatura do construtor alterada para retirar o terceiro parâmetro $json
.
Remova o método setJSON()
obsoleto.
Métodos checkError()
e getError()
removidos em favor de exceções.
Por favor, leia as instruções acima e consulte a Documentação da Carteira antes de enviar tickets ou solicitar suporte. Também pode valer a pena verificar o Stackoverflow, que contém algumas perguntas sobre esta biblioteca.
Obtenha suporte profissional para este pacote →
Sessões de consultoria personalizadas disponíveis para suporte à implementação e desenvolvimento de recursos.