PHP + Nota Fiscal Eletronica

2,722 views
Skip to first unread message

J.e.a.n.

unread,
Sep 29, 2008, 2:03:56 PM9/29/08
to PHP Avançado
Boa tarde amigos!

Alguém está envolvido com o projeto da nota fiscal eletronica???

Estou começando um, e gostaria de saber se alguém está desenvolvendo
em PHP...

Abraços a todos.

Leandro C. Lopez

unread,
Sep 29, 2008, 2:18:56 PM9/29/08
to phpav...@googlegroups.com
Olá !!!

Eu estou desenvolvendo uma aplicação.
Atualmente já tenho a classe para conectar, um xml para testar se o servidor está online e um codigo em java para gerar a assinatura do xml.


2008/9/29 J.e.a.n. <jea...@gmail.com>

Jean paulo

unread,
Sep 29, 2008, 2:23:25 PM9/29/08
to phpav...@googlegroups.com
E ae Leandro!

Tudo beleza?

Eu estou gerando o XML, o sistema da empresa é em FoxPro, sendo que o
mesmo nao consegue fazer a assinatura do xml, então pensamos em usar o
AssinadorRS para assinar e desenvolver uma aplicaçãozinha em PHP para
enviar o arquivo XML para a sefaz...porém não sei se é possivel a
comunicação do PHP com os WS da sefaz.

Você conseguiu a comunicação? Um companheiro de grupo do FoxBrasil
disse que era pra mim esquecer a implementação qdo estava pensando em
fazer o envio através do PHP.

Att,
Jean

Leandro C. Lopez

unread,
Sep 29, 2008, 2:27:43 PM9/29/08
to phpav...@googlegroups.com
Consegui sim fazer a comunicação via o SOAP do php, pra ser mais preciso uso a biblioteca nusoap por me parecer mais amigavel. Olha o exemplo pra verificar se o servidor está online:

/*****************************************************************************/
$url="https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL";

$wsdl = $url;
 $certFile  = "/var/www/html/webservice/nusoap/brun2.pem";
$pass = "senha";

$client = new nusoap_client($url, 'WSDL');

//$client->setHTTPProxy('ip', 'porta', 'login', 'senha'); //Caso precise comunicar via proxy
$client->authtype = 'certificate';
$client->soap_defencoding = 'UTF-8';
$client->certRequest['sslcertfile']= $certFile;
$client->certRequest['passphrase'] = $pass;

$client->certRequest['verifypeer']=0;
$client->certRequest['verifyhost']=0;
$client->certRequest['trace']=1;
 $erro = $client->getError();

 echo "<br>Erro: $erro <br>";
   //return 0;

// chamada do método SOAP

$param = array("nfeCabecMsg" => '<?xml version="1.0" encoding="utf-8"?><cabecMsg versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe"><versaoDados>1.07</versaoDados></cabecMsg>', "nfeDadosMsg" => '<?xml version="1.0" encoding="utf-8"?><consStatServ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>');

$result = $client->call("nfeStatusServicoNF", $param);

// OPCIONAL : exibe a requisição e a resposta

echo '<h2>Requisição</h2>';
echo '<pre>'.htmlspecialchars($client->request).'</pre>';
echo '<h2>Resposta</h2>';
echo '<pre>'.htmlspecialchars($client->response).'</pre>';
// Exibe mensagens para debug
echo '<h2>Debug</h2>';
echo '<pre>'.htmlspecialchars($client->debug_str).'</pre>';
/*********************************************************************************/


2008/9/29 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Sep 29, 2008, 2:31:28 PM9/29/08
to phpav...@googlegroups.com
Legal...então é possivel fazer a conexão sim...
Você já está emitindo as NF-e? Ou só fez a comunicação por enqto?
Eu estou na geração do XML...q por sinal dá um trabaaaaalho...

Leandro C. Lopez

unread,
Sep 29, 2008, 2:35:16 PM9/29/08
to phpav...@googlegroups.com
Eu parei meu trabalho devido a falta de tempo... entao por enquanto tenho só isso...


2008/9/29 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Sep 29, 2008, 2:41:46 PM9/29/08
to phpav...@googlegroups.com
Bom...pelo menos uma dúvida vc sanou...é possivel fazer a comunicação
do PHP com os WS da sefaz...
Assim já fiquei mais tranquilo!

Vc conseguiu os WSDL dos WS? É preciso ter um certificado pra
conseguilos? Pois eu tentei acessar o link disponibilizado no manual
do contribuinte colocando o literal ?WSDL no fim e ele me pede um
certificado. Já conseguimos fazer com que um cliente fizesse o
credenciamento na Sefaz para emissao da NF-e, porém o cliente ainda
nao obteve um certificado digital.

On Line Sistemas

unread,
Sep 29, 2008, 5:22:55 PM9/29/08
to phpav...@googlegroups.com
Nós estamos começando.
- Gerar XML (oK)
- Assinatura ( Fizemos via assinadorRS, falta em PHP)

[]'s

Walber Sales
www.luagps.com.br

Leandro C. Lopez

unread,
Sep 30, 2008, 6:26:41 AM9/30/08
to phpav...@googlegroups.com
Certificado é obrigatório, nós temos o e-cnpj pela serprors.
Voce pode pegar um certificado para testes que geralmente se consegue nos sites da propria nfe do governo federal ou no do serprors.


2008/9/29 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Sep 30, 2008, 7:07:28 AM9/30/08
to phpav...@googlegroups.com
Bom dia amigos!

Walber, você gerou o XML em qual linguagem?
Tbm estou pensando em assinar o XML com o assinadorRS, até ja instalei
ele aqui...

Eu ainda nao acabei a geração do XML, estou tendo alguns problemas com
a parte do PIS/COFINS na qual tem uma CST nova...

Abraços a todos!

Jean paulo

unread,
Sep 30, 2008, 3:07:51 PM9/30/08
to phpav...@googlegroups.com
Leandro...sou iniciante no PHP, você poderia me explicar o código,
entendi alguma coisa dele, você indica o caminho do certificado,
instancia o cliente certo?

Após será mostrado a requisição, a resposta se caso ele responder e o
debug certo? fiz as adaptações aqui e ele não printa a resposta e nem
a requisição na tela, somente o Debug. Isto quer dizer q ele não está
se comunicando com o WS certo?

Abraços

On Line Sistemas

unread,
Sep 30, 2008, 3:44:14 PM9/30/08
to phpav...@googlegroups.com
Em PHP...
O meu certificado tem extensão .PFX e o do Leandro é .PEN
Liguei para a CertiSign e eles falaram que eles tem apenas .PFX
Muitos exemplos mostram com o .PEN
Achei algo que pode ser interessante para nós em PHP e com .PFX.
http://www.example-code.com/php/rsa_signWithPfx.asp


[]'s

Walber Sales
www.luagps.com.br
www.onlineautomacao.com.br

Jean paulo

unread,
Sep 30, 2008, 3:52:04 PM9/30/08
to phpav...@googlegroups.com
Pois o que eu estava tentando usar é .PFX tbm, porém eu estou perdidão
nessas histórias de certificado digital. Tenho q instalar esse .PFX?
Eu instalei, e indo em ferramentas no IE, depois na guia
conteudo,certificados, vendo o certificado instalado ele me diz que já
expirou ou não é valido, estou tentando usar o certificado da
associação...um q mtos ja usaram,usam ou sei lá o q...

alguém pode me dizer algo a respeito disto?

Abraço pessoal

On Line Sistemas

unread,
Sep 30, 2008, 4:21:09 PM9/30/08
to phpav...@googlegroups.com
Tivemos que comprar para continuar ....
Nos disseram a mesma coisa que você comentou.
Rolou R$ 250.00 por um ano o certificado.
[]'s

Walber


----- Original Message -----
From: "Jean paulo" <jea...@gmail.com>
To: <phpav...@googlegroups.com>

Jean paulo

unread,
Sep 30, 2008, 4:25:06 PM9/30/08
to phpav...@googlegroups.com
Ok Walber...nós precisamos entrar em contato com um cliente...assim ja
pedimos para ele comprar o certificado...

Obrigado pela ajuda...

Att,
Jean Dias

Leandro C. Lopez

unread,
Oct 1, 2008, 6:48:42 AM10/1/08
to phpav...@googlegroups.com
Walber, realmente vc adquire o certificado no formato .pfx, mas para funcionar com o SOAP do PHP tem que converter (pelo menos só assim funcionou pra mim) para .pem com o openssl no linux...


2008/9/30 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 1, 2008, 7:15:47 AM10/1/08
to phpav...@googlegroups.com
Bom dia galera!

Meu Deus...ainda tem q converter o certificado???? E como fazer
isso??heuheueheuhuhaua, eu como iniciante no PHP cada vez me apavoro
mais!

Abraços

Leandro C. Lopez

unread,
Oct 1, 2008, 7:29:45 AM10/1/08
to phpav...@googlegroups.com
Olha neste manual:
http://www.madboa.com/geek/openssl/#cert-pkcs12

A linha de comando certa to procurando nas minhas anotações, assim que achar passo ela... mas eh bom dar uma lida no manual pra entender como funciona...


2008/10/1 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 1, 2008, 7:35:55 AM10/1/08
to phpav...@googlegroups.com
Beleza...vou dar uma olhada...

que Deus me ajude :P

Leandro C. Lopez

unread,
Oct 1, 2008, 8:40:51 AM10/1/08
to phpav...@googlegroups.com
Que Deus e o Santo Google te ajude ... hehehehe


2008/10/1 Jean paulo <jea...@gmail.com>

On Line Sistemas

unread,
Oct 1, 2008, 11:13:45 PM10/1/08
to phpav...@googlegroups.com
Boa Noite..

A licença Zend Guard vale apenas para 01 ano? Ou tem Full-Life?

Grato,

Walber Sales
www.luagps.com.br


Jean paulo

unread,
Oct 2, 2008, 10:56:58 AM10/2/08
to phpav...@googlegroups.com
Amigos...alguém descobriu o comando pra converter o pfx em pem???

seria isso?
openssl --pkcs12 --in certificado.pfx --out certificado.pem
ou algo parecido???

Estou precisando converter essa porcaria hauhuahuhuae
se alguem puder me ajudar...

abraços

On Line Sistemas

unread,
Oct 2, 2008, 11:44:02 AM10/2/08
to phpav...@googlegroups.com
Jean, veja este exemplo . Ainda não testei.
http://www.example-code.com/php/pfx_exportToPem.asp

[]'s

Walber Sales
www.luagps.com.br



