Oi Ricardo, alguns tópicos para tentar ajudar:
1) Logo no início, o webservice de DF-e funciona em ambiente 2-homolog certinho, pode testar.
2) Após obter o XML de retorno do método sefazDistDFe(), use a classe Standardize, exemplo:
$retXml = $this->tools->sefazDistDFe($ultNSU, $NSU);
$std = new Standardize($retXml);
$retws = $std->toArray();
Assim você tem um array com as informações de retorno, fica fácil de utiliza-las no teu código.
3) Veja que o método sefazDistDFe() tem dois parâmetros, provavelmente terá que usar ambos para controlar as consultas, veja na documentação da Nota Técnica 2014/002.
4) Eu tenho uma anotação própria de agosto assim:
// TODO 02/08/18: bloco implementação manual pois a classe Standardize da API NFePHP está com bug no doczip, não monta na estrutura os dois atributos B12-NSU e B13-schema.
Exemplo parcial do meu código onde tive que processar manualmente o ZIP devido ao aparente bug na API que acho que ainda não foi corrigido:
// Se existir, itera sobre as N ocorrência do elemento "B11_docZip".
if (isset($retws['loteDistDFeInt'])) {
{
// TODO 02/08/18: bloco implementação manual pois a classe Standardize da API NFePHP está com bug no doczip, não monta na estrutura os dois atributos B12-NSU e B13-schema.
$meuxml = $retXml;
$meuxml = substr($meuxml, stripos($meuxml, '<retDistDFeInt'));
$meuxml = substr($meuxml, 0, stripos($meuxml, '</retDistDFeInt>') + 16);
libxml_use_internal_errors(true);
if (!$simpleXml = simplexml_load_string($meuxml)) {
throw new Exception('Falhou load simplexml string');
}
}
foreach ($simpleXml->loteDistDFeInt[0] as $B11_docZip) {
if ($logAviso = $this->didrModel->mapXml($simpleXml, $B11_docZip, $this->didfModel->getIdDistribuicaoDfe())) {
Log::aviso($logAviso);
}
$this->didrModel->insere();
}
}