Olá,
trabalho para uma prestadora de serviços e sou responsável por fazer a integração entre nosso sistema empresarial e o WebService do Fly-e Nota Betha para emissão de NFSe dentro de nosso modulo comercial.
Nosso sistema é feito em PHP e é nele que monto o XML para envio.
Para a criação do modelo de XML estou usando a classe DOMDocument to PHP e para assinar estou usando a biblioteca XMLSecLibs.
A princípio o modelo está igual ao exemplo fornecido pela Betha.
Mas sempre aparece erro E172 - Arquivo enviado com erro na assinatura.
Antes desse erro, aparecia o erro de Assinatura não encontrada, que creio ser causado pelo fato da biblioteca de assinatura colocar esta em outro namespace e o validador não identificar.
Por essa razão, comecei a tratar o XML manualmente, colocando ambos no mesmo namespace, removendo os prefixos e atributos extras que são gerados, e verifiquei cada hash calculada.
O DigestValue confere com o hash SHA1 da tag que preciso assinar.
O SignatureValue confere com a criptografia gerada pela nossa chave privada RSA, da tag SignedInfo.
Cheguei a conferir se não era a nossa chave privada que estivesse errada, mas tanto ela quanto o certificado que estou utilizando possuem o CNPJ da empresa como metadado.
Esse é o XML que tentei enviar por último, ele passa pelo openssl_verify e pela verificação do hash com o DigestValue já com o base64_decode:
teste.xml
E esse é o XML de exemplo da Betha:
GerarNfsePopuladoeAssinado.xml
Se não era para ser postado nessa área, peço desculpas.