----- Original Message -----
From: "Jean paulo" <jea...@gmail.com>
To: <phpav...@googlegroups.com>

On Line Sistemas

unread,
Oct 2, 2008, 11:49:19 AM10/2/08
to phpav...@googlegroups.com
Tentei por openssl e da uma mensagem de não encontrada uma dll.

ssleay32.dll

Esta DLL vem junto na instalação de que?

Grato,

Walber Sales
www.luagps.com.br


----- Original Message -----
From: "Jean paulo" <jea...@gmail.com>
To: <phpav...@googlegroups.com>
Sent: Thursday, October 02, 2008 11:56 AM

Jean paulo

unread,
Oct 2, 2008, 12:49:11 PM10/2/08
to phpav...@googlegroups.com
Walber...

eu tenho essa dll na pasta do PHP e tbm na pasta do apache...
eu tenho instalado o wamp...então acho que essa DLL provavelmente
venha na instalação do PHP

abraços

Jean paulo

unread,
Oct 2, 2008, 1:17:57 PM10/2/08
to phpav...@googlegroups.com
Esse chilkat é uma biblioteca???

Jean paulo

unread,
Oct 2, 2008, 2:40:57 PM10/2/08
to phpav...@googlegroups.com
É complicado o cara ser mirim né?hueauehaueahuahuahaua

Não estou conseguindo fazer funcionar esse exemplo que você me passou Walber...
ele não está conseguindo criar o objeto na linha:
$certStore = new COM("Chilkat.CertStore");

Não sei se o parametro é esse mesmo...dei uma olhada na documentação
mas não adiantou muito

Deduzo que preciso incluir a biblioteca...mas não estou encontrando-a

Abraços pessoal

On Line Sistemas

unread,
Oct 2, 2008, 3:18:13 PM10/2/08
to phpav...@googlegroups.com
Tem que instalar.

Área de download
http://www.chilkatsoft.com/downloads.asp


----- Original Message -----
From: "Jean paulo" <jea...@gmail.com>
To: <phpav...@googlegroups.com>

Jean paulo

unread,
Oct 2, 2008, 3:23:02 PM10/2/08
to phpav...@googlegroups.com
Desculpa a pergunta...mas qual deles seria? O Chilkat PFX ActiveX (win32)?

É free, ou ele expira?

Depois de instalar preciso dar algum include lá no PHP?

Abraços e desculpa tanta pergunta...mas como eu disse...sou iniciante,
então to bem perdido!

Leandro C. Lopez

unread,
Oct 3, 2008, 7:31:26 AM10/3/08
to phpav...@googlegroups.com
Gerei a pouco um novo certificado com o comando abaixo e testei a comunicação com o servidor e deu ok:
 
# openssl pkcs12 -nodes -in cert.pfx  -out cert.pem

Detalhe que ele vai pedir a senha do certificado, deve ser a mesma que foi usada para gerar o pfx.
2008/10/2 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 3, 2008, 11:00:19 AM10/3/08
to phpav...@googlegroups.com
beleza leandro, consegui converter tbm...porém nao consegui testar pq
o certificado .pfx qdo instalado diz q já expirou...

estou no aguardo, pois um cliente já está tratando a compra de um
certificado digital...ae acho que poderei testar...

Leandro...não querendo abusar, mas já abusando, teria como vc tirar um
print do browser com a resposta do WS?

Obrigado!!!

On Line Sistemas

unread,
Oct 4, 2008, 12:45:37 AM10/4/08
to phpav...@googlegroups.com
Ta gerando esta mensagem aqui:
 
"Não foi possível localizar o numero ordinal 272 na DLL SSLEAY32.DLL.
Minha DLL em windows\system tem as seguintes propriedades:
28/05/2003  14:20   159.744 bytes   seleay32.dll
 
Passaram por isto?
 
Grato,
 
Walber

Jean paulo

unread,
Oct 6, 2008, 7:38:00 AM10/6/08
to phpav...@googlegroups.com
Bom dia Walber!

como já lhe falei, eu tenho essa dll na pasta do PHP e tbm na pasta do apache...

abraços!

Jean paulo

unread,
Oct 6, 2008, 7:39:38 AM10/6/08
to phpav...@googlegroups.com
será q não é por que está em pasta diferente? nao cheguei a testar
ainda, então ainda não cheguei a ter esse problema...

espero ter contribuido em alguma coisa!

Abraços

Jean paulo

unread,
Oct 7, 2008, 7:35:48 AM10/7/08
to phpav...@googlegroups.com
Bom dia amigos...estou tentando testar a comunicação com um
certificado que já expirou...só para ver qual seria a resposta, porém
ele só está retornando o DEBUG. É correto isso?

Ele não teria que retornar como resposta um erro?

Abraços

Leandro C. Lopez

unread,
Oct 7, 2008, 10:30:26 AM10/7/08
to phpav...@googlegroups.com
Pra mim mostra a requisição, resposta e o debug.
Sendo que na ultima linha do debug mostra:
 
string(329) "<?xml version="1.0" encoding="utf-8"?><retConsStatServ versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>RS20080807095546</verAplic><cStat>284</cStat><xMotivo>Rejeicao: Certificado Transmissor revogado</xMotivo><cUF>43</cUF><dhRecbto>2008-10-07T11:28:17</dhRecbto><tMed>1</tMed></retConsStatServ>"

Vc está usando o codigo de teste que postei ??

 
2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 10:32:01 AM10/7/08
to phpav...@googlegroups.com
Sim leandro...estou usando o código que você postou...

Jean paulo

unread,
Oct 7, 2008, 10:32:48 AM10/7/08
to phpav...@googlegroups.com
pra mim só está aparecendo o DEBUG...a requisição e a resposta não aparecem

Leandro C. Lopez

unread,
Oct 7, 2008, 10:34:45 AM10/7/08
to phpav...@googlegroups.com
E no debug aparece um monte de informações ???
Pergunto, vc desabilitou o SOAP padrao do PHP para usar o nusoap ???

2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 10:37:45 AM10/7/08
to phpav...@googlegroups.com
Sim...no debug aparece um monte de informações...um trecho segue abaixo:

Erro:

Requisição

Resposta

Debug
2008-10-07 11:25:34.500001 nusoap_client: ctor wsdl=WSDL timeout=0
response_timeout=30
endpoint=string(86)
"https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL"
2008-10-07 11:25:34.500283 nusoap_client: will use lazy evaluation of
wsdl from https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:25:34.500568 nusoap_client: call:
operation=nfeStatusServicoNF, namespace=http://tempuri.org,
soapAction=, rpcParams=, style=rpc, use=encoded, endpointType=wsdl
params=array(2) {
["nfeCabecMsg"]=>
string(147) "<?xml version="1.0" encoding="utf-8"?><cabecMsg
versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe"><versaoDados>1.07</versaoDados></cabecMsg>"
["nfeDadosMsg"]=>
string(273) "<?xml version="1.0" encoding="utf-8"?><consStatServ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.07"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>"
}
headers=bool(false)
2008-10-07 11:25:34.500818 nusoap_client: instantiating wsdl class
with doc: https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:25:34.501083 wsdl: ctor wsdl= timeout=0 response_timeout=30
2008-10-07 11:25:34.501301 wsdl: parse and process WSDL path=
2008-10-07 11:25:34.501578 wsdl: setCredentials username=
authtype=certificate certRequest=
array(5) {
["sslcertfile"]=>
string(26) "C:\certs\associacaoNFE.pem"
["passphrase"]=>
string(10) "associacao"
["verifypeer"]=>
bool(false)
["verifyhost"]=>
bool(false)
["trace"]=>
int(1)
}

acho que desabilitei...não é só comentar a seguinte linha no php.ini:

;extension=php_soap.dll

???

Leandro C. Lopez

unread,
Oct 7, 2008, 10:46:18 AM10/7/08
to phpav...@googlegroups.com
Você tem o CURL ativo no PHP ???

2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 10:48:23 AM10/7/08
to phpav...@googlegroups.com
ativei, descomentando a seguinte linha do php.ini:

extension=php_curl.dll

isto né?

Leandro C. Lopez

unread,
Oct 7, 2008, 10:54:05 AM10/7/08
to phpav...@googlegroups.com
Sim, pelo que vejo no meu debug ele tem que estar ativo...


 
2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 10:59:38 AM10/7/08
to phpav...@googlegroups.com
Leandro...este é todo meu DEBUG...


Erro:

Requisição

Resposta

Debug
2008-10-07 11:55:41.625001 nusoap_client: ctor wsdl=WSDL timeout=0
response_timeout=30
endpoint=string(86)
"https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL"
2008-10-07 11:55:41.625283 nusoap_client: will use lazy evaluation of
wsdl from https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:55:41.625526 nusoap_client: call:


operation=nfeStatusServicoNF, namespace=http://tempuri.org,
soapAction=, rpcParams=, style=rpc, use=encoded, endpointType=wsdl
params=array(2) {
["nfeCabecMsg"]=>
string(147) "<?xml version="1.0" encoding="utf-8"?><cabecMsg

versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe"><versaoDados>1.10</versaoDados></cabecMsg>"


["nfeDadosMsg"]=>
string(273) "<?xml version="1.0" encoding="utf-8"?><consStatServ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.10"


xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>"
}
headers=bool(false)

2008-10-07 11:55:41.625764 nusoap_client: instantiating wsdl class
with doc: https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:55:41.626024 wsdl: ctor wsdl= timeout=0 response_timeout=30
2008-10-07 11:55:41.626240 wsdl: parse and process WSDL path=
2008-10-07 11:55:41.626472 wsdl: setCredentials username=


authtype=certificate certRequest=
array(5) {
["sslcertfile"]=>
string(26) "C:\certs\associacaoNFE.pem"
["passphrase"]=>
string(10) "associacao"
["verifypeer"]=>
bool(false)
["verifyhost"]=>
bool(false)
["trace"]=>
int(1)
}

2008-10-07 11:55:41.626726 wsdl: parse and process WSDL
path=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:55:41.626941 wsdl: parse WSDL at
path=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:55:41.627157 wsdl: getting WSDL http(s) URL
https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 11:55:41.627901 soap_transport_http: ctor
url=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
use_curl= curl_options:
array(0) {
}
2008-10-07 11:55:41.628225 soap_transport_http: parsed URL scheme = https
2008-10-07 11:55:41.628474 soap_transport_http: parsed URL host =
homologacao.nfe.sefaz.rs.gov.br
2008-10-07 11:55:41.628708 soap_transport_http: parsed URL path =
/ws/nfestatusservico/NfeStatusServico.asmx
2008-10-07 11:55:41.628949 soap_transport_http: parsed URL query = WSDL
2008-10-07 11:55:41.629197 soap_transport_http: set header Host:
homologacao.nfe.sefaz.rs.gov.br
2008-10-07 11:55:41.629455 soap_transport_http: set header User-Agent:
NuSOAP/0.7.3 (1.114)
2008-10-07 11:55:41.629692 soap_transport_http: setCredentials
username= authtype=certificate digestRequest=
array(0) {
}
2008-10-07 11:55:41.629973 soap_transport_http: certRequest=


