Ir para conteúdo
  • Cadastre-se

dev botao

Como gerar SignatureValue, DigestValue e X509Certificate para NFE/NFCE com PHP


Ver Solução Respondido por Remy Houard,
  • Este tópico foi criado há 1740 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?

 

Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código), sei que aqui o ponto forte são outras linguagens, mas acredito que a lógica de programação já ajudaria bastante.

 

Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.

 

OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.

 

OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?

Link para o comentário
Compartilhar em outros sites

Ainda estou na mesma, até tive uma evolução no referente as ferramentas no PHP, mas estou tendo muitos problemas por ser iniciante em XML.

Consigo ver o status da Sefaz, consultar NFC-e.

Mas transmitir, estou embananado...

Você pode me ajudar?
Sei que precisa assinar um trecho do xml (não sei qual) .

segue uma tentativa minha de assinar e gerar o digval:

<?php

$dados_xml='conteudo da xml';

 $signature;
 $pkeyid = openssl_pkey_get_private(file_get_contents('certificado.pem'));
 $keyData = openssl_pkey_get_details($pkeyid);
 // then pass the $output to  openssl_sign
 openssl_sign($dados_xml, $signature, $pkeyid);
 openssl_free_key($pkeyid);

echo "<br/>";
echo "<br/>";

//Exibe a assinatuda do documento
echo base64_encode($signature);


echo "<br/>";
echo "<br/>";

//Exibe o digval (ou tenta...)
$base64 = base64_encode(hash("sha1", $dados_xml, true));
echo $base64;

//----------------------//----------------------

?>

vc teria algum exemplo ou sabe o erro desse código?

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1740 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.