Veja as principais mudanças da versão 2.x.x:
- O padrão EMV MPM foi atualizado e remodelado para suportar novos campos que podem ser utilizados nos Pix;
- A validação e verificação das chaves Pix foi aprimorada;
- A leitura de um código Pix resulta em um objeto de EMVs mais flexível;
- Os modificadores do payload foram removidos, sendo que agora, todos os dados preenchidos são automaticamente tratados e cortados respeitando completamente o padrão EMV;
- A classe
BaseAPIfoi removida, adotando como sugestão a biblioteca piggly/php-api-client que traz muito mais flexibilidade e segurança; - Os payloads para APIs foram remodelados para serem mais eficientes e flexíveis.
Classe Parser
As mudanças na classe Parser foram apenas internas.
Classe Reader
Além das otimizações internas e os métodos já existentes previamente, novos métodos foram acrescentados:
getMPM() retorna o gerenciador de campos EMV para obter qualquer campo adicional por ID;
getPixKey() retorna a chave Pix (se houver);
getDescription() retorna a descrição do Pix (se houver);
getUrl() retorna a url do Pix (se houver);
getAmount() retorna o valor do Pix (se houver);
getMerchantName() retorna o nome do titular do Pix (se houver);
getMerchantCity() retorna a cidade da conta titular do Pix (se houver);
getPostalCode() retorna o CEP da conta titular do Pix (se houver);
getTid() retorna o ID da transação do Pix (se houver).
O método export() vai determinar se o tipo de objeto compatível com o Pix, seja ele StaticPayload ou DynamicPayload. Se não for possível determinar, pela ausência do Point of Initiation Method, a presença ou ausência da URL determinará o formato.
Classes StaticPayload e DynamicPayload
A classe Payload deixa de existir, tornando-se AbstractPayload e as derivações continuam a mesma, mas com melhor separação de responsabilidades. Um DynamicPayload pode apenas:
setUrl(), informando a URL do Pix no SPI.
Enquanto que em StaticPayload, é possível:
setPixKey()para definir a chave Pix;setDescription()para indicar a descrição do Pix;setTid() e getTid()com o ID de transação do Pix;setAmount()com o valor a ser pago pelo Pix.
Ambas, podem usar:
setMerchantName()para definir o nome do titular da conta Pix;setMerchantCity()para definir a cidade da conta titular Pix;setPostalCode()para definir o CEP da conta titular Pix.
Mas, os dois payloads contam o campos flexíveis agora. Assim, é possível mudar a estrutura de campos, adicionar novos campos e definir todos os valores através da classe MPM com o método:
changeMpm()que muda a estrutura de campo do Pix.
Entretanto cada payload aplica algumas regras no método acima para manter a consistência do mesmo.
Classes de Payloads da API
A classe de envio de requisições BaseApi foi completamente removida, ela não era flexível o bastante e exigia muitas customizações. Por conta disso, a remoção. Entretanto, deixamos como sugestão a biblioteca piggly/php-api-client, que foi projetada para ser flexível e muito mais robusta que a solução anterior.
As classes de payloads são bem intuitivas e bem fáceis de utilizar, elas foram remodeladas para melhor (claro). Será preciso readaptar seus projetos para carregar as novas classes que migraram de namespace.