array(5) {
["sslcertfile"]=>
string(26) "C:\certs\associacaoNFE.pem"
["passphrase"]=>
string(10) "associacao"
["verifypeer"]=>
bool(false)
["verifyhost"]=>
bool(false)
["trace"]=>
int(1)
}

2008-10-07 11:55:41.630223 soap_transport_http: Authorization header
not set for certificate
2008-10-07 11:55:41.630442 soap_transport_http: set header
Accept-Encoding: gzip, deflate
2008-10-07 11:55:41.630652 soap_transport_http: set header Connection: close
2008-10-07 11:55:41.630870 soap_transport_http: entered send() with
data of length: 0
2008-10-07 11:55:41.631097 soap_transport_http: connect
connection_timeout 0, response_timeout 30, scheme https, host
homologacao.nfe.sefaz.rs.gov.br, port 443
2008-10-07 11:55:41.631336 soap_transport_http: connect using cURL
2008-10-07 11:55:41.631589 soap_transport_http: setCurlOption
option=10002, value=
string(90) "https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL"
2008-10-07 11:55:41.631840 soap_transport_http: setCurlOption option=52, value=
int(1)
2008-10-07 11:55:41.632083 soap_transport_http: setCurlOption option=42, value=
int(1)
2008-10-07 11:55:41.632318 soap_transport_http: setCurlOption
option=19913, value=
int(1)
2008-10-07 11:55:41.632554 soap_transport_http: setCurlOption option=13, value=
int(30)
2008-10-07 11:55:41.632787 soap_transport_http: set cURL SSL verify options
2008-10-07 11:55:41.632996 soap_transport_http: setCurlOption option=64, value=
int(0)
2008-10-07 11:55:41.633231 soap_transport_http: setCurlOption option=81, value=
int(0)
2008-10-07 11:55:41.633463 soap_transport_http: set cURL certificate options
2008-10-07 11:55:41.633675 soap_transport_http: setCurlOption option=64, value=
bool(false)
2008-10-07 11:55:41.633911 soap_transport_http: setCurlOption option=81, value=
bool(false)
2008-10-07 11:55:41.634150 soap_transport_http: setCurlOption
option=10025, value=
string(26) "C:\certs\associacaoNFE.pem"
2008-10-07 11:55:41.634388 soap_transport_http: setCurlOption
option=10026, value=
string(10) "associacao"
2008-10-07 11:55:41.634625 soap_transport_http: cURL connection set up
2008-10-07 11:55:41.634851 soap_transport_http: set header Content-Length: 0
2008-10-07 11:55:41.635063 soap_transport_http: HTTP request: GET
/ws/nfestatusservico/NfeStatusServico.asmx?WSDL HTTP/1.1
2008-10-07 11:55:41.635277 soap_transport_http: HTTP header: Host:
homologacao.nfe.sefaz.rs.gov.br
2008-10-07 11:55:41.635486 soap_transport_http: HTTP header:
User-Agent: NuSOAP/0.7.3 (1.114)
2008-10-07 11:55:41.635695 soap_transport_http: HTTP header:
Accept-Encoding: gzip, deflate
2008-10-07 11:55:41.635901 soap_transport_http: HTTP header: Connection: close
2008-10-07 11:55:41.636108 soap_transport_http: HTTP header: Content-Length: 0
2008-10-07 11:55:41.636326 soap_transport_http: Skip cURL header Host:
homologacao.nfe.sefaz.rs.gov.br
2008-10-07 11:55:41.636540 soap_transport_http: Skip cURL header
Connection: close
2008-10-07 11:55:41.636751 soap_transport_http: Skip cURL header
Content-Length: 0
2008-10-07 11:55:41.636961 soap_transport_http: setCurlOption
option=10023, value=
array(2) {
[0]=>
string(32) "User-Agent: NuSOAP/0.7.3 (1.114)"
[1]=>
string(30) "Accept-Encoding: gzip, deflate"
}
2008-10-07 11:55:41.637201 soap_transport_http: set cURL HTTP headers
2008-10-07 11:55:41.637412 soap_transport_http: set cURL payload
2008-10-07 11:55:41.637628 soap_transport_http: send and receive with cURL
2008-10-07 11:55:42.209142 soap_transport_http: No cURL error, closing cURL
2008-10-07 11:55:42.210144 soap_transport_http: found proper
separation of headers and document
2008-10-07 11:55:42.210369 soap_transport_http: cleaned data, stringlen: 1927
2008-10-07 11:55:42.210639 soap_transport_http: end of send()
2008-10-07 11:55:42.210869 wsdl: HTTP ERROR: Unsupported HTTP response
status 403 Forbidden (soapclient->response has contents of the
response)
2008-10-07 11:55:42.211127 nusoap_client: checkWSDL
2008-10-07 11:55:42.211387 nusoap_client: got wsdl error: HTTP ERROR:
Unsupported HTTP response status 403 Forbidden (soapclient->response
has contents of the response)

Leandro C. Lopez

unread,
Oct 7, 2008, 12:47:13 PM10/7/08
to phpav...@googlegroups.com
Jean !!!

Estive revendo o codigo postado na wiki: http://wiki.gophp.com.br/index.php?title=NFe
E achei alguns erros que foram gerados após a edição do nosso colega Walker.
Sugiro você copiar novamente o exemplo e testar.


2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 2:46:33 PM10/7/08
to phpav...@googlegroups.com
o código da wiki agora está correto?

Vou testa-lo!

Abraço!

Leandro C. Lopez

unread,
Oct 7, 2008, 3:29:14 PM10/7/08
to phpav...@googlegroups.com
Sim, já acertei ele...
 
Testa e retorna se deu certo ...


 
2008/10/7 Jean paulo <jea...@gmail.com>

Jean paulo

unread,
Oct 7, 2008, 3:33:21 PM10/7/08
to phpav...@googlegroups.com
Testei e continua na mesma coisa...eu estou desconfiado q é meu .pem
que está com algum problema...tem como vc me enviar o seu .pem
expirado para testar?

Se sim mande pra jea...@gmail.com

Abraços

On Line Sistemas

unread,
Oct 7, 2008, 3:38:26 PM10/7/08
to phpav...@googlegroups.com
Pessoal, ao executar mostra que não acha a classe.
Ja desmarquei o ;  em
 
extension=php_soap.dll
extension=php_curl.dll
 
e aparece a mensagem de:
 
 
Fatal error: Class 'nusoap_client' not found in wss_soap.php on line 6
 
referente a linha:
$client   = new nusoap_client($wsdl,'WSDL');
 
Alguma idéia?
 
Grato,
 
Walber
 
 
 

 
 
 
----- Original Message -----

Leandro C. Lopez

unread,
Oct 7, 2008, 3:41:53 PM10/7/08
to phpav...@googlegroups.com
Voce tem que deixar comentada a linha
extension=php_soap.dll
 
e ter um include:
 
require_once('nusoap.php');
 
Detalhe, esse arquivo "nusoap.php" tem que estar no mesmo diretorio ou caminho indicado no include...


 
2008/10/7 On Line Sistemas <onl...@multnet.com.br>

Jean paulo

unread,
Oct 7, 2008, 3:46:34 PM10/7/08
to phpav...@googlegroups.com
Walber...

a linha
extension=php_soap.dll tem que ficar comentada no php.ini

correto:
;extension=php_soap.dll

senão o nusoap nao vai funcionar! a linha do curl está certa...

On Line Sistemas

unread,
Oct 7, 2008, 4:06:43 PM10/7/08
to phpav...@googlegroups.com
 
Marquei novamente com o ;
Uso WIN/Xp, procurei por nusoap.php não localizei, procurei para download e achei este
Baixei e coloquei no mesmo diretorio do script.
Mas ao executar da uma mensagem
Fatal error: Cannot redeclare class soapclient in nusoap.php on line 7240
Mas eu declarei apenas uma vêz no inicio.
require_once('nusoap.php');
 
O nusoap.php que arrumei tem 261.501 bytes, é este que vocês estão usando?
 
Grato,
 
Walber
 
 
 

Jean paulo

unread,
Oct 7, 2008, 4:13:37 PM10/7/08
to phpav...@googlegroups.com
Aqui pra mim estava dando isso tbm...entao eu coloquei na minha pasta
onde está o fonte do php e deu certo...

nao sei se voce me entendeu...eu uso win xp tbm, e tenho o wamp, onde
está instalado no diretorio C:\wamp

dentro dessa pasta wamp tem uma pasta www onde fica todos os .php, e
foi aí que eu joguei o nusoap.php e funcionou beleza...

Acho que outra forma seria voce especificar o caminho no
require_once("C:\....\nusoap.php") mas essa não testei pra ver se
funciona.

On Line Sistemas

unread,
Oct 7, 2008, 4:52:42 PM10/7/08
to phpav...@googlegroups.com
Jean, ele achou no require mas aparece o redeclare.
Tem como me enviar sua classe nusoap.php
onl...@multnet.com.br

Grato,

Walber

----- Original Message -----
From: "Jean paulo" <jea...@gmail.com>
To: <phpav...@googlegroups.com>

On Line Sistemas

unread,
Oct 7, 2008, 11:02:17 PM10/7/08
to phpav...@googlegroups.com
Boa noite,
 
Ao tentar usar o WS, o debug retornou.
Tem que cadastrar o cnpj que esta o certificado para testes no estado(UF) ?
Não houve um retorno esperado.
 
Grato,
 
Walber
 
 
 
Requisição
<\/pre>Resposta<\/pre>Debug2008-10-07 23:57:18.187503 nusoap_client: ctor wsdl=WSDL timeout=0 response_timeout=30
endpoint=string(86) "https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL"
2008-10-07 23:57:18.187859 nusoap_client: will use lazy evaluation of wsdl from https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 23:57:18.188156 nusoap_client: call: operation=nfeStatusServicoNF, namespace=http://tempuri.org, soapAction=, rpcParams=, style=rpc, use=encoded, endpointType=wsdl

params=array(2) {
  ["nfeCabecMsg"]=>
  string(147) "<?xml version="1.0" encoding="utf-8"?><cabecMsg versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe"><versaoDados>1.07</versaoDados></cabecMsg>"
  ["nfeDadosMsg"]=>
  string(273) "<?xml version="1.0" encoding="utf-8"?><consStatServ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>"
}
headers=bool(false)
2008-10-07 23:57:18.188441 nusoap_client: instantiating wsdl class with doc: https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 23:57:18.188749 wsdl: ctor wsdl= timeout=0 response_timeout=30
2008-10-07 23:57:18.189011 wsdl: parse and process WSDL path=
2008-10-07 23:57:18.189287 wsdl: setCredentials username= authtype=certificate certRequest=
array(5) {
  ["sslcertfile"]=>
  string(32) "\wss\web\nfe\certificado_wea.pem"
  ["passphrase"]=>
  string(8) "senha_cert"

  ["verifypeer"]=>
  bool(false)
  ["verifyhost"]=>
  bool(false)
  ["trace"]=>
  int(1)
}
2008-10-07 23:57:18.189566 wsdl: parse and process WSDL path=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 23:57:18.189822 wsdl: parse WSDL at path=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 23:57:18.190084 wsdl: getting WSDL http(s) URL https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL
2008-10-07 23:57:18.190379 soap_transport_http: ctor url=https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx?WSDL use_curl= curl_options:
array(0) {
}
2008-10-07 23:57:18.190658 soap_transport_http: parsed URL scheme = https
2008-10-07 23:57:18.190915 soap_transport_http: parsed URL host = homologacao.nfe.sefaz.rs.gov.br
2008-10-07 23:57:18.191167 soap_transport_http: parsed URL path = /ws/nfestatusservico/NfeStatusServico.asmx
2008-10-07 23:57:18.191418 soap_transport_http: parsed URL query = WSDL
2008-10-07 23:57:18.191682 soap_transport_http: set header Host: homologacao.nfe.sefaz.rs.gov.br
2008-10-07 23:57:18.191968 soap_transport_http: set header User-Agent: NuSOAP/0.7.3 (1.114)
2008-10-07 23:57:18.192231 soap_transport_http: setCredentials username= authtype=certificate digestRequest=
array(0) {
}
2008-10-07 23:57:18.192495 soap_transport_http: certRequest=
array(5) {
  ["sslcertfile"]=>
  string(32) "\wss\web\nfe\certificado_wea.pem"
  ["passphrase"]=>
  string(8) "senha_cert"

  ["verifypeer"]=>
  bool(false)
  ["verifyhost"]=>
  bool(false)
  ["trace"]=>
  int(1)
}
2008-10-07 23:57:18.192765 soap_transport_http: Authorization header not set for certificate
2008-10-07 23:57:18.193028 soap_transport_http: set header Accept-Encoding: gzip, deflate
2008-10-07 23:57:18.193284 soap_transport_http: set header Connection: close
2008-10-07 23:57:18.193543 soap_transport_http: entered send() with data of length: 0
2008-10-07 23:57:18.195015 soap_transport_http: connect connection_timeout 0, response_timeout 30, scheme https, host homologacao.nfe.sefaz.rs.gov.br, port 443
2008-10-07 23:57:18.195313 soap_transport_http: connect using cURL
2008-10-07 23:57:18.195619 soap_transport_http: setCurlOption option=10002, value=
string(90) "https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL"
2008-10-07 23:57:18.195902 soap_transport_http: setCurlOption option=52, value=
int(1)
2008-10-07 23:57:18.196169 soap_transport_http: setCurlOption option=42, value=
int(1)
2008-10-07 23:57:18.196440 soap_transport_http: setCurlOption option=19913, value=
int(1)
2008-10-07 23:57:18.196706 soap_transport_http: setCurlOption option=13, value=
int(30)
2008-10-07 23:57:18.196969 soap_transport_http: set cURL SSL verify options
2008-10-07 23:57:18.197223 soap_transport_http: setCurlOption option=64, value=
int(0)
2008-10-07 23:57:18.197488 soap_transport_http: setCurlOption option=81, value=
int(0)
2008-10-07 23:57:18.197750 soap_transport_http: set cURL certificate options
2008-10-07 23:57:18.198008 soap_transport_http: setCurlOption option=64, value=
bool(false)
2008-10-07 23:57:18.198273 soap_transport_http: setCurlOption option=81, value=
bool(false)
2008-10-07 23:57:18.198538 soap_transport_http: setCurlOption option=10025, value=
string(32) "\wss\web\nfe\certificado_wea.pem"
2008-10-07 23:57:18.198806 soap_transport_http: setCurlOption option=10026, value=
string(8) "senha_cert"
2008-10-07 23:57:18.199072 soap_transport_http: cURL connection set up
2008-10-07 23:57:18.199347 soap_transport_http: set header Content-Length: 0
2008-10-07 23:57:18.199603 soap_transport_http: HTTP request: GET /ws/nfestatusservico/NfeStatusServico.asmx?WSDL HTTP/1.1
2008-10-07 23:57:18.199860 soap_transport_http: HTTP header: Host: homologacao.nfe.sefaz.rs.gov.br
2008-10-07 23:57:18.200324 soap_transport_http: HTTP header: User-Agent: NuSOAP/0.7.3 (1.114)
2008-10-07 23:57:18.200577 soap_transport_http: HTTP header: Accept-Encoding: gzip, deflate
2008-10-07 23:57:18.200829 soap_transport_http: HTTP header: Connection: close
2008-10-07 23:57:18.201082 soap_transport_http: HTTP header: Content-Length: 0
2008-10-07 23:57:18.201345 soap_transport_http: Skip cURL header Host: homologacao.nfe.sefaz.rs.gov.br
2008-10-07 23:57:18.201603 soap_transport_http: Skip cURL header Connection: close
2008-10-07 23:57:18.201856 soap_transport_http: Skip cURL header Content-Length: 0
2008-10-07 23:57:18.202110 soap_transport_http: setCurlOption option=10023, value=

array(2) {
  [0]=>
  string(32) "User-Agent: NuSOAP/0.7.3 (1.114)"
  [1]=>
  string(30) "Accept-Encoding: gzip, deflate"
}
2008-10-07 23:57:18.202378 soap_transport_http: set cURL HTTP headers
2008-10-07 23:57:18.202631 soap_transport_http: set cURL payload
2008-10-07 23:57:18.202895 soap_transport_http: send and receive with cURL
2008-10-07 23:57:29.194841 soap_transport_http: cURL ERROR: 6: Could not resolve host: homologacao.nfe.sefaz.rs.gov.br; No data record of requested type<br>url: https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code: 0<br>header_size: 0<br>request_size: 0<br>filetime: -1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time: 0<br>namelookup_time: 0<br>connect_time: 0<br>pretransfer_time: 0<br>size_upload: 0<br>size_download: 0<br>speed_download: 0<br>speed_upload: 0<br>download_content_length: 0<br>upload_content_length: 0<br>starttransfer_time: 0<br>redirect_time: 0<br>
2008-10-07 23:57:29.195197 soap_transport_http: end of send()
2008-10-07 23:57:29.195483 wsdl: HTTP ERROR: cURL ERROR: 6: Could not resolve host: homologacao.nfe.sefaz.rs.gov.br; No data record of requested type<br>url: https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code: 0<br>header_size: 0<br>request_size: 0<br>filetime: -1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time: 0<br>namelookup_time: 0<br>connect_time: 0<br>pretransfer_time: 0<br>size_upload: 0<br>size_download: 0<br>speed_download: 0<br>speed_upload: 0<br>download_content_length: 0<br>upload_content_length: 0<br>starttransfer_time: 0<br>redirect_time: 0<br>
2008-10-07 23:57:29.195799 nusoap_client: checkWSDL
2008-10-07 23:57:29.196055 nusoap_client: got wsdl error: HTTP ERROR: cURL ERROR: 6: Could not resolve host: homologacao.nfe.sefaz.rs.gov.br; No data record of requested type<br>url: https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code: 0<br>header_size: 0<br>request_size: 0<br>filetime: -1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time: 0<br>namelookup_time: 0<br>connect_time: 0<br>pretransfer_time: 0<br>size_upload: 0<br>size_download: 0<br>speed_download: 0<br>speed_upload: 0<br>download_content_length: 0<br>upload_content_length: 0<br>starttransfer_time: 0<br>redirect_time: 0<br>
<\/pre>
 
 

Leandro C. Lopez

unread,
Oct 8, 2008, 6:58:09 AM10/8/08
to phpav...@googlegroups.com
Sim, nas tags <cUF></cUF> vc deve especificar o numero correspondente ao estado ao qual o cnpj pertence, tipo o 43 se refere ao RS.
Olha no xml enviado para o webservice e altera pro do teu estado...


 
2008/10/8 On Line Sistemas <onl...@multnet.com.br>

On Line Sistemas

unread,
Oct 10, 2008, 11:37:04 PM10/10/08
to phpav...@googlegroups.com
Boa noite,
 
Enviei um Lote de NF, o lote foi aceito.
Consultei o resultado do Lote. Parte do retorno esta abaixo.
 
<xMotivo>Lote processado</xMotivo><cUF>43</cUF><protNFe versao="1.10"><infProt Id="NFe111020080025222950"><tpAmb>2</tpAmb><verAplic>RS20081007151506</verAplic><chNFe>43080812345678901234550001234567891234567891</chNFe><dhRecbto>2008-10-11T00:25:21</dhRecbto><digVal /><cStat>297</cStat><xMotivo>Rejeicao: Assinatura difere do calculado</xMotivo></infProt></protNFe></retConsReciNFe>
 
Dúvidas:
 
01)  Mesmo o lote sendo rejeitado, sempre vem um número para chNFe para consulta?
 
02) o motivo da rejeição é assinatura. No momento da assinatura, o XML antes de assinar, tem que estar com o cabeçalho incluso no XML? Tipo:
<?xml version="1.0" encoding="utf-8"?>
</cabecMsg>
Estou assinando sem o cabeçalho, apenas a com a parte de dados. O cabeçalho entra antes?
 
Perguntas parece bobas mas estou saindo da confusão que é entender esta NFe.
 
 
 
Grato,
 
Walber Sales
 

Leandro C. Lopez

unread,
Oct 11, 2008, 7:55:06 AM10/11/08
to phpav...@googlegroups.com
Walber !!!!
 
Sempre vem um numero de retorno.
 
Voce está assinando via o AssinadorRS ???

2008/10/11 On Line Sistemas <onl...@multnet.com.br>

On Line Sistemas

unread,
Oct 11, 2008, 12:01:07 PM10/11/08
to phpav...@googlegroups.com
Leandro,  estou assinando com assinadorRS.
Via PHP ainda não consegui.
Achei um pequeno exemplo mas ta incompleta, nem senha esta pedindo e para assinar tem que ter senha.
 
 
 
<?php
$data='XML a ter assinatura';
$fp = fopen("certificado_wea.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
// compute signature
openssl_sign($data, $signature, $pkeyid,OPENSSL_ALGO_SHA1);
// free the key from memory
openssl_free_key($pkeyid);
echo $signature;
?>
 
Você tem algum exemplo em PHP  de assintura?
E o cabeçalho tem que estar incluso na assinatura?
Minha dúvida do cabeçalho é porque  na chamada da classe nusoap ela tem 2 parâmetros.
param = array("nfeCabecMsg" => 'dados do cabeçalho', "nfeDadosMsg" => 'dados da mensagem'');
Esta dividido em 2 partes, como fica a assinatura neste caso?
 
Grato,
 
Walber
 

 
 
----- Original Message -----

Leandro C. Lopez

unread,
Oct 13, 2008, 6:56:48 AM10/13/08
to phpav...@googlegroups.com
Em PHP ainda não tenho a assinatura pronta, tenho ela em uma classe java...
Pra assinar o documento vc faz antes da estrutura que envia, depois vai enviar um cabeçalho e o documento assinado.
Então primeiro assina o documento xml com ele completo e depois faz a divisão para o envio...

Jean paulo

unread,
Oct 13, 2008, 7:39:21 AM10/13/08
to phpav...@googlegroups.com
Bom dia amigos...

alguém poderia me mandar um xml assinado pra mim poder tentar enviar o
xml pra sefaz? Eu tinha o certificado free aquele da associação, nao
sei se alguem conhece...mas como meu HD foi pro espaço e eu nao tinha
backup do certificado...ja sabem né haeuehauehauuahua

Se puderem me ajudar...ficarei mto grato!

Abraços

Giancarlo Raduan

unread,
Oct 13, 2008, 7:50:40 AM10/13/08
to phpav...@googlegroups.com
Não seria mais facil entao voce pedir outro certificado ?

E aproveitar para passar pra gente :P

Abracao

Jean paulo escreveu:

Jean paulo

unread,
Oct 13, 2008, 8:05:49 AM10/13/08
to phpav...@googlegroups.com
Beleza...pode deixar que assim que tiver eu mando :P

Jean paulo

unread,
Oct 13, 2008, 3:24:29 PM10/13/08
to phpav...@googlegroups.com
Pessoal...alguém conhece o emissor de nota fiscal eletronica que foi
disponibilizado pela sefaz-sp?

Abraços

Giancarlo Raduan

unread,
Oct 13, 2008, 2:30:33 PM10/13/08
to phpav...@googlegroups.com
Conheço, ta precisando de algo?

Jean paulo escreveu:

Jean paulo

unread,
Oct 13, 2008, 3:34:14 PM10/13/08
to phpav...@googlegroups.com
ele possui alguma limitação? Por exempo...número X de notas enviadas
por dia, ou por mes...

Giancarlo Raduan

unread,
Oct 13, 2008, 2:41:48 PM10/13/08
to phpav...@googlegroups.com
Que eu saiba não, inclusive se tiver, tem a ferramenta de backup e
restauração, e o pessual que ja ta usando ele, habitualmente faz os
backups mensais, zera e começa o mes.
Ah e detalhe, usam ele só para transmissão, pois geram a exportação pelo
software proprio, importam pelo emissor, e faz os demais procedimentos.

Abracao

Jean paulo escreveu:

Jean paulo

unread,
Oct 13, 2008, 3:47:02 PM10/13/08
to phpav...@googlegroups.com
Legal, só não entendi a parte que você falou que usam só para
transmissão...vc quis dizer que não usam as outras funcionalidades do
emissor?

Perguntei sobre a limitação, pois tem clientes que emitem grandes
qtidades de nota no mês, e se houver uma limitação a ferramenta não
será util...

Abraços

Paulo Comora

unread,
Oct 14, 2008, 12:34:39 PM10/14/08
to phpav...@googlegroups.com
Na empresa que trabalho temos vários clientes usando o software da SEFAZ, não tem limitação alguma...
Como nosso amigo Giancarlo falou, utilizam somente como transmissor, pois estão integrados com ERP onde este exporta o arquivo para software da sefaz e este emite a nota.

Att

Paulo Comora

2008/10/13 Jean paulo <jea...@gmail.com>



--
Paulo Comora
www.comora.com.br

Jean paulo

unread,
Oct 14, 2008, 12:55:11 PM10/14/08
to phpav...@googlegroups.com
Obrigado pelo esclarecimento pessoal.

Glauber

unread,
Oct 15, 2008, 12:48:29 PM10/15/08
to PHP Avançado
Boa tarde...

Vou escrever por aqui...
> http://wiki.gophp.com.br/index.php?title=XML_Schema
> http://wiki.gophp.com.br/index.php?title=NFe

tá blz, entendi o principio da nfe...
mas cheguei no soap também.

qual a finalidade dele?
e o próximo passo para continuar com a nfe?

Obrigado

Leandro C. Lopez

unread,
Oct 15, 2008, 1:36:31 PM10/15/08
to phpav...@googlegroups.com
Glauber !!!
 
O SOAP é o padrão de comunicação com o webservice da receita.
Eh nesse protocolo que os xml são enviados e recebidos.
 
Eu diria que depois que vc tem a estrutura basica do xml da nota vc parte pra assinatura eletronica, e por fim o envio do xml e recebimento da resposta.
Detalhe, voce já fez o pedido do certificado digital ???


 
2008/10/15 Glauber <tall.b...@gmail.com>

Glauber Cini

unread,
Oct 15, 2008, 1:43:34 PM10/15/08
to phpav...@googlegroups.com
Não não,
tenho somente o manual, que não está me auxiliando muito.
queria saber como se gera o xml, algum exemplo, se é usado o 
DOMDocument...
entende? queria saber como gerar desde o princípio esse xml
tenho um exemplo em C# mas não tá legal.

Brigadão.

2008/10/15 Leandro C. Lopez <leandro....@gmail.com>

Walker

unread,
Oct 7, 2008, 5:53:00 PM10/7/08
to PHP Avançado
verdade, fui fazer uns ajustes de code standards, e esqueci do
detalhes, que nao pode haver <enter> nem espaços entre as tags.

Agora o código está corrigido pelo leandro, fiz novamente alguns
ajustes de code standards, mas sem modificar a estrutura base.

No teste que fiz está funcionando.

On 7 out, 13:47, "Leandro C. Lopez" <leandro.casto...@gmail.com>
wrote:
> Jean !!!
>
> Estive revendo o codigo postado na wiki:http://wiki.gophp.com.br/index.php?title=NFe
> E achei alguns erros que foram gerados após a edição do nosso colega Walker.
>
> Sugiro você copiar novamente o exemplo e testar.
>
> 2008/10/7 Jean paulo <jean...@gmail.com>
>
>
>
> > Leandro...este é todo meu DEBUG...
>
> > Erro:
>
> > Requisição
>
> > Resposta
>
> > Debug
> > 2008-10-07 11:55:41.625001 nusoap_client: ctor wsdl=WSDL timeout=0
> > response_timeout=30
> > endpoint=string(86)
> > "
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > "
> > 2008-10-07 11:55:41.625283 nusoap_client: will use lazy evaluation of
> > wsdl from
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > 2008-10-07 11:55:41.625526 nusoap_client: call:
> > operation=nfeStatusServicoNF, namespace=http://tempuri.org,
> > soapAction=, rpcParams=, style=rpc, use=encoded, endpointType=wsdl
> > params=array(2) {
> > ["nfeCabecMsg"]=>
> > string(147) "<?xml version="1.0" encoding="utf-8"?><cabecMsg
> > versao="1.02" xmlns="http://www.portalfiscal.inf.br/nfe
> > "><versaoDados>1.10</versaoDados></cabecMsg>"
> > ["nfeDadosMsg"]=>
> > string(273) "<?xml version="1.0" encoding="utf-8"?><consStatServ
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema" versao="1.10"
> > xmlns="http://www.portalfiscal.inf.br/nfe
> > "><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>"
> > }
> > headers=bool(false)
> > 2008-10-07 11:55:41.625764 nusoap_client: instantiating wsdl class
> > with doc:
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > 2008-10-07 11:55:41.626024 wsdl: ctor wsdl= timeout=0 response_timeout=30
> > 2008-10-07 11:55:41.626240 wsdl: parse and process WSDL path=
> > 2008-10-07 11:55:41.626472 wsdl: setCredentials username=
> > authtype=certificate certRequest=
> > array(5) {
> > ["sslcertfile"]=>
> > string(26) "C:\certs\associacaoNFE.pem"
> > ["passphrase"]=>
> > string(10) "associacao"
> > ["verifypeer"]=>
> > bool(false)
> > ["verifyhost"]=>
> > bool(false)
> > ["trace"]=>
> > int(1)
> > }
> > 2008-10-07 11:55:41.626726 wsdl: parse and process WSDL
> > path=
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > 2008-10-07<https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...>11:55:41.626941 wsdl: parse WSDL at
> > path=
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > 2008-10-07<https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...>11:55:41.627157 wsdl: getting WSDL http(s) URL
>
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > 2008-10-07 11:55:41.627901 soap_transport_http: ctor
> > url=
> >https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatus...
> > use_curl= curl_options:
> > array(0) {
> > }
> > 2008-10-07 11:55:41.628225 soap_transport_http: parsed URL scheme = https
> > 2008-10-07 11:55:41.628474 soap_transport_http: parsed URL host =
> > homologacao.nfe.sefaz.rs.gov.br
> > 2008-10-07 11:55:41.628708 soap_transport_http: parsed URL path =
> > /ws/nfestatusservico/NfeStatusServico.asmx
> > 2008-10-07 11:55:41.628949 soap_transport_http: parsed URL query = WSDL
> > 2008-10-07 11:55:41.629197 soap_transport_http: set header Host:
> > homologacao.nfe.sefaz.rs.gov.br
> > 2008-10-07 11:55:41.629455 soap_transport_http: set header User-Agent:
> > NuSOAP/0.7.3 (1.114)
> > 2008-10-07 11:55:41.629692 soap_transport_http: setCredentials
> > username= authtype=certificate digestRequest=
> > array(0) {
> > }
> > 2008-10-07 11:55:41.629973 soap_transport_http: certRequest=
> > array(5) {
> > ["sslcertfile"]=>
> > string(26) "C:\certs\associacaoNFE.pem"
> > ["passphrase"]=>
> > string(10) "associacao"
> > ["verifypeer"]=>
> > bool(false)
> > ["verifyhost"]=>
> > bool(false)
> > ["trace"]=>
> > int(1)
> > }
> > 2008-10-07 11:55:41.630223 soap_transport_http: Authorization header
> > not set for certificate
> > 2008-10-07 11:55:41.630442 soap_transport_http: set header
> > Accept-Encoding: gzip, deflate
> > 2008-10-07 11:55:41.630652 soap_transport_http: set header Connection:
> > close
> > 2008-10-07 11:55:41.630870 soap_transport_http: entered send() with
> > data of length: 0
> > 2008-10-07 11:55:41.631097 soap_transport_http: connect
> > connection_timeout 0, response_timeout 30, scheme https, host
> > homologacao.nfe.sefaz.rs.gov.br, port 443
> > 2008-10-07 11:55:41.631336 soap_transport_http: connect using cURL
> > 2008-10-07 11:55:41.631589 soap_transport_http: setCurlOption
> > option=10002, value=
> > string(90) "
> >https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeSt...
> > "
> > 2008-10-07 11:55:41.631840 soap_transport_http: setCurlOption option=52,
> > value=
> > int(1)
> > 2008-10-07 11:55:41.632083 soap_transport_http: setCurlOption option=42,
> > value=
> > int(1)
> > 2008-10-07 11:55:41.632318 soap_transport_http: setCurlOption
> > option=19913, value=
> > int(1)
> > 2008-10-07 11:55:41.632554 soap_transport_http: setCurlOption option=13,
> > value=
> > int(30)
> > 2008-10-07 11:55:41.632787 soap_transport_http: set cURL SSL verify options
> > 2008-10-07 11:55:41.632996 soap_transport_http: setCurlOption option=64,
> > value=
> > int(0)
> > 2008-10-07 11:55:41.633231 soap_transport_http: setCurlOption option=81,
> > value=
> > int(0)
> > 2008-10-07 11:55:41.633463 soap_transport_http: set cURL certificate
> > options
> > 2008-10-07 11:55:41.633675 soap_transport_http: setCurlOption option=64,
> > value=
> > bool(false)
> > 2008-10-07 11:55:41.633911 soap_transport_http: setCurlOption option=81,
> > value=
> > bool(false)
> > 2008-10-07 11:55:41.634150 soap_transport_http: setCurlOption
> > option=10025, value=
> > string(26) "C:\certs\associacaoNFE.pem"
> > 2008-10-07 11:55:41.634388 soap_transport_http: setCurlOption
> > option=10026, value=
> > string(10) "associacao"
> > 2008-10-07 11:55:41.634625 soap_transport_http: cURL connection set up
> > 2008-10-07 11:55:41.634851 soap_transport_http: set header Content-Length:
> > 0
> > 2008-10-07 11:55:41.635063 soap_transport_http: HTTP request: GET
> > /ws/nfestatusservico/NfeStatusServico.asmx?WSDL HTTP/1.1
> > 2008-10-07 11:55:41.635277 soap_transport_http: HTTP header: Host:
> > homologacao.nfe.sefaz.rs.gov.br
> > 2008-10-07 11:55:41.635486 soap_transport_http: HTTP header:
> > User-Agent: NuSOAP/0.7.3 (1.114)
> > 2008-10-07 11:55:41.635695 soap_transport_http: HTTP header:
> > Accept-Encoding: gzip, deflate
> > 2008-10-07 11:55:41.635901 soap_transport_http: HTTP header: Connection:
> > close
> > 2008-10-07 11:55:41.636108 soap_transport_http: HTTP header:
> > Content-Length: 0
> > 2008-10-07 11:55:41.636326 soap_transport_http: Skip cURL header Host:
> > homologacao.nfe.sefaz.rs.gov.br
> > 2008-10-07 11:55:41.636540 soap_transport_http: Skip cURL header
> > Connection: close
> > 2008-10-07 11:55:41.636751 soap_transport_http: Skip cURL header
> > Content-Length: 0
> > 2008-10-07 11:55:41.636961 soap_transport_http: setCurlOption
> > option=10023, value=
> > array(2) {
> > [0]=>
> > string(32) "User-Agent: NuSOAP/0.7.3 (1.114)"
> > [1]=>
> > string(30) "Accept-Encoding: gzip, deflate"
> > }
> > 2008-10-07 11:55:41.637201 soap_transport_http: set cURL HTTP headers
> > 2008-10-07 11:55:41.637412 soap_transport_http: set cURL payload
> > 2008-10-07 11:55:41.637628 soap_transport_http: send and receive with cURL
> > 2008-10-07 11:55:42.209142 soap_transport_http: No cURL error, closing cURL
> > 2008-10-07 11:55:42.210144 soap_transport_http: found proper
> > separation of headers and document
> > 2008-10-07 11:55:42.210369 soap_transport_http: cleaned data, stringlen:
> > 1927
> > 2008-10-07 11:55:42.210639 soap_transport_http: end of send()
> > 2008-10-07 11:55:42.210869 wsdl: HTTP ERROR: Unsupported HTTP response
> > status 403 Forbidden (soapclient->response has contents of the
> > response)
> > 2008-10-07 11:55:42.211127 nusoap_client: checkWSDL
> > 2008-10-07 11:55:42.211387 nusoap_client: got wsdl error: HTTP ERROR:

Walker

unread,
Oct 8, 2008, 8:00:10 AM10/8/08
to PHP Avançado
putz, todo post q dei neste tópico foi moderado!

Já que tenho tamanha honra, cito q não me envolverei mais nessa
discussão neste grupo.

Abraços para todos.

Walker

unread,
Oct 3, 2008, 12:12:17 PM10/3/08
to PHP Avançado
Bom a Conversão de certificado pode ser feita no IE ou no Firefox, mas
se vc quer mesmo fazer via PHP, estive dando uma pesquisada.

Descobri o seguinte:

Arquivos:
P12/PFX - Personal File Transfer (Troca de informação pessoal)
PEM - Privacy Enhanced Mail

Bom, outra coisa é que o arquivo PFX tem por regra o formato: pkcs12
e o PEM tem o formato "pkey".




On 2 out, 11:56, "Jean paulo" <jean...@gmail.com> wrote:
> Amigos...alguém descobriu o comando pra converter o pfx em pem???
>
> seria isso?
> openssl --pkcs12 --in certificado.pfx --out certificado.pem
> ou algo parecido???
>
> Estou precisando converter essa porcaria hauhuahuhuae
> se alguem puder me ajudar...
>
> abraços

On Line Sistemas

unread,
Oct 22, 2008, 10:32:39 PM10/22/08
to phpav...@googlegroups.com
Boa Noite,

Em uma trigger no evento que é para depois de deletar coloco um
insert do tipo.

for each row BEGIN
insert into lancamentos_deleta set cnpjcpf=OLD.cnpjcpf ;
end;

e esta funcionando normal, tudo ok. O detalhe que necessito é algo que faça
um insert de todos os campos, tipo,

insert into lancamentos_deleta set *=OLD.* ;

existe como ou tenho que definir campo a campo? Geralmente as tabelas tem
muitos campos , deve ter algum 'macete'.

[]'s

Walber Sales

on.line

unread,
Nov 18, 2008, 4:22:49 PM11/18/08
to PHP Avançado
Boa noite,

Pessoal, tive que reformatar o meu PC e quando tento consumir o WS
para testar o status da NFE infelismente me retorna isto.

2008-11-18 19:21:15.123050 soap_transport_http: set cURL HTTP headers
2008-11-18 19:21:15.123302 soap_transport_http: set cURL payload
2008-11-18 19:21:15.123563 soap_transport_http: send and receive with
cURL
2008-11-18 19:21:15.254846 soap_transport_http: cURL ERROR: 58: unable
to use client certificate (no key found or wrong pass phrase?)<br>url:
https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code:
0<br>header_size: 0<br>request_size: 0<br>filetime:
-1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time:
0<br>namelookup_time: 0<br>connect_time: 0.14<br>pretransfer_time:
0<br>size_upload: 0<br>size_download: 0<br>speed_download:
0<br>speed_upload: 0<br>download_content_length:
0<br>upload_content_length: 0<br>starttransfer_time:
0<br>redirect_time: 0<br>
2008-11-18 19:21:15.255246 soap_transport_http: end of send()
2008-11-18 19:21:15.255534 wsdl: HTTP ERROR: cURL ERROR: 58: unable to
use client certificate (no key found or wrong pass phrase?)<br>url:
https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code:
0<br>header_size: 0<br>request_size: 0<br>filetime:
-1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time:
0<br>namelookup_time: 0<br>connect_time: 0.14<br>pretransfer_time:
0<br>size_upload: 0<br>size_download: 0<br>speed_download:
0<br>speed_upload: 0<br>download_content_length:
0<br>upload_content_length: 0<br>starttransfer_time:
0<br>redirect_time: 0<br>
2008-11-18 19:21:15.255846 nusoap_client: checkWSDL
2008-11-18 19:21:15.256102 nusoap_client: got wsdl error: HTTP ERROR:
cURL ERROR: 58: unable to use client certificate (no key found or
wrong pass phrase?)<br>url:
https://homologacao.nfe.sefaz.rs.gov.br:443/ws/nfestatusservico/NfeStatusServico.asmx?WSDL<br>http_code:
0<br>header_size: 0<br>request_size: 0<br>filetime:
-1<br>ssl_verify_result: 0<br>redirect_count: 0<br>total_time:
0<br>namelookup_time: 0<br>connect_time: 0.14<br>pretransfer_time:
0<br>size_upload: 0<br>size_download: 0<br>speed_download:
0<br>speed_upload: 0<br>download_content_length:
0<br>upload_content_length: 0<br>starttransfer_time:
0<br>redirect_time: 0<br>
<\/pre>



Ja instalei o certificado 5 vezes novamente, e a senha esta correta.
Alguma luz?

Grato,

Walber Sales





On 11 out, 01:37, "On Line Sistemas" <onl...@multnet.com.br> wrote:
> Boa noite,
>
> Enviei um Lote de NF, o lote foi aceito.
> Consultei o resultado do Lote. Parte do retorno esta abaixo.
>
> <xMotivo>Lote processado</xMotivo><cUF>43</cUF><protNFe versao="1.10"><infProt Id="NFe111020080025222950"><tpAmb>2</tpAmb><verAplic>RS20081007151506</verA­plic><chNFe>43080812345678901234550001234567891234567891</chNFe><dhRecbto>2­008-10-11T00:25:21</dhRecbto><digVal /><cStat>297</cStat><xMotivo>Rejeicao: Assinatura difere do calculado</xMotivo></infProt></protNFe></retConsReciNFe>

Leandro C. Lopez

unread,
Nov 19, 2008, 5:18:10 AM11/19/08
to phpav...@googlegroups.com
Walber !!!
 
   Posta aí o codigo que vc está usando para consumir o WS.
 
  Pergunto, vc transformou o certificado para .pem novamente ???
 
Att.: Leandro

2008/11/18 on.line <onl...@multnet.com.br>

Walber S Sales

unread,
Nov 19, 2008, 1:53:35 PM11/19/08
to phpav...@googlegroups.com
Caro Leandro,
 
Consegui !
Mudei apenas a path, onde era:
$certFile = '//wss/web/nfe/certificado_wea.pem';
 
Coloquei
$certFile = 'd:/wss/web/nfe/certificado_wea.pem';
 
Apenas o D: fez com que funcionasse.
O engraçado é que o script PHP esta no mesmo endereço do certificado.
Mas agora deu ok....
PS: Você conseguiu assinar via PHP?
 
Grato,
 
Walber SAles
 
 

Resposta

HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Wed, 19 Nov 2008 18:44:42 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 829

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><nfeStatusServicoNFResponse xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico"><nfeStatusServicoNFResult>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;retConsStatServ versao="1.07" xmlns="http://www.portalfiscal.inf.br/nfe"&gt;&lt;tpAmb&gt;2&lt;/tpAmb&gt;&lt;verAplic&gt;RS20080807095546&lt;/verAplic&gt;&lt;cStat&gt;107&lt;/cStat&gt;&lt;xMotivo&gt;Servico em Operacao&lt;/xMotivo&gt;&lt;cUF&gt;43&lt;/cUF&gt;&lt;dhRecbto&gt;2008-11-19T16:44:42&lt;/dhRecbto&gt;&lt;tMed&gt;1&lt;/tMed&gt;&lt;/retConsStatServ&gt;</nfeStatusServicoNFResult></nfeStatusServicoNFResponse></soap:Body></soap:Envelope><\/pre>2
RS20080807095546
107
Servico em Operacao
43
2008-11-19T16:44:42
----- Original Message -----

Leandro C. Lopez

unread,
Nov 20, 2008, 4:43:33 AM11/20/08
to phpav...@googlegroups.com
Ótimo...
 
Ainda estou assinando via uma classe feita em java... dai executo ela via o PHP... pq em PHP puro não deu certo ainda...


 
2008/11/19 Walber S Sales <onl...@multnet.com.br>

Jean paulo

unread,
Nov 20, 2008, 5:18:28 AM11/20/08
to phpav...@googlegroups.com
Mas será q é possivel assinar pelo PHP Leandro? Encontrou algo a respeito?

Leandro C. Lopez

unread,
Nov 20, 2008, 11:47:51 AM11/20/08
to phpav...@googlegroups.com
Usando as funçoes do openssl no php seria possivel criar as chaves... mas até agora as q gerei não ficaram compatíveis com as feitas em java... sendo q as em java aprova no WS e as em php não...


2008/11/20 Jean paulo <jea...@gmail.com>

cabazzo

unread,
Nov 21, 2008, 8:40:22 AM11/21/08
to PHP Avançado
Leandro, bom dia.

Vc tem como dar o exemplo da rotina em java? Vc integrou ao PHP?
Caso não possa, pode me dar qual api usou?
Obrigado.

On 20 nov, 13:47, "Leandro C. Lopez" <leandro.casto...@gmail.com>
wrote:
> Usando as funçoes do openssl no php seria possivel criar as chaves... mas
> até agora as q gerei não ficaram compatíveis com as feitas em java... sendo
> q as em java aprova no WS e as em php não...
>
> 2008/11/20 Jean paulo <jean...@gmail.com>

Walber S Sales

unread,
Nov 21, 2008, 8:42:54 AM11/21/08
to phpav...@googlegroups.com
Bom dia Leandro,
 
        Se vc upload sua aplicação para um host  XXX remoto  , como ele vai reconhecer sua assinatura digital que esta na sua maquina local? Teria que ser via token?
 
[]'s
 
Walber Sales

cabazzo

unread,
Nov 21, 2008, 11:39:48 AM11/21/08
to PHP Avançado
Alguém pode me ajudar?
No final do meu debug está aprecendo isso:

2008-11-21 13:37:11.637575 soap_transport_http: Authorization header
not set for certificate
2008-11-21 13:37:11.637616 soap_transport_http: set header Accept-
Encoding: gzip, deflate
2008-11-21 13:37:11.637654 soap_transport_http: set header Connection:
close
2008-11-21 13:37:11.637700 soap_transport_http: entered send() with
data of length: 0
2008-11-21 13:37:11.637745 soap_transport_http: Using SSL over OpenSSL
2008-11-21 13:37:11.637784 soap_transport_http: connect
connection_timeout 0, response_timeout 30, scheme ssl, host
homologacao.nfe.sefaz.rs.gov.br, port 443
2008-11-21 13:37:11.637832 soap_transport_http: calling fsockopen with
host ssl://homologacao.nfe.sefaz.rs.gov.br connection_timeout 0
2008-11-21 13:37:11.637901 soap_transport_http: Couldn't open socket
connection to server https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
prior to connect(). This is often a problem looking up the host name.
2008-11-21 13:37:11.637953 wsdl: HTTP ERROR: Couldn't open socket
connection to server https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
prior to connect(). This is often a problem looking up the host name.
2008-11-21 13:37:11.638023 nusoap_client: checkWSDL
2008-11-21 13:37:11.638064 nusoap_client: got wsdl error: HTTP ERROR:
Couldn't open socket connection to server
https://homologacao.nfe.sefaz.rs.gov.br/ws/nfestatusservico/NfeStatusServico.asmx
prior to connect(). This is often a problem looking up the host name.

Tá me parecendo problema na porta 443.

Walber S Sales

unread,
Nov 21, 2008, 11:51:07 AM11/21/08
to phpav...@googlegroups.com
Olá,


01) Qual destes shemas vocês estão usando para testes?
http://www.nfe.fazenda.gov.br/portal/schemas.aspx


02) Se vcs utilizam o assinadorRs, em qual versão?
A minha 1.3.8


Tive que formatar o PC e agora aos poucos me aparece cada uma.

Vejam:

OPERAÇÃO: Seleção do Diretório de SCHEMAS.
Diretório Selecionado:D:\wss\web\nfe\schema
Versões do SCHEMA atualmente em uso:
enviNFe = 1.1
nfe = 1.1
nfeNFe = Arquivo de SCHEMA não encontrado

Antes eu assinava normal, agora &*&Y@!!!


Grato,

Walber Sales


Walber S Sales

unread,
Nov 21, 2008, 11:52:07 AM11/21/08
to phpav...@googlegroups.com
Qual certificado esta usando?

[]'s

Walber Sales

Jean

unread,
Nov 21, 2008, 12:01:30 PM11/21/08
to phpav...@googlegroups.com
Eu ainda estou usando o PL_005a,mas parece que o PL_005b ja está em
vigor (não tenho certeza). Aqui usando o PL_005a está funcionando, mas
parece q teve gente que deu problema e já trocaram para o PL_005b, que
não mudou em nada os campos, só foram adicionadas mais opções em
alguns campos, e tornando o campo cProdANP com preenchimento
obrigatório se tratando de combustiveis.

A respeito do assinadorRS estou usando a versão 2.1.0


2008/11/21 Walber S Sales <onl...@multnet.com.br>:

Walber S Sales

unread,
Nov 21, 2008, 12:29:26 PM11/21/08
to phpav...@googlegroups.com
Jean, não estou conseguindo achar esta versão 2.1.0 do assinadorRS para
download.
Pode colocar o link de onde achou? No site ja achei 1.3.4 , 1.3.8 mas nada
de 2.1.0.
Coloca o link para gente baixar.

Grato,

Walber Sales
www.luagps.com.br

----- Original Message -----

Jean

unread,
Nov 21, 2008, 12:31:13 PM11/21/08
to phpav...@googlegroups.com

Walber S Sales

unread,
Nov 21, 2008, 12:45:08 PM11/21/08
to phpav...@googlegroups.com
Valeu Jean, agora foi batata.
Deu certo.

Eu estava copiando daqui e não achava esta versão.
http://www.nfe.fazenda.gov.br/portal/assinador.aspx
Tinha tentando pelo site sefaz.rs e também negativo.

Seu link foi com sucesso, consegui assinar!

[]'s

Walber Sales
www.luagps.com.br
www.onlineautomacao.com.br

Leandro C. Lopez

unread,
Nov 24, 2008, 8:21:20 AM11/24/08
to cabazzo, phpav...@googlegroups.com
Olá !!!
 
Segue o codigo em java para gerar a assinatura, eu chamo ele via o php pelo exec...
Obs: codigo postado na lista do GUJ
 
/***********************************************************************************/
import java.security.*; 
import java.security.cert.Certificate; 
import java.security.cert.*; 
import java.io.*; 
import java.util.*; 
import javax.xml.parsers.*; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import javax.xml.crypto.dsig.*; 
import javax.xml.crypto.dsig.dom.DOMSignContext; 
import javax.xml.crypto.dsig.keyinfo.*; 
import javax.xml.crypto.dsig.spec.*; 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 

public class TratadorCertificado{ 
/*
 *  Classe para tratamento de certificados. Deve fazer a manipulacao
 * dos certificados exportando chaves, assinando XML's e demais funcoes.
 *
 */  
       public static final String algoritmo= "RSA";  
       public static final String algoritmoAssinatura= "MD5withRSA";  
       private static final String C14N_TRANSFORM_METHOD = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"; 
       public static File file= new File("./Cert_2009.jks"); 
       private static String alias="alias"; 
       private static char[] senha="senha".toCharArray();  
       static XMLSignatureFactory sig; 
       static X509Certificate cert; 
       static KeyInfo ki;  
       static SignedInfo si; 
       static KeyStore rep; 
       public static PrivateKey getChavePrivada() throws Exception{ 
                    
           InputStream entrada= new FileInputStream(file); 
           rep.load(entrada, senha); 
           entrada.close(); 
           Key chavePrivada= (Key) rep.getKey(alias, senha); 
           if(chavePrivada instanceof PrivateKey){ 
               System.out.println("Chave Privada encontrada!"); 
               return (PrivateKey) chavePrivada; 
           } 
           return null;         
       } 
       public static PublicKey getChavePublica() throws Exception{ 
           InputStream entrada= new FileInputStream(file); 
           rep.load(entrada, senha); 
           entrada.close(); 
           Key chave= (Key) rep.getKey(alias, senha);       
           java.security.cert.Certificate cert= (java.security.cert.Certificate) rep.getCertificate(alias);
           PublicKey chavePublica= cert.getPublicKey(); 
           System.out.println("Chave Publica encontrada!"); 
           return chavePublica;         
       } 
       public static boolean verificarAssinatura(PublicKey chave, byte[] buffer, byte[] assinado) throws Exception{ 
           Signature assinatura= Signature.getInstance(algoritmoAssinatura); 
           assinatura.initVerify(chave); 
           assinatura.update(buffer, 0, buffer.length); 
           return assinatura.verify(assinado); 
       } 
       public static byte[] criarAssinatura(PrivateKey chavePrivada, byte[] buffer) throws Exception{ 
            
           Signature assinatura= Signature.getInstance(algoritmoAssinatura);        
           assinatura.initSign(chavePrivada); 
           assinatura.update(buffer, 0, buffer.length); 
           return assinatura.sign(); 
       } 
       public static String getValidade(X509Certificate cert){ 
           try{ 
               cert.checkValidity(); 
               return "Certificado valido!"; 
           } 
           catch(CertificateExpiredException e){ 
               return "Certificado expirado!"; 
           } 
           catch(CertificateNotYetValidException e){ 
               return "Certificado invalido!"; 
           }        
       }    
       public static void getCertificado() throws Exception{                    
           InputStream dado= new FileInputStream(file);         
           rep= KeyStore.getInstance("JKS");        
           rep.load(dado, senha); 
           cert= (X509Certificate) rep.getCertificate(alias); 
           String retorno= TratadorCertificado.getValidade(cert); 
           System.out.println(retorno);         
       }    
      public static void assinarDocumento(String localDocumento) throws Exception{         
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
          dbf.setNamespaceAware(true); 
          Document doc = dbf.newDocumentBuilder().parse 
              (new FileInputStream(localDocumento)); 
          System.out.println("Documento ok!"); 
          sig= XMLSignatureFactory.getInstance("DOM"); 
         
          ArrayList<Transform> transformList= new ArrayList<Transform>(); 
          Transform enveloped= sig.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null); 
          Transform c14n= sig.newTransform(C14N_TRANSFORM_METHOD, (TransformParameterSpec) null); 
          transformList.add(enveloped); 
          transformList.add(c14n); 
 
          NodeList elements = doc.getElementsByTagName("infNFe"); 
          org.w3c.dom.Element el = (org.w3c.dom.Element) elements.item(0); 
          String id = el.getAttribute("Id"); 
          Reference r= sig.newReference        
           ("#".concat(id), sig.newDigestMethod(DigestMethod.SHA1, null), 
                    transformList, 
                       null, null); 
          si = sig.newSignedInfo( 
              sig.newCanonicalizationMethod 
                  (CanonicalizationMethod.INCLUSIVE, 
                      (C14NMethodParameterSpec) null), 
                          sig.newSignatureMethod(SignatureMethod.RSA_SHA1, null), 
                          Collections.singletonList(r)                         
          ); 
          KeyInfoFactory kif = sig.getKeyInfoFactory(); 
          List x509Content = new ArrayList();      
          x509Content.add(cert); 
          X509Data xd = kif.newX509Data(x509Content); 
          ki = kif.newKeyInfo(Collections.singletonList(xd));      
          DOMSignContext dsc = new DOMSignContext 
          (getChavePrivada(), doc.getDocumentElement()); 
   
          XMLSignature signature = sig.newXMLSignature(si, ki); 
   
          signature.sign(dsc); 
   
          OutputStream os = new FileOutputStream("nota.xml"); 
   
          TransformerFactory tf = TransformerFactory.newInstance(); 
   
          Transformer trans = tf.newTransformer(); 
  
          trans.transform(new DOMSource(doc), new StreamResult(os)); 
          
      } 
      public static void main(String[] args) { 
          try{ 
              TratadorCertificado.getCertificado();            
              TratadorCertificado.assinarDocumento("Arquivo-NF-e.xml"); 
          } 
          catch(Exception e){ 
              e.printStackTrace(); 
          } 
      } 
  } 
/**************************************************************************/

2008/11/21 cabazzo <cab...@gmail.com>
Leandro, bom dia.

Vc tem como dar o exemplo da rotina em java? Vc integrou ao PHP?
Caso não possa, pode me dar qual api usou?
Obrigado.

On 20 nov, 13:47, "Leandro C. Lopez" <leandro.casto...@gmail.com>
wrote:
> Usando as funçoes do openssl no php seria possivel criar as chaves... mas
> até agora as q gerei não ficaram compatíveis com as feitas em java... sendo
> q as em java aprova no WS e as em php não...
>
> 2008/11/20 Jean paulo <jean...@gmail.com>

Walber S Sales

unread,
Nov 24, 2008, 11:17:25 PM11/24/08
to phpav...@googlegroups.com
Olá,
 
     Parece que é simples mas estou em loop.
  
                $campo_updade_old[visitas][id]='123456';
                $table_campos='[visitas][id]';
               
                $campo1='$campo_updade_old'. $table_campos;
 
                echo $campo1;
 
Gostaria  imprimir o $campo1 e o valor ser igual 123456.
 
Ja tentei!
echo ${$campo1} ;
 
echo $$campo1;
 
mas nào obtive sucesso, alguma ajuda?
 
Grato,
 
Walber Sales
 
 

                
               

Luiz Felipph

unread,
Nov 25, 2008, 6:39:50 AM11/25/08
to phpav...@googlegroups.com
Amigo, até onde eu sei não tem como cocatenar as variáveis a fim de obter uma variável novamas vc pode fazer assim:


digamos que
  $campo_updade_old[visitas] seja um outro array que vc quer exibire que ele tem essa estrutura:

$campo_updade_old[visitas][id1]
$campo_updade_old[visitas][id2]
$campo_updade_old[visitas][id3]
$campo_updade_old[visitas][id4]
$campo_updade_old[visitas][id5]



bem, há várias formas de fazer a mais elegante é com foreach:


foreach(
$campo_updade_old[visitas] as $id)

             echo $id;
}

certo!?


Abraço!
2008/11/25 Walber S Sales <onl...@multnet.com.br>



--
.:  |Luiz Felipph
.:  |Web Developer(PHP)
.:: |Linux User #434361

Odilon Cenamo

unread,
Nov 25, 2008, 6:56:56 AM11/25/08
to phpav...@googlegroups.com
      $campo_updade_old[visitas][id]='123456';
      //$table_campos='[visitas][id]';
     $x1 = 'visitas';
     $x2 = 'id';
     $campo1 = $campo_updade_old[$x1][$x2];
     echo $campo1;

Walber S Sales

unread,
Nov 25, 2008, 10:39:20 AM11/25/08
to phpav...@googlegroups.com
Boa Odilon... Agora a fila anda.
Estou desenvolvendo um script para atualizar estruturas de N banco de dados a partir de 1 banco mestre e sua dica foi em cima.
 
Muito grato,
 
Walber Sales

Walber S Sales

unread,
Nov 26, 2008, 8:36:41 AM11/26/08
to phpav...@googlegroups.com
Bom dia,
 
 
        Preciso se uma opinião de vocês referente a segurança.
        Desenvolvemos um sistema em PHP e esta hospeado em determinado host ZYZ.
        Os clientes que queiram usar este sistema, eles se comprometem em disponibilizar  uma base de dados MySQL em determinado local(HOST).
        Um futuro cliente pediu ao seu consultor de TI para disponibilizar  na empresa dele  uma  base de dados e que serão acessados pelo sistema em PHP hospedado em outro Host.
        O que precisamos é apenas o HOST,USER,SENHA para configurar o sistema.
        A resposta do consultor ao cliente foi:
 
"Gostaria de ter mais informações a respeito do produto, da forma como foi colocado  a porta da base de dados do MySQL ficaria  exposta na Web o que me parece perigoso, além disso, peso eu, que a performace não seria boa. "
 
O que os especialistas do assunto podem dizer a respeito, sendo que única tarefa que tenho que fazer é parametrizar os dados HOST,USER e Senha no sistema.
 
 
Grato,
 
Walber Sales
 


 

João Vagner

unread,
Nov 26, 2008, 9:08:38 AM11/26/08
to phpav...@googlegroups.com
A segurança é manter uma boa senha, e usar o IP do servidor, não é possivel acessar sem os dados, não existe quebra de segurança, ou nada que deixe isso exposto na web, somente com ip, usuario e senha acessa, se chama "Remote Mysql", todo mundo usa, e nunca ouvi relato de invasão, etc, Fica sempre a porta aberta, assim como a porta 21 do FTP, 80 do httpd, SSH 22, etc, sempre fica porta configurada para esse tipo de comunicação. o que não significa quebra de segurança Smiley piscando Emoticon
 
 

Luiz Felipph

unread,
Nov 26, 2008, 9:30:17 AM11/26/08
to phpav...@googlegroups.com
"a porta da base de dados do MySQL ficaria  exposta na Web."

 Coloque em outra porta, preferencialmente uma não registrada. Um firewall bem configurado não permitiria um portscanning.


"
peso eu, que a performance não seria boa."

Isso depende de duas infra-estruturas: do servidor que tem o banco( se tem uma boa internet, se está configurado adequadamente, se está sempre disponível, etc etc...) e  do sistema(como as consultas foram feitas, se são otimizadas, etc, etc)


Se teu Cliente tem pre-requisitos básicos que permitam a implementação, ótimo. Mas lembre-se: você é o responsável pela solução, obviamente que o consultor de TI dele vai te que ser convencido, mas você terá que mostrar que a sua aplicação será suficiente performática e segura(a nível de infra-estrutura física e de sistema).
O Mysql suporta conexões seguras(SSL), leia aqui: http://dev.mysql.com/doc/refman/5.0/en/secure-using-ssl.html


Abraço amigo, espero ter ajudado




2008/11/26 João Vagner <joao....@gmail.com>
It is loading more messages.
0 new messages