Assinatura da RPS

2,201 views
Skip to first unread message

Reinaldo N. Sanches

unread,
Jun 16, 2010, 6:24:50 PM6/16/10
to NFePHP, rein...@mandic.com.br
Na NF-e Paulista existe a tag Assinatura para cada RPS que é uma
string de 86 caracteres com informacoes da RPS.

O meu problema é que o webservices esta dizendo: Assinatura Digital do
RPS incorreta.

Estou usando a forma abaixo para criar o conteudo da tag Assinatura,
igual ao de assinar o XML.

-----
$signatureValue = '';
$pkeyId = openssl_get_privatekey( file_get_contents( $this-
>privateKey ) );
openssl_sign( $content, $signatureValue, $pkeyId );
openssl_free_key( $pkeyId );
-----

Alguêm já conseguiu criar este conteudo com sucesso para NF-e
Paulista?

Doc: http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf


Grato,

Reinaldo Nolasco Sanches

FerreiraH.

unread,
Jun 17, 2010, 8:21:15 AM6/17/10
to nfe...@googlegroups.com
Voce esta afirmando que a nota fiscal eletronica do estado de São Paulo é diferente do resto do Pais, é porque tem que incluir o cpf do comprador ?
Me indique onde encontro mais informações sobre isso agora fiquei preocupado. e oque é esta tag RPS
Isso é para a versão corrente ou é para  serie 2


--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
FAQ: https://www.assembla.com/wiki/show/nfephp/FAQ
Como Participar: https://www.assembla.com/wiki/show/nfephp/Como_participar

Fabricio Silva

unread,
Jun 17, 2010, 8:25:36 AM6/17/10
to nfe...@googlegroups.com
Pessoal, RPS significa Recibo Provisório de Serviço.

Aqui em Salvador ao invés de mandar uma NFS-e (Nota Fiscal de Serviço Eletrônica) via webservice, obrigatóriamente temos que mandar o RPS, e só depois que a SEFAZ Municipio processa esse RPS é que ele poderá ou não virar uma NFS-e, ou seja, o RPS é usado para Nota Fiscal de Serviço Eletrônica.
--
sds,
__________________________________
Fabricio Gondim da Silva

FerreiraH.

unread,
Jun 17, 2010, 9:46:27 AM6/17/10
to nfe...@googlegroups.com
E a possibilidade de emitir a NFe com peças e serviços utilizando o CFOP correto fica como
Sei que em são paulo existe uma nota so de serviço parece-me que em campinas (SP) tambem
Para nos desenvolvedores é muito ruim afinal o Brasil é muito grande e complica a vida da gente.
Então em algumas localidades primeiro autoriza o RPS depois emite uma NFe, vai emitir a NFe se tiver venda ou sem venda tambem ?
E em relação ao topico alguem já assinou um RPS ?

Reinaldo N. Sanches

unread,
Jun 17, 2010, 10:24:59 AM6/17/10
to NFePHP
Estou usando a versão atual. Coloquei o link no open topic.

Não sei o que muda para os outros estados, só sei que as tags na
documentação não existem no NFePHP, o XML é completamente diferente, e
por este fato eu não consigo saber qual o problema com o meu código
para gerar o conteudo para esta tag Assinatura da RPS.

Parte da documentação sobre a assinatura desta tag:
--------
1º - Monte a string de caracteres conforme a tabela a apresentada
anteriormente. A seguir apresentamos o exemplo de parte de uma
mensagem XML de pedido de envio de RPS (os campos utilizados na
montagem da cadeia de caracteres estão em negrito).

...
<ChaveRPS>
<InscricaoPrestador>31000000</InscricaoPrestador>
<SerieRPS>AAAAA</SerieRPS>
<NumeroRPS>2</NumeroRPS>
</ChaveRPS>
<TipoRPS>RPS-M</TipoRPS>
<DataEmissao>2007-01-10</DataEmissao>
<StatusRPS>N</StatusRPS>
<TributacaoRPS>T</TributacaoRPS>
<ValorServicos>20500</ValorServicos>
<ValorDeducoes>5000</ValorDeducoes>
<CodigoServico>2658</CodigoServico>
<AliquotaServicos>0.05</AliquotaServicos>
<ISSRetido>false</ISSRetido>
<CPFCNPJTomador>
<CPF>18564071878</CPF>
</CPFCNPJTomador>
...

Com base no trecho da mensagem XML apresentada, montamos a seguinte
string de caracteres:
"31000000OL03
00000000000120070103TNN00000000205000000000000050000002658100013167474254"
Note que o valor dos serviços (R$ 20.500,00) foi transformado em
2050000, o valor de deduções (R$ 5.000,00) foi transformado em 500000.
Também foi acrescentado à série do RPS um espaço em branco à direita
para preencher as 5 posições.

2º - Converta a cadeia de caracteres ASCII para bytes.
3º - Gere o HASH (array de bytes) utilizando SHA1.
4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.

ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são
feitos através de uma única função. Verifique a documentação de sua
linguagem para evitar assinar um hash de um hash.
--------

Não sei se o meu problema esta no passo 2.


Grato,

Reinaldo Nolasco Sanches


On Jun 17, 10:46 am, "FerreiraH." <helder.maurici...@gmail.com> wrote:
> E a possibilidade de emitir a NFe com peças e serviços utilizando o CFOP
> correto fica como
> Sei que em são paulo existe uma nota so de serviço parece-me que em campinas
> (SP) tambem
> Para nos desenvolvedores é muito ruim afinal o Brasil é muito grande e
> complica a vida da gente.
> Então em algumas localidades primeiro autoriza o RPS depois emite uma NFe,
> vai emitir a NFe se tiver venda ou sem venda tambem ?
> E em relação ao topico alguem já assinou um RPS ?
>
> Em 17 de junho de 2010 09:25, Fabricio Silva
> <fabriciojohnj...@gmail.com>escreveu:
>
>
>
> > Pessoal, RPS significa Recibo Provisório de Serviço.
>
> > Aqui em Salvador ao invés de mandar uma NFS-e (Nota Fiscal de Serviço
> > Eletrônica) via webservice, obrigatóriamente temos que mandar o RPS, e só
> > depois que a SEFAZ Municipio processa esse RPS é que ele poderá ou não virar
> > uma NFS-e, ou seja, o RPS é usado para Nota Fiscal de Serviço Eletrônica.
>
> > Em 17 de junho de 2010 09:21, FerreiraH. <helder.maurici...@gmail.com>escreveu:
>
> >>  Voce esta afirmando que a nota fiscal eletronica do estado de São Paulo é
> >> diferente do resto do Pais, é porque tem que incluir o cpf do comprador ?
> >> Me indique onde encontro mais informações sobre isso agora fiquei
> >> preocupado. e oque é esta tag RPS
> >> Isso é para a versão corrente ou é para  serie 2
>
> >> Em 16 de junho de 2010 19:24, Reinaldo N. Sanches <
> >> reinaldo.sanc...@gmail.com> escreveu:
>
> >> Na NF-e Paulista existe a tag Assinatura para cada RPS que é uma
> >>> string de 86 caracteres com informacoes da RPS.
>
> >>> O meu problema é que o webservices esta dizendo: Assinatura Digital do
> >>> RPS incorreta.
>
> >>> Estou usando a forma abaixo para criar o conteudo da tag Assinatura,
> >>> igual ao de assinar o XML.
>
> >>> -----
> >>>    $signatureValue = '';
> >>>    $pkeyId = openssl_get_privatekey( file_get_contents( $this-
> >>> >privateKey ) );
> >>>    openssl_sign( $content, $signatureValue, $pkeyId );
> >>>    openssl_free_key( $pkeyId );
> >>> -----
>
> >>> Alguêm já conseguiu criar este conteudo com sucesso para NF-e
> >>> Paulista?
>
> >>> Doc:http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf
>
> >>> Grato,
>
> >>> Reinaldo Nolasco Sanches
>
> >>> --
> >>> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >>> Para Postar: nfe...@googlegroups.com
> >>> Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >>> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >>> -------
> >>> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >>> Como Participar:
> >>>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >>  --
> >> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> Para Postar: nfe...@googlegroups.com
> >> Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> -------
> >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> Como Participar:
> >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> > --
> > sds,
> > __________________________________
> > Fabricio Gondim da Silva
>
> > --
> > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> > Para Postar: nfe...@googlegroups.com
> > Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>

Giuseppe

unread,
Jun 23, 2010, 4:30:49 PM6/23/10
to NFePHP
Prezados,

Alguém sabe ajudar como converter uma string como esta
"31000000OL03
00000000000120070103TNN00000000205000000000000050000002658100013167474254"
com os seguintes passo:

2º - Converta a cadeia de caracteres ASCII para bytes.
3º - Gere o HASH (array de bytes) utilizando SHA1.
4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.

Isso é para a emissão de NFSe para o estado de São Paulo, conseguindo
acertar esse ponto quero disponibilizar o modulo completo para o
grupo.

[ ]'s
Giuseppe Lopes

On 17 jun, 11:24, "Reinaldo N. Sanches" <reinaldo.sanc...@gmail.com>
wrote:
> Estou usando a versão atual. Coloquei o link no open topic.
>
> Não sei o que muda para os outros estados, só sei que as tags na
> documentação não existem no NFePHP, o XML é completamente diferente, e
> por este fato eu não consigo saber qual o problema com o meu código
> para gerar o conteudo para estatagAssinaturada RPS.
> > >> Na NF-e Paulista existe atagAssinaturapara cada RPS que é uma
> > >>> string de 86 caracteres com informacoes da RPS.
>
> > >>> O meu problema é que o webservices esta dizendo:AssinaturaDigital do

Daniel Batista Lemes

unread,
Jun 23, 2010, 6:01:34 PM6/23/10
to nfe...@googlegroups.com

Giuseppe Lopes

unread,
Jun 24, 2010, 9:05:25 AM6/24/10
to nfe...@googlegroups.com
Obrigado pela ajuda Daniel.

Com a função que passou converto a string em bytes, porém agora segundo a documentação devo:

3º - Gere o HASH (array de bytes) utilizando SHA1.

$hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?

4º - Assine o HASH (array de bytes) utilizando RSA-SHA1
Este quarto passo devo me basear nessa função do método de assinar?
$resp = openssl_sign($dados, $signature, $this->privateKeyResource);

Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza de um XML de envio, a tag que preciso preencher é <Assinatura>

Qualquer ajuda é bem vinda.

[ ]'s
Giuseppe Lopes
PedidoEnvioRPS.xml

Daniel Lemes

unread,
Jun 24, 2010, 9:07:44 AM6/24/10
to nfe...@googlegroups.com
pelo que entendi sim, teria que fazer e testar

Giuseppe Lopes

unread,
Jun 24, 2010, 9:38:47 AM6/24/10
to nfe...@googlegroups.com
Bueno, eu testei e continua retornando erro.

Fiz da seguinte forma:

$assinatura = $this->asc2bin($assinatura); //converti para bytes
$hashValue = hash('sha1', $assinatura, TRUE); //Gerei o hash usando sha1
$resp = openssl_sign($hashValue, $signature, $this->privateKeyResource); //Assinei usando o certificado sha1
$newAssinatura = base64_encode($signature); //Encodei em base 64 para poder enviar no xml

A tag assinatura ficou assim:

<Assinatura>L2ooPGzR3Dtlm/gOZqz/Y/QMRU2UfZQWk7QeT8CeXutC1veM8dDso1VbjzxNX49vXTndVm883N7IBuIdmaZFdB/Y7B99UnwKNTY3HYJ0LDZCSITCo8dO5SvDqv6qnekL44qwNnHx4uLRe7MoRTR7j90Si+fEJVQyBhdfovAlC90=</Assinatura>

Contudo, a prefeitura ainda informa:
<Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS incorreta.</Descricao>

Só falta esse ponto para concluir o processo com o serviço de NFSe.

Sugestões pessoal?

[ ]'s
Giuseppe Lopes

Reinaldo N. Sanches

unread,
Jun 24, 2010, 10:17:14 AM6/24/10
to NFePHP
Daniel,

Grato pela ajuda, mas eu já tentei varias formas de conversão para
binary, hex, ord, charset, etc, etc... e nada funciona.

Tentei esta sua função também e continua gerando errado o valor para a
tag.


On Jun 24, 10:07 am, "Daniel Lemes" <dle...@gmail.com> wrote:
> pelo que entendi sim, teria que fazer e testar
>
>
>
>   ----- Original Message -----
>   From: Giuseppe Lopes
>   To: nfe...@googlegroups.com
>   Sent: Thursday, June 24, 2010 10:05 AM
>   Subject: Re: [nfephp] Re: Assinatura da RPS
>
>   Obrigado pela ajuda Daniel.
>
>   Com a função que passou converto a string em bytes, porém agora segundo a documentação devo:
>
>   3º - Gere o HASH (array de bytes) utilizando SHA1.
>
>   $hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?
>
>   4º - Assine o HASH (array de bytes) utilizando RSA-SHA1
>   Este quarto passo devo me basear nessa função do método de assinar?
>   $resp = openssl_sign($dados, $signature, $this->privateKeyResource);
>
>   Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza de um XML de envio, a tag que preciso preencher é <Assinatura>
>
>   Qualquer ajuda é bem vinda.
>
>   [ ]'s
>   Giuseppe Lopes
>
>   Em 23 de junho de 2010 19:01, Daniel Batista Lemes <dle...@gmail.com> escreveu:
>
>     tenta isso
>
>    http://paste.ideaslabs.com/show/qRmNXyrnx
>

Reinaldo N. Sanches

unread,
Jun 24, 2010, 10:18:54 AM6/24/10
to NFePHP
A função openssl_sign já gera o hash para os dados que vem no primeiro
parametro, você não precisa usar a função hash para criar o sha1 dos
dados.

On Jun 24, 10:38 am, Giuseppe Lopes <giuseppe.lo...@gmail.com> wrote:
> Bueno, eu testei e continua retornando erro.
>
> Fiz da seguinte forma:
>
> $assinatura = $this->asc2bin($assinatura); //converti para bytes
> $hashValue = hash('sha1', $assinatura, TRUE); //Gerei o hash usando sha1
> $resp = openssl_sign($hashValue, $signature, $this->privateKeyResource);
> //Assinei usando o certificado sha1
> $newAssinatura = base64_encode($signature); //Encodei em base 64 para poder
> enviar no xml
>
> A tag assinatura ficou assim:
>
> <Assinatura>L2ooPGzR3Dtlm/gOZqz/Y/QMRU2UfZQWk7QeT8CeXutC1veM8dDso1VbjzxNX49 vXTndVm883N7IBuIdmaZFdB/Y7B99UnwKNTY3HYJ0LDZCSITCo8dO5SvDqv6qnekL44qwNnHx4u LRe7MoRTR7j90Si+fEJVQyBhdfovAlC90=</Assinatura>
>
> Contudo, a prefeitura ainda informa:
> <Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS
> incorreta.</Descricao>
>
> Só falta esse ponto para concluir o processo com o serviço de NFSe.
>
> Sugestões pessoal?
>
> [ ]'s
> Giuseppe Lopes
>
> Em 24 de junho de 2010 10:07, Daniel Lemes <dle...@gmail.com> escreveu:
>
>
>
> >  pelo que entendi sim, teria que fazer e testar
>
> > ----- Original Message -----
> > *From:* Giuseppe Lopes <giuseppe.lo...@gmail.com>
> > *To:* nfe...@googlegroups.com
> > *Sent:* Thursday, June 24, 2010 10:05 AM
> > *Subject:* Re: [nfephp] Re: Assinatura da RPS
>
> > Obrigado pela ajuda Daniel.
>
> > Com a função que passou converto a string em bytes, porém agora segundo a
> > documentação devo:
>
> > 3º - Gere o HASH (array de bytes) utilizando SHA1.
>
> > $hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?
>
> > 4º - Assine o HASH (array de bytes) utilizando RSA-SHA1
> > Este quarto passo devo me basear nessa função do método de assinar?
> > $resp = openssl_sign($dados, $signature, $this->privateKeyResource);
>
> > Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o
> > SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza
> > de um XML de envio, a tag que preciso preencher é <Assinatura>
>
> > Qualquer ajuda é bem vinda.
>
> > [ ]'s
> > Giuseppe Lopes
>
> > Em 23 de junho de 2010 19:01, Daniel Batista Lemes <dle...@gmail.com>escreveu:
>
> >> tenta isso
>
> >>http://paste.ideaslabs.com/show/qRmNXyrnx
>
> >> Em 23 de junho de 2010 17:30, Giuseppe <giuseppe.lo...@gmail.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > >>> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > >>> -------
> >> >> > >>> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > >>> Como Participar:
> >> >> > >>>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> >> > >>  --
> >> >> > >> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> >> > >> Para Postar: nfe...@googlegroups.com
> >> >> > >> Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > >> -------
> >> >> > >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > >> Como Participar:
> >> >> > >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> >> > > --
> >> >> > > sds,
> >> >> > > __________________________________
> >> >> > > Fabricio Gondim da Silva
>
> >> >> > > --
> >> >> > > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> >> > > Para Postar: nfe...@googlegroups.com
> >> >> > > Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > > Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > > -------
> >> >> > > FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > > Como Participar:
> >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> > --
> >> > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> > Para Postar: nfe...@googlegroups.com
> >> > Para Sair do Grupo:
>
> ...
>
> read more »

Daniel Lemes

unread,
Jun 24, 2010, 11:48:52 AM6/24/10
to nfe...@googlegroups.com
Me manda o manual ai da prefeitura dle...@gmail.com que vou ver se dou uma
olhada.

Att

Daniel


----- Original Message -----
From: "Reinaldo N. Sanches" <reinaldo...@gmail.com>
To: "NFePHP" <nfe...@googlegroups.com>
Sent: Thursday, June 24, 2010 11:17 AM
Subject: [nfephp] Re: Assinatura da RPS


Daniel,

Grato pela ajuda, mas eu j� tentei varias formas de convers�o para


binary, hex, ord, charset, etc, etc... e nada funciona.

Tentei esta sua fun��o tamb�m e continua gerando errado o valor para a
tag.


On Jun 24, 10:07 am, "Daniel Lemes" <dle...@gmail.com> wrote:
> pelo que entendi sim, teria que fazer e testar
>
>
>
> ----- Original Message -----
> From: Giuseppe Lopes
> To: nfe...@googlegroups.com
> Sent: Thursday, June 24, 2010 10:05 AM
> Subject: Re: [nfephp] Re: Assinatura da RPS
>
> Obrigado pela ajuda Daniel.
>

> Com a fun��o que passou converto a string em bytes, por�m agora segundo a
> documenta��o devo:
>
> 3� - Gere o HASH (array de bytes) utilizando SHA1.


>
> $hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?
>

> 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1
> Este quarto passo devo me basear nessa fun��o do m�todo de assinar?


> $resp = openssl_sign($dados, $signature, $this->privateKeyResource);
>
> Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o
> SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza

> de um XML de envio, a tag que preciso preencher � <Assinatura>
>
> Qualquer ajuda � bem vinda.


>
> [ ]'s
> Giuseppe Lopes
>
> Em 23 de junho de 2010 19:01, Daniel Batista Lemes <dle...@gmail.com>
> escreveu:
>
> tenta isso
>
> http://paste.ideaslabs.com/show/qRmNXyrnx
>
> Em 23 de junho de 2010 17:30, Giuseppe <giuseppe.lo...@gmail.com>
> escreveu:
>
> > Prezados,
>

> > Algu�m sabe ajudar como converter uma string como esta


> > "31000000OL03
> > 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
> > com os seguintes passo:
>

> > 2� - Converta a cadeia de caracteres ASCII para bytes.
> > 3� - Gere o HASH (array de bytes) utilizando SHA1.
> > 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1.
>
> > Isso � para a emiss�o de NFSe para o estado de S�o Paulo, conseguindo


> > acertar esse ponto quero disponibilizar o modulo completo para o
> > grupo.
>
> > [ ]'s
> > Giuseppe Lopes
>
> > On 17 jun, 11:24, "Reinaldo N. Sanches" <reinaldo.sanc...@gmail.com>
> > wrote:

> >> Estou usando a vers�o atual. Coloquei o link no open topic.
>
> >> N�o sei o que muda para os outros estados, s� sei que as tags na
> >> documenta��o n�o existem no NFePHP, o XML � completamente diferente, e
> >> por este fato eu n�o consigo saber qual o problema com o meu c�digo


> >> para gerar o conteudo para estatagAssinaturada RPS.
>

> >> Parte da documenta��o sobre aassinaturadestatag:
> >> --------
> >> 1� - Monte a string de caracteres conforme a tabela a apresentada


> >> anteriormente. A seguir apresentamos o exemplo de parte de uma
> >> mensagem XML de pedido de envio de RPS (os campos utilizados na

> >> montagem da cadeia de caracteres est�o em negrito).


>
> >> ...
> >> <ChaveRPS>
> >> <InscricaoPrestador>31000000</InscricaoPrestador>
> >> <SerieRPS>AAAAA</SerieRPS>
> >> <NumeroRPS>2</NumeroRPS>
> >> </ChaveRPS>
> >> <TipoRPS>RPS-M</TipoRPS>
> >> <DataEmissao>2007-01-10</DataEmissao>
> >> <StatusRPS>N</StatusRPS>
> >> <TributacaoRPS>T</TributacaoRPS>
> >> <ValorServicos>20500</ValorServicos>
> >> <ValorDeducoes>5000</ValorDeducoes>
> >> <CodigoServico>2658</CodigoServico>
> >> <AliquotaServicos>0.05</AliquotaServicos>
> >> <ISSRetido>false</ISSRetido>
> >> <CPFCNPJTomador>
> >> <CPF>18564071878</CPF>
> >> </CPFCNPJTomador>
> >> ...
>
> >> Com base no trecho da mensagem XML apresentada, montamos a seguinte
> >> string de caracteres:
> >> "31000000OL03
> >> 00000000000120070103TNN00000000205000000000000050000002658100013167474254"

> >> Note que o valor dos servi�os (R$ 20.500,00) foi transformado em
> >> 2050000, o valor de dedu��es (R$ 5.000,00) foi transformado em 500000.
> >> Tamb�m foi acrescentado � s�rie do RPS um espa�o em branco � direita
> >> para preencher as 5 posi��es.
>
> >> 2� - Converta a cadeia de caracteres ASCII para bytes.
> >> 3� - Gere o HASH (array de bytes) utilizando SHA1.
> >> 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1.
>
> >> ATEN��O! Na maioria das linguagens de programa��o, os passos 3 e 4 s�o
> >> feitos atrav�s de uma �nica fun��o. Verifique a documenta��o de sua


> >> linguagem para evitar assinar um hash de um hash.
> >> --------
>

> >> N�o sei se o meu problema esta no passo 2.


>
> >> Grato,
>
> >> Reinaldo Nolasco Sanches
>
> >> On Jun 17, 10:46 am, "FerreiraH." <helder.maurici...@gmail.com> wrote:
>

> >> > E a possibilidade de emitir a NFe com pe�as e servi�os utilizando o
> >> > CFOP
> >> > correto fica como
> >> > Sei que em s�o paulo existe uma nota so de servi�o parece-me que em
> >> > campinas
> >> > (SP) tambem
> >> > Para nos desenvolvedores � muito ruim afinal o Brasil � muito grande

> >> > e
> >> > complica a vida da gente.

> >> > Ent�o em algumas localidades primeiro autoriza o RPS depois emite uma

> >> > NFe,
> >> > vai emitir a NFe se tiver venda ou sem venda tambem ?

> >> > E em rela��o ao topico alguem j� assinou um RPS ?


>
> >> > Em 17 de junho de 2010 09:25, Fabricio Silva
> >> > <fabriciojohnj...@gmail.com>escreveu:
>

> >> > > Pessoal, RPS significa Recibo Provis�rio de Servi�o.
>
> >> > > Aqui em Salvador ao inv�s de mandar uma NFS-e (Nota Fiscal de
> >> > > Servi�o
> >> > > Eletr�nica) via webservice, obrigat�riamente temos que mandar o
> >> > > RPS, e s�
> >> > > depois que a SEFAZ Municipio processa esse RPS � que ele poder� ou
> >> > > n�o virar
> >> > > uma NFS-e, ou seja, o RPS � usado para Nota Fiscal de Servi�o
> >> > > Eletr�nica.


>
> >> > > Em 17 de junho de 2010 09:21, FerreiraH.
> >> > > <helder.maurici...@gmail.com>escreveu:
>

> >> > >> Voce esta afirmando que a nota fiscal eletronica do estado de S�o
> >> > >> Paulo �
> >> > >> diferente do resto do Pais, � porque tem que incluir o cpf do
> >> > >> comprador ?
> >> > >> Me indique onde encontro mais informa��es sobre isso agora fiquei
> >> > >> preocupado. e oque � estatagRPS
> >> > >> Isso � para a vers�o corrente ou � para serie 2


>
> >> > >> Em 16 de junho de 2010 19:24, Reinaldo N. Sanches <
> >> > >> reinaldo.sanc...@gmail.com> escreveu:
>

> >> > >> Na NF-e Paulista existe atagAssinaturapara cada RPS que � uma


> >> > >>> string de 86 caracteres com informacoes da RPS.
>

> >> > >>> O meu problema � que o webservices esta dizendo:AssinaturaDigital

> >> > >>> do
> >> > >>> RPS incorreta.
>
> >> > >>> Estou usando a forma abaixo para criar o conteudo
> >> > >>> datagAssinatura,
> >> > >>> igual ao de assinar o XML.
>
> >> > >>> -----
> >> > >>> $signatureValue = '';
> >> > >>> $pkeyId = openssl_get_privatekey( file_get_contents( $this-
> >> > >>> >privateKey ) );
> >> > >>> openssl_sign( $content, $signatureValue, $pkeyId );
> >> > >>> openssl_free_key( $pkeyId );
> >> > >>> -----
>

> >> > >>> Algu�m j� conseguiu criar este conteudo com sucesso para NF-e


> >> > >>> Paulista?
>
> >> > >>> Doc:http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf
>
> >> > >>> Grato,
>
> >> > >>> Reinaldo Nolasco Sanches
>
> >> > >>> --

> >> > >>> Voc� recebeu esta mensagem porque est� inscrito no Grupo

> >> > >>> "NFePHP".
> >> > >>> Para Postar: nfe...@googlegroups.com
> >> > >>> Para Sair do Grupo:
> >> > >>> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> > >>> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> > >>> -------
> >> > >>> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> > >>> Como Participar:
> >> > >>>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> > >> --

> >> > >> Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".


> >> > >> Para Postar: nfe...@googlegroups.com
> >> > >> Para Sair do Grupo:
> >> > >> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> > >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> > >> -------
> >> > >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> > >> Como Participar:
> >> > >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> > > --
> >> > > sds,
> >> > > __________________________________
> >> > > Fabricio Gondim da Silva
>
> >> > > --

> >> > > Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

> > Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

> Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

> Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

--
Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

Roberto Leite Machado

unread,
Jun 24, 2010, 12:01:55 PM6/24/10
to nfe...@googlegroups.com
Meninos;
 
Posso estar errado mas no caso da pref. de são paulo o que eles chamam de assinatura não requer a estrutura completa conforme as demais prefeturas mas somente um hash cripografado e não uma assinatura digital completa.
 
Roberto

Em 24 de junho de 2010 12:48, Daniel Lemes <dle...@gmail.com> escreveu:
Me manda o manual ai da prefeitura dle...@gmail.com que vou ver se dou uma olhada.

Att

Daniel
----- Original Message ----- From: "Reinaldo N. Sanches" <reinaldo...@gmail.com>
To: "NFePHP" <nfe...@googlegroups.com>
Sent: Thursday, June 24, 2010 11:17 AM
Subject: [nfephp] Re: Assinatura da RPS



Daniel,

Grato pela ajuda, mas eu já tentei varias formas de conversão para

binary, hex, ord, charset, etc, etc... e nada funciona.

Tentei esta sua função também e continua gerando errado o valor para a

tag.


On Jun 24, 10:07 am, "Daniel Lemes" <dle...@gmail.com> wrote:
pelo que entendi sim, teria que fazer e testar



----- Original Message -----
From: Giuseppe Lopes
To: nfe...@googlegroups.com
Sent: Thursday, June 24, 2010 10:05 AM
Subject: Re: [nfephp] Re: Assinatura da RPS

Obrigado pela ajuda Daniel.

Com a função que passou converto a string em bytes, porém agora segundo a documentação devo:

3º - Gere o HASH (array de bytes) utilizando SHA1.


$hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?

4º - Assine o HASH (array de bytes) utilizando RSA-SHA1
Este quarto passo devo me basear nessa função do método de assinar?

$resp = openssl_sign($dados, $signature, $this->privateKeyResource);

Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza de um XML de envio, a tag que preciso preencher é <Assinatura>

Qualquer ajuda é bem vinda.


[ ]'s
Giuseppe Lopes

Em 23 de junho de 2010 19:01, Daniel Batista Lemes <dle...@gmail.com> escreveu:

tenta isso

http://paste.ideaslabs.com/show/qRmNXyrnx

Em 23 de junho de 2010 17:30, Giuseppe <giuseppe.lo...@gmail.com> escreveu:

> Prezados,

> Alguém sabe ajudar como converter uma string como esta

> "31000000OL03
> 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
> com os seguintes passo:

> 2º - Converta a cadeia de caracteres ASCII para bytes.
> 3º - Gere o HASH (array de bytes) utilizando SHA1.
> 4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.

> Isso é para a emissão de NFSe para o estado de São Paulo, conseguindo

> acertar esse ponto quero disponibilizar o modulo completo para o
> grupo.

> [ ]'s
> Giuseppe Lopes

> On 17 jun, 11:24, "Reinaldo N. Sanches" <reinaldo.sanc...@gmail.com>
> wrote:
>> Estou usando a versão atual. Coloquei o link no open topic.

>> Não sei o que muda para os outros estados, só sei que as tags na
>> documentação não existem no NFePHP, o XML é completamente diferente, e
>> por este fato eu não consigo saber qual o problema com o meu código

>> para gerar o conteudo para estatagAssinaturada RPS.

>> Parte da documentação sobre aassinaturadestatag:
>> --------
>> 1º - Monte a string de caracteres conforme a tabela a apresentada

>> anteriormente. A seguir apresentamos o exemplo de parte de uma
>> mensagem XML de pedido de envio de RPS (os campos utilizados na
>> montagem da cadeia de caracteres estão em negrito).


>> ...
>> <ChaveRPS>
>> <InscricaoPrestador>31000000</InscricaoPrestador>
>> <SerieRPS>AAAAA</SerieRPS>
>> <NumeroRPS>2</NumeroRPS>
>> </ChaveRPS>
>> <TipoRPS>RPS-M</TipoRPS>
>> <DataEmissao>2007-01-10</DataEmissao>
>> <StatusRPS>N</StatusRPS>
>> <TributacaoRPS>T</TributacaoRPS>
>> <ValorServicos>20500</ValorServicos>
>> <ValorDeducoes>5000</ValorDeducoes>
>> <CodigoServico>2658</CodigoServico>
>> <AliquotaServicos>0.05</AliquotaServicos>
>> <ISSRetido>false</ISSRetido>
>> <CPFCNPJTomador>
>> <CPF>18564071878</CPF>
>> </CPFCNPJTomador>
>> ...

>> Com base no trecho da mensagem XML apresentada, montamos a seguinte
>> string de caracteres:
>> "31000000OL03
>> 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
>> Note que o valor dos serviços (R$ 20.500,00) foi transformado em
>> 2050000, o valor de deduções (R$ 5.000,00) foi transformado em 500000.
>> Também foi acrescentado à série do RPS um espaço em branco à direita
>> para preencher as 5 posições.

>> 2º - Converta a cadeia de caracteres ASCII para bytes.
>> 3º - Gere o HASH (array de bytes) utilizando SHA1.
>> 4º - Assine o HASH (array de bytes) utilizando RSA-SHA1.


>> ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são
>> feitos através de uma única função. Verifique a documentação de sua

>> linguagem para evitar assinar um hash de um hash.
>> --------

>> Não sei se o meu problema esta no passo 2.


>> Grato,

>> Reinaldo Nolasco Sanches

>> On Jun 17, 10:46 am, "FerreiraH." <helder.maurici...@gmail.com> wrote:

>> > E a possibilidade de emitir a NFe com peças e serviços utilizando o >> > CFOP
>> > correto fica como
>> > Sei que em são paulo existe uma nota so de serviço parece-me que em >> > campinas
>> > (SP) tambem
>> > Para nos desenvolvedores é muito ruim afinal o Brasil é muito grande >> > e

>> > complica a vida da gente.
>> > Então em algumas localidades primeiro autoriza o RPS depois emite uma >> > NFe,

>> > vai emitir a NFe se tiver venda ou sem venda tambem ?
>> > E em relação ao topico alguem já assinou um RPS ?


>> > Em 17 de junho de 2010 09:25, Fabricio Silva
>> > <fabriciojohnj...@gmail.com>escreveu:

>> > > Pessoal, RPS significa Recibo Provisório de Serviço.

>> > > Aqui em Salvador ao invés de mandar uma NFS-e (Nota Fiscal de >> > > Serviço
>> > > Eletrônica) via webservice, obrigatóriamente temos que mandar o >> > > RPS, e só
>> > > depois que a SEFAZ Municipio processa esse RPS é que ele poderá ou >> > > não virar
>> > > uma NFS-e, ou seja, o RPS é usado para Nota Fiscal de Serviço >> > > Eletrônica.


>> > > Em 17 de junho de 2010 09:21, FerreiraH. >> > > <helder.maurici...@gmail.com>escreveu:

>> > >> Voce esta afirmando que a nota fiscal eletronica do estado de São >> > >> Paulo é
>> > >> diferente do resto do Pais, é porque tem que incluir o cpf do >> > >> comprador ?
>> > >> Me indique onde encontro mais informações sobre isso agora fiquei

>> > >> preocupado. e oque é estatagRPS
>> > >> Isso é para a versão corrente ou é para serie 2


>> > >> Em 16 de junho de 2010 19:24, Reinaldo N. Sanches <
>> > >> reinaldo.sanc...@gmail.com> escreveu:

>> > >> Na NF-e Paulista existe atagAssinaturapara cada RPS que é uma

>> > >>> string de 86 caracteres com informacoes da RPS.

>> > >>> O meu problema é que o webservices esta dizendo:AssinaturaDigital >> > >>> do

>> > >>> RPS incorreta.

>> > >>> Estou usando a forma abaixo para criar o conteudo >> > >>> datagAssinatura,
>> > >>> igual ao de assinar o XML.

>> > >>> -----
>> > >>> $signatureValue = '';
>> > >>> $pkeyId = openssl_get_privatekey( file_get_contents( $this-
>> > >>> >privateKey ) );
>> > >>> openssl_sign( $content, $signatureValue, $pkeyId );
>> > >>> openssl_free_key( $pkeyId );
>> > >>> -----

>> > >>> Alguêm já conseguiu criar este conteudo com sucesso para NF-e

>> > >>> Paulista?

>> > >>> Doc:http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf

>> > >>> Grato,

>> > >>> Reinaldo Nolasco Sanches

>> > >>> --
>> > >>> Você recebeu esta mensagem porque está inscrito no Grupo >> > >>> "NFePHP".
>> > >> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".

>> > >> Para Postar: nfe...@googlegroups.com
>> > >> Para Sair do Grupo: >> > >> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
>> > >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
>> > >> -------
>> > >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
>> > >> Como Participar:
>> > >>https://www.assembla.com/wiki/show/nfephp/Como_participar

>> > > --
>> > > sds,
>> > > __________________________________
>> > > Fabricio Gondim da Silva

>> > > --
>> > > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".

--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".

Giuseppe Lopes

unread,
Jun 24, 2010, 1:00:49 PM6/24/10
to nfe...@googlegroups.com
Boa tarde Roberto,

Talvez tenha razão, problema é que não consigo acertar essa criptografia deles =/

Daniel,

Segue anexo o manual, mais precisamente na página 23, ítem 4.3.2

Obrigado pessoal.

[ ]'s
Giuseppe Lopes
NFe-Web-Service-v2-2.pdf

Reinaldo N. Sanches

unread,
Jun 24, 2010, 1:20:38 PM6/24/10
to NFePHP
Você deve ter a estrutura completa assinada na hora de enviar, e no
caso do envio de RPS, você também deve ter uma tag <Assinatura> para
cara <RPS>, com uma string com informações apenas daquela RPS
criptografada.

On Jun 24, 1:01 pm, Roberto Leite Machado
<roberto.mach...@superig.com.br> wrote:
> Meninos;
>
> Posso estar errado mas no caso da pref. de são paulo o que eles chamam de
> assinatura não requer a estrutura completa conforme as demais prefeturas mas
> somente um hash cripografado e não uma assinatura digital completa.
>
> Roberto
>
> Em 24 de junho de 2010 12:48, Daniel Lemes <dle...@gmail.com> escreveu:
>
>
>
> > Me manda o manual ai da prefeitura dle...@gmail.com que vou ver se dou uma
> > olhada.
>
> > Att
>
> > Daniel
> > ----- Original Message ----- From: "Reinaldo N. Sanches" <
> > reinaldo.sanc...@gmail.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > >>> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > >>> -------
> >> >> > >>> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > >>> Como Participar:
> >> >> > >>>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> >> > >> --
> >> >> > >> Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> >> > >> Para Postar: nfe...@googlegroups.com
> >> >> > >> Para Sair do Grupo: >> > >> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > >> -------
> >> >> > >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > >> Como Participar:
> >> >> > >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> >> > > --
> >> >> > > sds,
> >> >> > > __________________________________
> >> >> > > Fabricio Gondim da Silva
>
> >> >> > > --
> >> >> > > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> >> > > Para Postar: nfe...@googlegroups.com
> >> >> > > Para Sair do Grupo: >> > > nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> >> <nfephp%2Bunsu...@googlegroups.com<nfephp%252Bunsubscribe@googlegroups. com>
>
> >> >> > > Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> >> >> > > -------
> >> >> > > FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> >> >> > > Como >> > > Participar:
> >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> >> > --
> >> > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> >> > Para Postar: nfe...@googlegroups.com
> >> > Para Sair do Grupo:
>
> ...
>
> read more »

Reinaldo N. Sanches

unread,
Jun 24, 2010, 1:21:40 PM6/24/10
to NFePHP
O link para a doc: http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf

On Jun 24, 12:48 pm, "Daniel Lemes" <dle...@gmail.com> wrote:
> Me manda o manual ai da prefeitura dle...@gmail.com que vou ver se dou uma
> olhada.
>
> Att
>
> Daniel
>
>
>
> ----- Original Message -----
> From: "Reinaldo N. Sanches" <reinaldo.sanc...@gmail.com>
> To: "NFePHP" <nfe...@googlegroups.com>
> Sent: Thursday, June 24, 2010 11:17 AM
> Subject: [nfephp] Re: Assinatura da RPS
>
> Daniel,
>
> Grato pela ajuda, mas eu j� tentei varias formas de convers�o para
> binary, hex, ord, charset, etc, etc... e nada funciona.
>
> Tentei esta sua fun��o tamb�m e continua gerando errado o valor para a
> tag.
>
> On Jun 24, 10:07 am, "Daniel Lemes" <dle...@gmail.com> wrote:
> > pelo que entendi sim, teria que fazer e testar
>
> > ----- Original Message -----
> > From: Giuseppe Lopes
> > To: nfe...@googlegroups.com
> > Sent: Thursday, June 24, 2010 10:05 AM
> > Subject: Re: [nfephp] Re: Assinatura da RPS
>
> > Obrigado pela ajuda Daniel.
>
> > Com a fun��o que passou converto a string em bytes, por�m agora segundo a
> > documenta��o devo:
>
> > 3� - Gere o HASH (array de bytes) utilizando SHA1.
>
> > $hashValue = hash('sha1', $assinaturaEmBytes, TRUE); //Seria isso?
>
> > 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1
> > Este quarto passo devo me basear nessa fun��o do m�todo de assinar?
> > $resp = openssl_sign($dados, $signature, $this->privateKeyResource);
>
> > Pois pelo o que eu entendi a tag assinatura deve ficar parecida com o
> > SignatureValue, olhem anexo o exemplo que a prefeitura de SP disponibiliza
> > de um XML de envio, a tag que preciso preencher � <Assinatura>
>
> > Qualquer ajuda � bem vinda.
>
> > [ ]'s
> > Giuseppe Lopes
>
> > Em 23 de junho de 2010 19:01, Daniel Batista Lemes <dle...@gmail.com>
> > escreveu:
>
> > tenta isso
>
> >http://paste.ideaslabs.com/show/qRmNXyrnx
>
> > Em 23 de junho de 2010 17:30, Giuseppe <giuseppe.lo...@gmail.com>
> > escreveu:
>
> > > Prezados,
>
> > > Algu�m sabe ajudar como converter uma string como esta
> > > "31000000OL03
> > > 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
> > > com os seguintes passo:
>
> > > 2� - Converta a cadeia de caracteres ASCII para bytes.
> > > 3� - Gere o HASH (array de bytes) utilizando SHA1.
> > > 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1.
>
> > > Isso � para a emiss�o de NFSe para o estado de S�o Paulo, conseguindo
> > > acertar esse ponto quero disponibilizar o modulo completo para o
> > > grupo.
>
> > > [ ]'s
> > > Giuseppe Lopes
>
> > > On 17 jun, 11:24, "Reinaldo N. Sanches" <reinaldo.sanc...@gmail.com>
> > > wrote:
> > >> Estou usando a vers�o atual. Coloquei o link no open topic.
>
> > >> N�o sei o que muda para os outros estados, s� sei que as tags na
> > >> documenta��o n�o existem no NFePHP, o XML � completamente diferente, e
> > >> por este fato eu n�o consigo saber qual o problema com o meu c�digo
> > >> para gerar o conteudo para estatagAssinaturada RPS.
>
> > >> Parte da documenta��o sobre aassinaturadestatag:
> > >> --------
> > >> 1� - Monte a string de caracteres conforme a tabela a apresentada
> > >> anteriormente. A seguir apresentamos o exemplo de parte de uma
> > >> mensagem XML de pedido de envio de RPS (os campos utilizados na
> > >> montagem da cadeia de caracteres est�o em negrito).
>
> > >> ...
> > >> <ChaveRPS>
> > >> <InscricaoPrestador>31000000</InscricaoPrestador>
> > >> <SerieRPS>AAAAA</SerieRPS>
> > >> <NumeroRPS>2</NumeroRPS>
> > >> </ChaveRPS>
> > >> <TipoRPS>RPS-M</TipoRPS>
> > >> <DataEmissao>2007-01-10</DataEmissao>
> > >> <StatusRPS>N</StatusRPS>
> > >> <TributacaoRPS>T</TributacaoRPS>
> > >> <ValorServicos>20500</ValorServicos>
> > >> <ValorDeducoes>5000</ValorDeducoes>
> > >> <CodigoServico>2658</CodigoServico>
> > >> <AliquotaServicos>0.05</AliquotaServicos>
> > >> <ISSRetido>false</ISSRetido>
> > >> <CPFCNPJTomador>
> > >> <CPF>18564071878</CPF>
> > >> </CPFCNPJTomador>
> > >> ...
>
> > >> Com base no trecho da mensagem XML apresentada, montamos a seguinte
> > >> string de caracteres:
> > >> "31000000OL03
> > >> 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
> > >> Note que o valor dos servi�os (R$ 20.500,00) foi transformado em
> > >> 2050000, o valor de dedu��es (R$ 5.000,00) foi transformado em 500000.
> > >> Tamb�m foi acrescentado � s�rie do RPS um espa�o em branco � direita
> > >> para preencher as 5 posi��es.
>
> > >> 2� - Converta a cadeia de caracteres ASCII para bytes.
> > >> 3� - Gere o HASH (array de bytes) utilizando SHA1.
> > >> 4� - Assine o HASH (array de bytes) utilizando RSA-SHA1.
>
> > >> ATEN��O! Na maioria das linguagens de programa��o, os passos 3 e 4 s�o
> > >> feitos atrav�s de uma �nica fun��o. Verifique a documenta��o de sua
> > >> linguagem para evitar assinar um hash de um hash.
> > >> --------
>
> > >> N�o sei se o meu problema esta no passo 2.
>
> > >> Grato,
>
> > >> Reinaldo Nolasco Sanches
>
> > >> On Jun 17, 10:46 am, "FerreiraH." <helder.maurici...@gmail.com> wrote:
>
> > >> > E a possibilidade de emitir a NFe com pe�as e servi�os utilizando o
> > >> > CFOP
> > >> > correto fica como
> > >> > Sei que em s�o paulo existe uma nota so de servi�o parece-me que em
> > >> > campinas
> > >> > (SP) tambem
> > >> > Para nos desenvolvedores � muito ruim afinal o Brasil � muito grande
> > >> > e
> > >> > complica a vida da gente.
> > >> > Ent�o em algumas localidades primeiro autoriza o RPS depois emite uma
> > >> > NFe,
> > >> > vai emitir a NFe se tiver venda ou sem venda tambem ?
> > >> > E em rela��o ao topico alguem j� assinou um RPS ?
>
> > >> > Em 17 de junho de 2010 09:25, Fabricio Silva
> > >> > <fabriciojohnj...@gmail.com>escreveu:
>
> > >> > > Pessoal, RPS significa Recibo Provis�rio de Servi�o.
>
> > >> > > Aqui em Salvador ao inv�s de mandar uma NFS-e (Nota Fiscal de
> > >> > > Servi�o
> > >> > > Eletr�nica) via webservice, obrigat�riamente temos que mandar o
> > >> > > RPS, e s�
> > >> > > depois que a SEFAZ Municipio processa esse RPS � que ele poder� ou
> > >> > > n�o virar
> > >> > > uma NFS-e, ou seja, o RPS � usado para Nota Fiscal de Servi�o
> > >> > > Eletr�nica.
>
> > >> > > Em 17 de junho de 2010 09:21, FerreiraH.
> > >> > > <helder.maurici...@gmail.com>escreveu:
>
> > >> > >> Voce esta afirmando que a nota fiscal eletronica do estado de S�o
> > >> > >> Paulo �
> > >> > >> diferente do resto do Pais, � porque tem que incluir o cpf do
> > >> > >> comprador ?
> > >> > >> Me indique onde encontro mais informa��es sobre isso agora fiquei
> > >> > >> preocupado. e oque � estatagRPS
> > >> > >> Isso � para a vers�o corrente ou � para serie 2
>
> > >> > >> Em 16 de junho de 2010 19:24, Reinaldo N. Sanches <
> > >> > >> reinaldo.sanc...@gmail.com> escreveu:
>
> > >> > >> Na NF-e Paulista existe atagAssinaturapara cada RPS que � uma
> > >> > >>> string de 86 caracteres com informacoes da RPS.
>
> > >> > >>> O meu problema � que o webservices esta dizendo:AssinaturaDigital
> > >> > >>> do
> > >> > >>> RPS incorreta.
>
> > >> > >>> Estou usando a forma abaixo para criar o conteudo
> > >> > >>> datagAssinatura,
> > >> > >>> igual ao de assinar o XML.
>
> > >> > >>> -----
> > >> > >>> $signatureValue = '';
> > >> > >>> $pkeyId = openssl_get_privatekey( file_get_contents( $this-
> > >> > >>> >privateKey ) );
> > >> > >>> openssl_sign( $content, $signatureValue, $pkeyId );
> > >> > >>> openssl_free_key( $pkeyId );
> > >> > >>> -----
>
> > >> > >>> Algu�m j� conseguiu criar este conteudo com sucesso para NF-e
> > >> > >>> Paulista?
>
> > >> > >>> Doc:http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf
>
> > >> > >>> Grato,
>
> > >> > >>> Reinaldo Nolasco Sanches
>
> > >> > >>> --
> > >> > >>> Voc� recebeu esta mensagem porque est� inscrito no Grupo
> > >> > >>> "NFePHP".
> > >> > >>> Para Postar: nfe...@googlegroups.com
> > >> > >>> Para Sair do Grupo:
> > >> > >>> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> > >> > >>> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> > >> > >>> -------
> > >> > >>> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> > >> > >>> Como Participar:
> > >> > >>>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> > >> > >> --
> > >> > >> Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".
> > >> > >> Para Postar: nfe...@googlegroups.com
> > >> > >> Para Sair do Grupo:
> > >> > >> nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> > >> > >> Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> > >> > >> -------
> > >> > >> FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> > >> > >> Como Participar:
> > >> > >>https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> > >> > > --
> > >> > > sds,
> > >> > > __________________________________
> > >> > > Fabricio Gondim da Silva
>
> > >> > > --
> > >> > > Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".
> > >> > > Para Postar: nfe...@googlegroups.com
> > >> > > Para Sair do Grupo:
> > >> > > nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>
> > >> > > Link:http://groups.google.com.br/group/nfephp?hl=pt-BR
> > >> > > -------
> > >> > > FAQ:https://www.assembla.com/wiki/show/nfephp/FAQ
> > >> > > Como
> > >> > > Participar:https://www.assembla.com/wiki/show/nfephp/Como_participar
>
> > > --
> > > Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".
> > Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".
> > Para Postar: nfe...@googlegroups.com
> > Para Sair do Grupo: nfephp+un...@googlegroups.com
>
> ...
>
> read more »

Giuseppe Lopes

unread,
Jun 24, 2010, 10:14:38 PM6/24/10
to nfe...@googlegroups.com
Ninguém tem nenhuma idéia?

[ ]'s
Giuseppe Lopes


--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".

Roberto L. Machado

unread,
Jun 25, 2010, 9:01:12 AM6/25/10
to nfe...@googlegroups.com
Teste da seguinte forma


$assinatura = $this->asc2bin($assinatura); //converti para bytes
$resp = openssl_sign($assinatura, $signature, $this->privateKeyResource,OPENSSL_ALGO_SHA1); //Assinar usando sha1

$newAssinatura = base64_encode($signature); //Encodei em base 64 para poder enviar no xml


Roberto

Roberto L. Machado

unread,
Jun 25, 2010, 10:23:58 AM6/25/10
to nfe...@googlegroups.com
Se não seu certo tente isto


<?php

$assinatura =
"31000000OL0300000000000120070103TNN00000000205000000000000050000002658100013167474254";
echo "Dados originais <BR> " .$assinatura .'<BR><BR>';
echo "Assinatura <BR>" . signRPS($assinatura);

function signRPS($assinatura){

$fp = fopen('/var/www/trunkNFe/certs/privatekey.pem', "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

$dados = text2Byte($assinatura);
echo "Conversao para Bytes <BR>";
echo $dados.'<BR><BR>';

$dados = sha1(dados);
echo "Hash SHA1 <BR>";
echo $dados .'<BR><BR>';
//executa a assinatura digital usando o resource da chave privada
$resp = openssl_sign($dados,$signature,$pkeyid,OPENSSL_ALGO_SHA1);
//codifica assinatura para o padrao base64
$signatureValue = base64_encode($signature);
return $signatureValue;
}

function text2Byte($texto){
$hex_ary = array();
foreach (str_split($texto) as $chr) {
$hex_ary[] = sprintf("%02X", ord($chr));
}
return implode('',$hex_ary);
}


?>


Roberto

Giuseppe Lopes

unread,
Jun 25, 2010, 2:24:36 PM6/25/10
to nfe...@googlegroups.com
Essa não funcionou, vou tentar a outra alternativa.

O engraçado é que o erro é sempre o mesmo, ai acabamos tendo que ir na tentativa e erro;

=/

Giuseppe Lopes

unread,
Jun 25, 2010, 2:35:51 PM6/25/10
to nfe...@googlegroups.com
Também não funcionou, vou tentar algumas derivações ...

Nem me atrevo a tentar contato com a prefeitura pq da ultima vez nem se prestaram a responder meus contatos.

Roberto, muito obrigado, se tiver maias alguma sugestão fica a vontade para comentar, se alguém mais quiser sugerir algo.

[ ]'s
Giuseppe Lopes

Giuseppe Lopes

unread,
Jun 25, 2010, 2:52:47 PM6/25/10
to nfe...@googlegroups.com
Aos que entendem de VB achei esse exemplo no manual de NFSe da prefeitura de Itaguai-RJ

Se alguém manjar de VB pode ser um caminho.

[ ]'s
Giuseppe Lopes
assina_itaguai.rar

Fabricio Silva

unread,
Jun 28, 2010, 9:23:56 AM6/28/10
to nfe...@googlegroups.com

Ola Giusepp, aqui em Salvador para assinar o RPS temos que assinar o lote todo e cada RPS existente no lote, e para isso uso o método signXML (com pequenas modificações) do projeto para assinar da seguinte forma:

                if ( $signn = $nfe->signXML($nfefile, 'InfRps') ) {
                    if ( $signn = $nfe->signXML($signn, 'LoteRps') ) {

LoteRps são todas a informações de todos os RPS's
InfRps equivale ao RPS propriamente dito. No meu sistema cada lote só coloco um RPS para simplificar, logo meu lote RPS terá suas assinaturas.

Olhei o exemplo em vb é exatamente o que eo faço. segue em anexo o método signXML com minhas modificações. (caso use essa função altere o nome do método pois a signXML original servira para assinar a NFe)

Aproveitando o tópico, como vc manda seu RPS no soap? vc manda com cabeçalho? Poderia me enviar o trecho em que vc manda o PRS para a Prefeitura? Pois aqui em Salvador o cabeçalho é montado em tempo de execução, por isso estou tendo dificuldade em enviar, ja entrei em contato com a Prefeitura mas eles não conseguiram me ajudar.

Att,
Fabricio Silva
signXML_modificado.php

Giuseppe Lopes

unread,
Jun 29, 2010, 1:44:56 PM6/29/10
to nfe...@googlegroups.com
Obrigado pelo retorno Fabricio.

Não entendi o infRps, esse trecho seria as informações do RPS ai em Salvador? 

No manual de SP, eu tenho uma string como essa: "31000000OL03 00000000000120070103TNN00000000205000000000000050000002658100013167474254" e dela eu preencho a tag "Assinatura" no XML, assim:

<?xml version="1.0" encoding="UTF-8"?>
  <Cabecalho Versao="1" xmlns="">
    <CPFCNPJRemetente>
      <CNPJ>04642554000143</CNPJ>
    </CPFCNPJRemetente>
  </Cabecalho>
  <RPS xmlns="">
    <Assinatura>lQllFyvbUo6C68CnFrFosa2jPbjmplQ6x3Q59+vYeTXAwACzXfD71aziAnP3NtEP/UiRRAyOQZOO73N+u2g8sanXJ4jhIOMXkP6yeK9JwTkZ/UoeJQUS7j7iyGw0IOq6o6sb0sV0BxZiclI/EMDvZ5H2zZrEEF9AstZkyEoEoJ8=</Assinatura> ...

E depois eu assinto o XML inteiro, meu problema é para gerar esse valor no node Assinatura.

Anexo encaminho o Manual para verificar e os exemplos de XML para envio de RPS e envio de lotequ e a prefeitura disponibiliza, peço que confira se é parecido com o ai de Salvador, pois talvez seja só as tag's de preenchimento que mudem de nome de um estado para o outro.

Para enviar para a prefeitura, eu monto o XML, assino-o e envio, conforme trecho abaixo:

if ($this->loadCertified()){
            $newXml = $this->signXml($xml, 'PedidoEnvioRPS');
            
            $param = array(
                            'VersaoSchema' => 1,
                            'MensagemXML' => $newXml
                            );
            $resultadoXml = $this->sendXml('EnvioRPS', $param, $wsdl);
            ...
} ...

Quem tiver qualquer sugestão estou aceitando, pois sigo travado nesse ponto. Faltando somente isso para concluir a comunicação e integração com o sistema de Notas Fiscais de Serviço Eletrônicas.

[ ]'s
Giuseppe Lopes
NFe-Web-Service-v2-2.pdf
PedidoEnvioLoteRPS.xml
PedidoEnvioRPS.xml

Fabricio Silva

unread,
Jun 29, 2010, 2:03:03 PM6/29/10
to nfe...@googlegroups.com
Exatamente o infRPS são os dados do RPS.

Aqui é um pouco diferente.

Para cada RPS, existe 1 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> e depois mais 1 para todo o XML. Não existe essa tag Assinatura.

Aqui em Salvador eles só recebem o RPS através do Lote. Por isso a maioria das empresas so manda um RPS em cada lote para tornar mais simples.

Giuseppe Lopes

unread,
Jun 29, 2010, 2:13:50 PM6/29/10
to nfe...@googlegroups.com
Mas essa infRPS dai não é igual a de SP, é?

Concatenando aquelas infos e gerando o Signature?

[ ]'s
Giuseppe Lopes

Giuseppe Lopes

unread,
Jun 29, 2010, 5:02:05 PM6/29/10
to nfe...@googlegroups.com
Pessoal,

Em algumas pesquisas verifiquei que a primeira etapa, a parte de converter a string para bytes em outras linguagens o pessoal tem feito transformando em um array de bytes.

Consegui converter utilizando a função que, se não me engano, foi o Roberto que mandou, com uma pequena alteração:

public function text2Byte($texto){
       $hex_ary = array();
       foreach (str_split($texto) as $chr) {
           $hex_ary[] = ord($chr);
       }
       return implode('', $hex_ary);
    }

Cheguei nela ao executar um código em java String.getBytes() e verificar que retornava o valor decimal da tabela ASCII para o caractere passado.

Mas mesmo assim ainda não consigo sair do maldito erro:

<Sucesso>false</Sucesso></Cabecalho><Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS incorreta.</Descricao>

Nado, nado, nado e não saio do mesmo lugar.

=/

Fonte de algumas informações:

[ ]'s
Giuseppe Lopes

S. Rocha

unread,
Jun 30, 2010, 12:14:14 AM6/30/10
to nfe...@googlegroups.com
Giuseppe

Vc tentou reverter a assinatura depois de cria-la, para ver se vc
obtem a string original?

Pode ser que vc consiga uma dica do que pode estar errado dai.

Neto


2010/6/29 Giuseppe Lopes <giusepp...@gmail.com>:

--
-----------------------------------
Inode Tecnologias Internet Ltda.
55 11 3565 1906
55 11 8528 0180
---
http://www.i-node.com.br
http://www.erpx.com.br
---
Sao Paulo - SP- Brazil

Giuseppe Lopes

unread,
Jun 30, 2010, 8:57:43 AM6/30/10
to nfe...@googlegroups.com
Obrigado pela dica Neto. Vou tentar isso para ver o que ocorre de errado.

Se alguém tiver mais alguma sugestão, por favor, não se acanhe. Heheheh

[ ]'s
Giuseppe Lopes

Reinaldo N. Sanches

unread,
Jul 1, 2010, 11:48:15 PM7/1/10
to NFePHP
Depois de muito tentar suporte com a Prefeitura de SP, o mais proximo
de uma ajuda que consegui até agora foi:

---
Prezado(a) Sr(a).

Segue um exemplo de função de conversão do string, contudo lembramos
que essa função, como outras que precedem a entrada de dados no nosso
sistema deverão ser desenvolvidas ou encontradas por cada usuário em
particular. O nosso Manual dá orientações genéricas, os procedimentos
para se chegar aos dados que serão posteriormente aceitos pelo nosso
sistema WS, depende do tipo de programação de cada usuário, devendo
ser por estes desenvolvidos.

Exemplo de função para conversão da string de assinatura de RPS em
bytes.

System.Text.Encoding.ASCII.GetBytes([string])

Ela está disponível no MS .NET Framework.
---

Acredito que isso é o que tentamos fazer até agora, tem algum detalhe
que não estamos conseguindo reproduzir no PHP. Já fiz este código em
Java para ver o que o getBytes retornava e é a mesma coisa que fiz no
PHP.

Agora no desespero é encontrar um Windows e ver se consigo testar este
GetBytes do .Net e quem sabe no meio disso tudo encontrar o detalhe
que falta, que já estou começando a achar que é outra coisa "não
documentada".




On Jun 30, 9:57 am, Giuseppe Lopes <giuseppe.lo...@gmail.com> wrote:
> Obrigado pela dica Neto. Vou tentar isso para ver o que ocorre de errado.
>
> Se alguém tiver mais alguma sugestão, por favor, não se acanhe. Heheheh
>
> [ ]'s
> Giuseppe Lopes
>
> Em 30 de junho de 2010 01:14, S. Rocha <srn...@gmail.com> escreveu:
>
>
>
> > Giuseppe
>
> > Vc tentou reverter a assinatura depois de cria-la, para ver se vc
> > obtem a string original?
>
> > Pode ser que vc consiga uma dica do que pode estar errado dai.
>
> > Neto
>
> > 2010/6/29 Giuseppe Lopes <giuseppe.lo...@gmail.com>:
> > > Em 29 de junho de 2010 15:13, Giuseppe Lopes <giuseppe.lo...@gmail.com>
> > > escreveu:
>
> > >> Mas essa infRPS dai não é igual a de SP, é?
> > >> Concatenando aquelas infos e gerando o Signature?
> > >> [ ]'s
> > >> Giuseppe Lopes
>
> > >> Em 29 de junho de 2010 15:03, Fabricio Silva <
> > fabriciojohnj...@gmail.com>
> > >> escreveu:
>
> > >>> Exatamente o infRPS são os dados do RPS.
>
> > >>> Aqui é um pouco diferente.
>
> > >>> Para cada RPS, existe 1 <Signature
> > >>> xmlns="http://www.w3.org/2000/09/xmldsig#"> e depois mais 1 para todo
> > o XML.
> > >>> Não existe essa tag Assinatura.
>
> > >>> Aqui em Salvador eles só recebem o RPS através do Lote. Por isso a
> > >>> maioria das empresas so manda um RPS em cada lote para tornar mais
> > simples.
>
> > >>> Em 29 de junho de 2010 14:44, Giuseppe Lopes <giuseppe.lo...@gmail.com
>
> > >>> escreveu:
>
> > >>>> Obrigado pelo retorno Fabricio.
> > >>>> Não entendi o infRps, esse trecho seria as informações do RPS ai em
> > >>>> Salvador?
> > >>>> No manual de SP, eu tenho uma string como essa: "31000000OL03
>
> > 00000000000120070103TNN00000000205000000000000050000002658100013167474254" e
> > >>>> dela eu preencho a tag "Assinatura" no XML, assim:
> > >>>> <?xml version="1.0" encoding="UTF-8"?>
> > >>>> <PedidoEnvioRPS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > >>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > >>>> xmlns="http://www.prefeitura.sp.gov.br/nfe">
> > >>>>   <Cabecalho Versao="1" xmlns="">
> > >>>>     <CPFCNPJRemetente>
> > >>>>       <CNPJ>04642554000143</CNPJ>
> > >>>>     </CPFCNPJRemetente>
> > >>>>   </Cabecalho>
> > >>>>   <RPS xmlns="">
>
> >  <Assinatura>lQllFyvbUo6C68CnFrFosa2jPbjmplQ6x3Q59+vYeTXAwACzXfD71aziAnP3NtE P/UiRRAyOQZOO73N+u2g8sanXJ4jhIOMXkP6yeK9JwTkZ/UoeJQUS7j7iyGw0IOq6o6sb0sV0Bx ZiclI/EMDvZ5H2zZrEEF9AstZkyEoEoJ8=</Assinatura>
> > >>>> <fabriciojohnj...@gmail.com> escreveu:
>
> > >>>>> Ola Giusepp, aqui em Salvador para assinar o RPS temos que assinar o
> > >>>>> lote todo e cada RPS existente no lote, e para isso uso o método
> > signXML
> > >>>>> (com pequenas modificações) do projeto para assinar da seguinte
> > forma:
>
> > >>>>>                 if ( $signn = $nfe->signXML($nfefile, 'InfRps') ) {
> > >>>>>                     if ( $signn = $nfe->signXML($signn, 'LoteRps') )
> > {
>
> > >>>>> LoteRps são todas a informações de todos os RPS's
> > >>>>> InfRps equivale ao RPS propriamente dito. No meu sistema cada lote só
> > >>>>> coloco um RPS para simplificar, logo meu lote RPS terá suas
> > assinaturas.
>
> > >>>>> Olhei o exemplo em vb é exatamente o que eo faço. segue em anexo o
> > >>>>> método signXML com minhas modificações. (caso use essa função altere
> > o nome
> > >>>>> do método pois a signXML original servira para assinar a NFe)
>
> > >>>>> Aproveitando o tópico, como vc manda seu RPS no soap? vc manda com
> > >>>>> cabeçalho? Poderia me enviar o trecho em que vc manda o PRS para a
> > >>>>> Prefeitura? Pois aqui em Salvador o cabeçalho é montado em tempo de
> > >>>>> execução, por isso estou tendo dificuldade em enviar, ja entrei em
> > contato
> > >>>>> com a Prefeitura mas eles não conseguiram me ajudar.
>
> > >>>>> Att,
> > >>>>> Fabricio Silva
>
> > >>>>> Em 25 de junho de 2010 15:52, Giuseppe Lopes <
> > giuseppe.lo...@gmail.com>
> > >>>>> escreveu:
>
> > >>>>>> Aos que entendem de VB achei esse exemplo no manual de NFSe da
> > >>>>>> prefeitura de Itaguai-RJ
> > >>>>>> Se alguém manjar de VB pode ser um caminho.
> > >>>>>> [ ]'s
> > >>>>>> Giuseppe Lopes
>
> > >>>>>> Em 25 de junho de 2010 15:35, Giuseppe Lopes
> > >>>>>> <giuseppe.lo...@gmail.com> escreveu:
>
> > >>>>>>> Também não funcionou, vou tentar algumas derivações ...
> > >>>>>>> Nem me atrevo a tentar contato com a prefeitura pq da ultima vez
> > nem
> > >>>>>>> se prestaram a responder meus contatos.
> > >>>>>>> Roberto, muito obrigado, se tiver maias alguma sugestão fica a
> > >>>>>>> vontade para comentar, se alguém mais quiser sugerir algo.
> > >>>>>>> [ ]'s
> > >>>>>>> Giuseppe Lopes
> > >>>>>>> Em 25 de junho de 2010 11:23, Roberto L. Machado
> > >>>>>>> <roberto.mach...@superig.com.br> escreveu:
> > >>>>>>>> > <reinaldo.sanc...@gmail.com> escreveu:
> > >>>>>>>> >         O link para a doc:
>
> >http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf
>
> > >>>>>>>> >         On Jun 24, 12:48 pm, "Daniel Lemes" <dle...@gmail.com>
> > >>>>>>>> > wrote:
> > >>>>>>>> >         > Me manda o manual ai da prefeitura dle...@gmail.comque
> > >>>>>>>> > vou
> > >>>>>>>> >         ver se dou uma
> > >>>>>>>> >         > olhada.
>
> > >>>>>>>> >         > Att
>
> > >>>>>>>> >         > Daniel
>
> > >>>>>>>> >         > ----- Original Message -----
>
> > >>>>>>>> >         > From: "Reinaldo N. Sanches" <
> > reinaldo.sanc...@gmail.com>
> > >>>>>>>> >         > To: "NFePHP" <nfe...@googlegroups.com>
> > >>>>>>>> >         > Sent: Thursday, June 24, 2010 11:17 AM
> > >>>>>>>> >         > Subject: [nfephp] Re: Assinatura da RPS
>
> ...
>
> read more »

Walber S Sales

unread,
Jul 2, 2010, 12:59:54 AM7/2/10
to nfe...@googlegroups.com
Colega, s� da prefeitura fazer em separado com o sistema nacional, da para
perceber o tamanho do lobby.

att:

Walber

----- Original Message -----
From: "Reinaldo N. Sanches" <reinaldo...@gmail.com>
To: "NFePHP" <nfe...@googlegroups.com>

Sent: Friday, July 02, 2010 12:48 AM
Subject: [nfephp] Re: Assinatura da RPS

Depois de muito tentar suporte com a Prefeitura de SP, o mais proximo

de uma ajuda que consegui at� agora foi:

---
Prezado(a) Sr(a).

Segue um exemplo de fun��o de convers�o do string, contudo lembramos
que essa fun��o, como outras que precedem a entrada de dados no nosso
sistema dever�o ser desenvolvidas ou encontradas por cada usu�rio em
particular. O nosso Manual d� orienta��es gen�ricas, os procedimentos
para se chegar aos dados que ser�o posteriormente aceitos pelo nosso
sistema WS, depende do tipo de programa��o de cada usu�rio, devendo
ser por estes desenvolvidos.

Exemplo de fun��o para convers�o da string de assinatura de RPS em
bytes.

System.Text.Encoding.ASCII.GetBytes([string])

Ela est� dispon�vel no MS .NET Framework.
---

Acredito que isso � o que tentamos fazer at� agora, tem algum detalhe
que n�o estamos conseguindo reproduzir no PHP. J� fiz este c�digo em
Java para ver o que o getBytes retornava e � a mesma coisa que fiz no
PHP.

Agora no desespero � encontrar um Windows e ver se consigo testar este


GetBytes do .Net e quem sabe no meio disso tudo encontrar o detalhe

que falta, que j� estou come�ando a achar que � outra coisa "n�o
documentada".


On Jun 30, 9:57 am, Giuseppe Lopes <giuseppe.lo...@gmail.com> wrote:
> Obrigado pela dica Neto. Vou tentar isso para ver o que ocorre de errado.
>

> Se algu�m tiver mais alguma sugest�o, por favor, n�o se acanhe. Heheheh


>
> [ ]'s
> Giuseppe Lopes
>
> Em 30 de junho de 2010 01:14, S. Rocha <srn...@gmail.com> escreveu:
>
>
>
> > Giuseppe
>
> > Vc tentou reverter a assinatura depois de cria-la, para ver se vc
> > obtem a string original?
>
> > Pode ser que vc consiga uma dica do que pode estar errado dai.
>
> > Neto
>
> > 2010/6/29 Giuseppe Lopes <giuseppe.lo...@gmail.com>:
> > > Pessoal,
> > > Em algumas pesquisas verifiquei que a primeira etapa, a parte de
> > converter a
> > > string para bytes em outras linguagens o pessoal tem feito
> > > transformando
> > em
> > > um array de bytes.

> > > Consegui converter utilizando a fun��o que, se n�o me engano, foi o
> > Roberto
> > > que mandou, com uma pequena altera��o:


> > > public function text2Byte($texto){
> > > $hex_ary = array();
> > > foreach (str_split($texto) as $chr) {
> > > $hex_ary[] = ord($chr);
> > > }
> > > return implode('', $hex_ary);
> > > }

> > > Cheguei nela ao executar um c�digo em java String.getBytes() e

> > > verificar
> > que
> > > retornava o valor decimal da tabela ASCII para o caractere passado.

> > > Mas mesmo assim ainda n�o consigo sair do maldito erro:


> > > <Sucesso>false</Sucesso></Cabecalho><Erro
> > > xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS
> > > incorreta.</Descricao>

> > > Nado, nado, nado e n�o saio do mesmo lugar.
> > > =/
> > > Fonte de algumas informa��es:


> > >http://www.guj.com.br/posts/list/0/131109.java#1073826
> > >http://www.guj.com.br/posts/list/203231.java
> > > [ ]'s
> > > Giuseppe Lopes
>
> > > Em 29 de junho de 2010 15:13, Giuseppe Lopes
> > > <giuseppe.lo...@gmail.com>
> > > escreveu:
>

> > >> Mas essa infRPS dai n�o � igual a de SP, �?


> > >> Concatenando aquelas infos e gerando o Signature?
> > >> [ ]'s
> > >> Giuseppe Lopes
>
> > >> Em 29 de junho de 2010 15:03, Fabricio Silva <
> > fabriciojohnj...@gmail.com>
> > >> escreveu:
>

> > >>> Exatamente o infRPS s�o os dados do RPS.
>
> > >>> Aqui � um pouco diferente.


>
> > >>> Para cada RPS, existe 1 <Signature
> > >>> xmlns="http://www.w3.org/2000/09/xmldsig#"> e depois mais 1 para
> > >>> todo
> > o XML.

> > >>> N�o existe essa tag Assinatura.
>
> > >>> Aqui em Salvador eles s� recebem o RPS atrav�s do Lote. Por isso a


> > >>> maioria das empresas so manda um RPS em cada lote para tornar mais
> > simples.
>
> > >>> Em 29 de junho de 2010 14:44, Giuseppe Lopes
> > >>> <giuseppe.lo...@gmail.com
>
> > >>> escreveu:
>
> > >>>> Obrigado pelo retorno Fabricio.

> > >>>> N�o entendi o infRps, esse trecho seria as informa��es do RPS ai em


> > >>>> Salvador?
> > >>>> No manual de SP, eu tenho uma string como essa: "31000000OL03
>
> > 00000000000120070103TNN00000000205000000000000050000002658100013167474254"
> > e
> > >>>> dela eu preencho a tag "Assinatura" no XML, assim:
> > >>>> <?xml version="1.0" encoding="UTF-8"?>
> > >>>> <PedidoEnvioRPS
> > >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > >>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > >>>> xmlns="http://www.prefeitura.sp.gov.br/nfe">
> > >>>> <Cabecalho Versao="1" xmlns="">
> > >>>> <CPFCNPJRemetente>
> > >>>> <CNPJ>04642554000143</CNPJ>
> > >>>> </CPFCNPJRemetente>
> > >>>> </Cabecalho>
> > >>>> <RPS xmlns="">
>
> > <Assinatura>lQllFyvbUo6C68CnFrFosa2jPbjmplQ6x3Q59+vYeTXAwACzXfD71aziAnP3NtE
> > P/UiRRAyOQZOO73N+u2g8sanXJ4jhIOMXkP6yeK9JwTkZ/UoeJQUS7j7iyGw0IOq6o6sb0sV0Bx
> > ZiclI/EMDvZ5H2zZrEEF9AstZkyEoEoJ8=</Assinatura>
> > >>>> ...

> > >>>> E depois eu assinto o XML inteiro, meu problema � para gerar esse


> > valor
> > >>>> no node Assinatura.
> > >>>> Anexo encaminho o Manual para verificar e os exemplos de XML para
> > envio

> > >>>> de RPS e envio de lotequ e a prefeitura disponibiliza, pe�o que
> > confira se �
> > >>>> parecido com o ai de Salvador, pois talvez seja s� as tag's de


> > preenchimento
> > >>>> que mudem de nome de um estado para o outro.
> > >>>> Para enviar para a prefeitura, eu monto o XML, assino-o e envio,
> > >>>> conforme trecho abaixo:
> > >>>> if ($this->loadCertified()){
> > >>>> $newXml = $this->signXml($xml, 'PedidoEnvioRPS');
>
> > >>>> $wsdl =
> > >>>> 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?wsdl';
> > >>>> $param = array(
> > >>>> 'VersaoSchema' => 1,
> > >>>> 'MensagemXML' => $newXml
> > >>>> );
> > >>>> $resultadoXml = $this->sendXml('EnvioRPS', $param, $wsdl);
> > >>>> ...
> > >>>> } ...

> > >>>> Quem tiver qualquer sugest�o estou aceitando, pois sigo travado
> > >>>> nesse
> > >>>> ponto. Faltando somente isso para concluir a comunica��o e
> > >>>> integra��o
> > com o
> > >>>> sistema de Notas Fiscais de Servi�o Eletr�nicas.


> > >>>> [ ]'s
> > >>>> Giuseppe Lopes
> > >>>> Em 28 de junho de 2010 10:23, Fabricio Silva
> > >>>> <fabriciojohnj...@gmail.com> escreveu:
>
> > >>>>> Ola Giusepp, aqui em Salvador para assinar o RPS temos que assinar
> > >>>>> o

> > >>>>> lote todo e cada RPS existente no lote, e para isso uso o m�todo
> > signXML
> > >>>>> (com pequenas modifica��es) do projeto para assinar da seguinte


> > forma:
>
> > >>>>> if ( $signn = $nfe->signXML($nfefile, 'InfRps') ) {
> > >>>>> if ( $signn = $nfe->signXML($signn, 'LoteRps') )
> > {
>

> > >>>>> LoteRps s�o todas a informa��es de todos os RPS's


> > >>>>> InfRps equivale ao RPS propriamente dito. No meu sistema cada lote

> > >>>>> s�
> > >>>>> coloco um RPS para simplificar, logo meu lote RPS ter� suas
> > assinaturas.
>
> > >>>>> Olhei o exemplo em vb � exatamente o que eo fa�o. segue em anexo o
> > >>>>> m�todo signXML com minhas modifica��es. (caso use essa fun��o
> > >>>>> altere
> > o nome
> > >>>>> do m�todo pois a signXML original servira para assinar a NFe)
>
> > >>>>> Aproveitando o t�pico, como vc manda seu RPS no soap? vc manda com
> > >>>>> cabe�alho? Poderia me enviar o trecho em que vc manda o PRS para a
> > >>>>> Prefeitura? Pois aqui em Salvador o cabe�alho � montado em tempo
> > >>>>> de
> > >>>>> execu��o, por isso estou tendo dificuldade em enviar, ja entrei em
> > contato
> > >>>>> com a Prefeitura mas eles n�o conseguiram me ajudar.


>
> > >>>>> Att,
> > >>>>> Fabricio Silva
>
> > >>>>> Em 25 de junho de 2010 15:52, Giuseppe Lopes <
> > giuseppe.lo...@gmail.com>
> > >>>>> escreveu:
>
> > >>>>>> Aos que entendem de VB achei esse exemplo no manual de NFSe da
> > >>>>>> prefeitura de Itaguai-RJ

> > >>>>>> Se algu�m manjar de VB pode ser um caminho.


> > >>>>>> [ ]'s
> > >>>>>> Giuseppe Lopes
>
> > >>>>>> Em 25 de junho de 2010 15:35, Giuseppe Lopes
> > >>>>>> <giuseppe.lo...@gmail.com> escreveu:
>

> > >>>>>>> Tamb�m n�o funcionou, vou tentar algumas deriva��es ...


> > >>>>>>> Nem me atrevo a tentar contato com a prefeitura pq da ultima vez
> > nem
> > >>>>>>> se prestaram a responder meus contatos.

> > >>>>>>> Roberto, muito obrigado, se tiver maias alguma sugest�o fica a
> > >>>>>>> vontade para comentar, se algu�m mais quiser sugerir algo.


> > >>>>>>> [ ]'s
> > >>>>>>> Giuseppe Lopes
> > >>>>>>> Em 25 de junho de 2010 11:23, Roberto L. Machado
> > >>>>>>> <roberto.mach...@superig.com.br> escreveu:
>

> > >>>>>>>> Se n�o seu certo tente isto

> > >>>>>>>> Em Qui, 2010-06-24 �s 23:14 -0300, Giuseppe Lopes escreveu:
> > >>>>>>>> > Ningu�m tem nenhuma id�ia?


>
> > >>>>>>>> > [ ]'s
> > >>>>>>>> > Giuseppe Lopes
>
> > >>>>>>>> > Em 24 de junho de 2010 14:21, Reinaldo N. Sanches
> > >>>>>>>> > <reinaldo.sanc...@gmail.com> escreveu:
> > >>>>>>>> > O link para a doc:
>
> >http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf
>
> > >>>>>>>> > On Jun 24, 12:48 pm, "Daniel Lemes" <dle...@gmail.com>
> > >>>>>>>> > wrote:
> > >>>>>>>> > > Me manda o manual ai da prefeitura dle...@gmail.comque
> > >>>>>>>> > vou
> > >>>>>>>> > ver se dou uma
> > >>>>>>>> > > olhada.
>
> > >>>>>>>> > > Att
>
> > >>>>>>>> > > Daniel
>
> > >>>>>>>> > > ----- Original Message -----
>
> > >>>>>>>> > > From: "Reinaldo N. Sanches" <
> > reinaldo.sanc...@gmail.com>
> > >>>>>>>> > > To: "NFePHP" <nfe...@googlegroups.com>
> > >>>>>>>> > > Sent: Thursday, June 24, 2010 11:17 AM
> > >>>>>>>> > > Subject: [nfephp] Re: Assinatura da RPS
>
> ...
>

> read more �

--
Voc� recebeu esta mensagem porque est� inscrito no Grupo "NFePHP".

Marcos

unread,
Jul 2, 2010, 8:26:45 AM7/2/10
to nfe...@googlegroups.com
Senhores,

estava pensado....
NFe Federal � uma coisa chata, mas pelo menos � algo padronizado.

Mas NFe municipal, uma para *cada* prefeitura � nada mais nada menos que
o inferno.

Porem, como David Wheeler ja disse, todos os problemas de computa��o
podem ser resolvidos com mais uma camada de abstra��o.

Estava pensando...

Poderiamos fazer um novo m�dulo na NFEPHP que faz exatamente isso:
converte a NFE-federal para a NFE-municipal de *todas* as cidades do Brasil.

Obviamente, a ideia � ut�pica. Mas se cada um desenvolver esse m�dulo
para a sua cidade, teremos em menos de um m�s um produto �nico que ir�
resolver mais um dos problemas que nunca deveriam ter existido ( custo
Brasil ).

E como nosso (e digo nosso com orgulho!) software � GPL, o resultado vai
ser no m�nimo interessante.

O que voc�s acham ?
Eu me prontifico a desenvolver para SP ( capital )

Marcos

Roberto L. Machado

unread,
Jul 2, 2010, 9:52:08 AM7/2/10
to nfe...@googlegroups.com
A ideia é ótima vamos ver quem se habilita !!!


Roberto

Em Sex, 2010-07-02 às 09:26 -0300, Marcos escreveu:
> Senhores,
>
> estava pensado....

> NFe Federal é uma coisa chata, mas pelo menos é algo padronizado.
>
> Mas NFe municipal, uma para *cada* prefeitura é nada mais nada menos que
> o inferno.
>
> Porem, como David Wheeler ja disse, todos os problemas de computação
> podem ser resolvidos com mais uma camada de abstração.
>
> Estava pensando...
>
> Poderiamos fazer um novo módulo na NFEPHP que faz exatamente isso:

> converte a NFE-federal para a NFE-municipal de *todas* as cidades do Brasil.
>

> Obviamente, a ideia é utópica. Mas se cada um desenvolver esse módulo
> para a sua cidade, teremos em menos de um mês um produto único que irá

> resolver mais um dos problemas que nunca deveriam ter existido ( custo
> Brasil ).
>

> E como nosso (e digo nosso com orgulho!) software é GPL, o resultado vai
> ser no mínimo interessante.
>
> O que vocês acham ?

Giuseppe Lopes

unread,
Jul 2, 2010, 10:01:50 AM7/2/10
to nfe...@googlegroups.com
Opa, eu quero ajudar, inclusive poderiamos inserir a parte de NFSe junto. Que é a parte que eu estou desenvolvendo para a acessar a prefeitura de SP, embora eu seja de Porto Alegre-RS.

[ ]'s
Giuseppe Lopes

--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".

Reinaldo N. Sanches

unread,
Jul 2, 2010, 1:36:12 PM7/2/10
to NFePHP
As classes que estou criando para NFe Paulista eu disponibilizo com
certeza em GPL.

Só preciso fazer funcionar esta maldita <Assinatura> da <RPS> :D

Giuseppe Lopes

unread,
Jul 6, 2010, 4:00:19 PM7/6/10
to nfe...@googlegroups.com
Pesquisando um pouco encontrei no manual da prefeitura de recife, um exemplo de assinatura da tag Assinatura em VB.NET, que conforme relatos é o mesmo padrão usado na prefeitura de SP.

Bom vamos ao dilema, pelo o que eu vi, estamos fazendo a conversão correta para Bytes, contudo, conforme o que eu vi, tem de ser assinado o array de bytes, ou seja, um array, em que em cada posição tem o valor do caractere convertido para bytes, algo como isso:

Array
(
    [0] => 51
    [1] => 56
    [2] => 53
    [3] => 56
    [4] => 54
    [5] => 52
    [6] => 48
    [7] => 49
    [8] => 32
    [9] => 32
    [10] => 32
    [11] => 32
    [12] => 32
    [13] => 48
    [14] => 48
    [15] => 48
    [16] => 48
...
Isso é exatamente o que a função System.Text.Encoding.ASCII.GetBytes([string]) faz, gera um array de Bytes da string passada.

Perfeito, até este ponto parece estar certo, contudo, pelo o que vi na função de assinatura, é esse array que é assinado, acredito que este é o problema que estamos tendo, pois estamos assinando uma string, e não um array. Abaixo a função especifica para gerar a assinatura e antes a chamada para ela, conforme o manual de recife:

rps.Assinatura = CreateSignaturePKCS1( _
                                                            certificado, System.Text.Encoding.ASCII.GetBytes(s))

Private Function CreateSignaturePKCS1(ByVal certificado As X509Certificate2, _
                                                           ByVal Value() As Byte) _
                                                           As Byte()
   Dim rsa As RSACryptoServiceProvider = _
   CType(certificado.PrivateKey, RSACryptoServiceProvider)
   Dim rsaF As New RSAPKCS1SignatureFormatter(rsa)
   Dim sha1 As New SHA1CryptoServiceProvider()
   Dim hash() As Byte
   hash = sha1.ComputeHash(Value)
   rsaF.SetHashAlgorithm("SHA1")
   Return rsaF.CreateSignature(hash)
End Function

Caras, se alguém tiver alguma sugestão ... mando anexo o manual que usei como referência.

Estou aceitando qualquer sugestão.

[ ]'s
Giuseppe Lopes

PS: Instalei até o Visual Studio para ver como essa bagaça funciona! =P

Em 2 de julho de 2010 01:59, Walber S Sales <onl...@multnet.com.br> escreveu:
Colega, só da prefeitura fazer em separado com o sistema nacional, da para perceber o tamanho do lobby.


att:

Walber



----- Original Message ----- From: "Reinaldo N. Sanches" <reinaldo...@gmail.com>

To: "NFePHP" <nfe...@googlegroups.com>
Sent: Friday, July 02, 2010 12:48 AM

Subject: [nfephp] Re: Assinatura da RPS


Depois de muito tentar suporte com a Prefeitura de SP, o mais proximo
de uma ajuda que consegui até agora foi:

---
Prezado(a) Sr(a).

Segue um exemplo de função de conversão do string, contudo lembramos
que essa função, como outras que precedem a entrada de dados no nosso
sistema deverão ser desenvolvidas ou encontradas por cada usuário em
particular. O nosso Manual dá orientações genéricas, os procedimentos
para se chegar aos dados que serão posteriormente aceitos pelo nosso
sistema WS, depende do tipo de programação de cada usuário, devendo
ser por estes desenvolvidos.

Exemplo de função para conversão da string de assinatura de RPS em
bytes.

System.Text.Encoding.ASCII.GetBytes([string])

Ela está disponível no MS .NET Framework.
---

Acredito que isso é o que tentamos fazer até agora, tem algum detalhe
que não estamos conseguindo reproduzir no PHP. Já fiz este código em
Java para ver o que o getBytes retornava e é a mesma coisa que fiz no
PHP.

Agora no desespero é encontrar um Windows e ver se consigo testar este

GetBytes do .Net e quem sabe no meio disso tudo encontrar o detalhe
que falta, que já estou começando a achar que é outra coisa "não
documentada".




On Jun 30, 9:57 am, Giuseppe Lopes <giuseppe.lo...@gmail.com> wrote:
Obrigado pela dica Neto. Vou tentar isso para ver o que ocorre de errado.

Se alguém tiver mais alguma sugestão, por favor, não se acanhe. Heheheh


[ ]'s
Giuseppe Lopes

Em 30 de junho de 2010 01:14, S. Rocha <srn...@gmail.com> escreveu:



> Giuseppe

> Vc tentou reverter a assinatura depois de cria-la, para ver se vc
> obtem a string original?

> Pode ser que vc consiga uma dica do que pode estar errado dai.

> Neto

> 2010/6/29 Giuseppe Lopes <giuseppe.lo...@gmail.com>:
> > Pessoal,
> > Em algumas pesquisas verifiquei que a primeira etapa, a parte de
> converter a
> > string para bytes em outras linguagens o pessoal tem feito > > transformando
> em
> > um array de bytes.
> > Consegui converter utilizando a função que, se não me engano, foi o
> Roberto
> > que mandou, com uma pequena alteração:

> > public function text2Byte($texto){
> > $hex_ary = array();
> > foreach (str_split($texto) as $chr) {
> > $hex_ary[] = ord($chr);
> > }
> > return implode('', $hex_ary);
> > }
> > Cheguei nela ao executar um código em java String.getBytes() e > > verificar

> que
> > retornava o valor decimal da tabela ASCII para o caractere passado.
> > Mas mesmo assim ainda não consigo sair do maldito erro:

> > <Sucesso>false</Sucesso></Cabecalho><Erro
> > xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS
> > incorreta.</Descricao>
> > Nado, nado, nado e não saio do mesmo lugar.
> > =/
> > Fonte de algumas informações:

> >http://www.guj.com.br/posts/list/0/131109.java#1073826
> >http://www.guj.com.br/posts/list/203231.java
> > [ ]'s
> > Giuseppe Lopes

> > Em 29 de junho de 2010 15:13, Giuseppe Lopes > > <giuseppe.lo...@gmail.com>
> > escreveu:

> >> Mas essa infRPS dai não é igual a de SP, é?
> >> Concatenando aquelas infos e gerando o Signature?
> >> [ ]'s
> >> Giuseppe Lopes

> >> Em 29 de junho de 2010 15:03, Fabricio Silva <
> fabriciojohnj...@gmail.com>
> >> escreveu:

> >>> Exatamente o infRPS são os dados do RPS.

> >>> Aqui é um pouco diferente.


> >>> Para cada RPS, existe 1 <Signature
> >>> xmlns="http://www.w3.org/2000/09/xmldsig#"> e depois mais 1 para > >>> todo
> o XML.
> >>> Não existe essa tag Assinatura.

> >>> Aqui em Salvador eles só recebem o RPS através do Lote. Por isso a

> >>> maioria das empresas so manda um RPS em cada lote para tornar mais
> simples.

> >>> Em 29 de junho de 2010 14:44, Giuseppe Lopes > >>> <giuseppe.lo...@gmail.com

> >>> escreveu:

> >>>> Obrigado pelo retorno Fabricio.
> >>>> Não entendi o infRps, esse trecho seria as informações do RPS ai em

> >>>> Salvador?
> >>>> No manual de SP, eu tenho uma string como essa: "31000000OL03

> 00000000000120070103TNN00000000205000000000000050000002658100013167474254" > e
> >>>> dela eu preencho a tag "Assinatura" no XML, assim:
> >>>> <?xml version="1.0" encoding="UTF-8"?>
> >>>> <PedidoEnvioRPS > >>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> >>>> xmlns="http://www.prefeitura.sp.gov.br/nfe">
> >>>> <Cabecalho Versao="1" xmlns="">
> >>>> <CPFCNPJRemetente>
> >>>> <CNPJ>04642554000143</CNPJ>
> >>>> </CPFCNPJRemetente>
> >>>> </Cabecalho>
> >>>> <RPS xmlns="">

> <Assinatura>lQllFyvbUo6C68CnFrFosa2jPbjmplQ6x3Q59+vYeTXAwACzXfD71aziAnP3NtE > P/UiRRAyOQZOO73N+u2g8sanXJ4jhIOMXkP6yeK9JwTkZ/UoeJQUS7j7iyGw0IOq6o6sb0sV0Bx > ZiclI/EMDvZ5H2zZrEEF9AstZkyEoEoJ8=</Assinatura>
> >>>> ...
> >>>> E depois eu assinto o XML inteiro, meu problema é para gerar esse

> valor
> >>>> no node Assinatura.
> >>>> Anexo encaminho o Manual para verificar e os exemplos de XML para
> envio
> >>>> de RPS e envio de lotequ e a prefeitura disponibiliza, peço que
> confira se é
> >>>> parecido com o ai de Salvador, pois talvez seja só as tag's de

> preenchimento
> >>>> que mudem de nome de um estado para o outro.
> >>>> Para enviar para a prefeitura, eu monto o XML, assino-o e envio,
> >>>> conforme trecho abaixo:
> >>>> if ($this->loadCertified()){
> >>>> $newXml = $this->signXml($xml, 'PedidoEnvioRPS');

> >>>> $wsdl =
> >>>> 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?wsdl';
> >>>> $param = array(
> >>>> 'VersaoSchema' => 1,
> >>>> 'MensagemXML' => $newXml
> >>>> );
> >>>> $resultadoXml = $this->sendXml('EnvioRPS', $param, $wsdl);
> >>>> ...
> >>>> } ...
> >>>> Quem tiver qualquer sugestão estou aceitando, pois sigo travado > >>>> nesse
> >>>> ponto. Faltando somente isso para concluir a comunicação e > >>>> integração
> com o
> >>>> sistema de Notas Fiscais de Serviço Eletrônicas.

> >>>> [ ]'s
> >>>> Giuseppe Lopes
> >>>> Em 28 de junho de 2010 10:23, Fabricio Silva
> >>>> <fabriciojohnj...@gmail.com> escreveu:

> >>>>> Ola Giusepp, aqui em Salvador para assinar o RPS temos que assinar > >>>>> o
> >>>>> lote todo e cada RPS existente no lote, e para isso uso o método
> signXML
> >>>>> (com pequenas modificações) do projeto para assinar da seguinte

> forma:

> >>>>> if ( $signn = $nfe->signXML($nfefile, 'InfRps') ) {
> >>>>> if ( $signn = $nfe->signXML($signn, 'LoteRps') )
> {

> >>>>> LoteRps são todas a informações de todos os RPS's
> >>>>> InfRps equivale ao RPS propriamente dito. No meu sistema cada lote > >>>>> só
> >>>>> coloco um RPS para simplificar, logo meu lote RPS terá suas
> assinaturas.

> >>>>> Olhei o exemplo em vb é exatamente o que eo faço. segue em anexo o
> >>>>> método signXML com minhas modificações. (caso use essa função > >>>>> altere
> o nome
> >>>>> do método pois a signXML original servira para assinar a NFe)

> >>>>> Aproveitando o tópico, como vc manda seu RPS no soap? vc manda com
> >>>>> cabeçalho? Poderia me enviar o trecho em que vc manda o PRS para a

> >>>>> Prefeitura? Pois aqui em Salvador o cabeçalho é montado em tempo > >>>>> de
> >>>>> execução, por isso estou tendo dificuldade em enviar, ja entrei em
> contato
> >>>>> com a Prefeitura mas eles não conseguiram me ajudar.


> >>>>> Att,
> >>>>> Fabricio Silva

> >>>>> Em 25 de junho de 2010 15:52, Giuseppe Lopes <
> giuseppe.lo...@gmail.com>
> >>>>> escreveu:

> >>>>>> Aos que entendem de VB achei esse exemplo no manual de NFSe da
> >>>>>> prefeitura de Itaguai-RJ
> >>>>>> Se alguém manjar de VB pode ser um caminho.

> >>>>>> [ ]'s
> >>>>>> Giuseppe Lopes

> >>>>>> Em 25 de junho de 2010 15:35, Giuseppe Lopes
> >>>>>> <giuseppe.lo...@gmail.com> escreveu:

> >>>>>>> Também não funcionou, vou tentar algumas derivações ...

> >>>>>>> Nem me atrevo a tentar contato com a prefeitura pq da ultima vez
> nem
> >>>>>>> se prestaram a responder meus contatos.
> >>>>>>> Roberto, muito obrigado, se tiver maias alguma sugestão fica a
> >>>>>>> vontade para comentar, se alguém mais quiser sugerir algo.

> >>>>>>> [ ]'s
> >>>>>>> Giuseppe Lopes
> >>>>>>> Em 25 de junho de 2010 11:23, Roberto L. Machado
> >>>>>>> <roberto.mach...@superig.com.br> escreveu:

> >>>>>>>> Se não seu certo tente isto
> >>>>>>>> Em Qui, 2010-06-24 às 23:14 -0300, Giuseppe Lopes escreveu:
> >>>>>>>> > Ninguém tem nenhuma idéia?


> >>>>>>>> > [ ]'s
> >>>>>>>> > Giuseppe Lopes

> >>>>>>>> > Em 24 de junho de 2010 14:21, Reinaldo N. Sanches
> >>>>>>>> > <reinaldo.sanc...@gmail.com> escreveu:
> >>>>>>>> > O link para a doc:

>http://ww2.prefeitura.sp.gov.br/nfe/files/NFe-Web-Service-v2-2.pdf

> >>>>>>>> > On Jun 24, 12:48 pm, "Daniel Lemes" <dle...@gmail.com>
> >>>>>>>> > wrote:
> >>>>>>>> > > Me manda o manual ai da prefeitura dle...@gmail.comque
> >>>>>>>> > vou
> >>>>>>>> > ver se dou uma
> >>>>>>>> > > olhada.

> >>>>>>>> > > Att

> >>>>>>>> > > Daniel

> >>>>>>>> > > ----- Original Message -----

> >>>>>>>> > > From: "Reinaldo N. Sanches" <
> reinaldo.sanc...@gmail.com>
> >>>>>>>> > > To: "NFePHP" <nfe...@googlegroups.com>
> >>>>>>>> > > Sent: Thursday, June 24, 2010 11:17 AM
> >>>>>>>> > > Subject: [nfephp] Re: Assinatura da RPS

...

read more »

--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
nfews_novo.pdf

Reinaldo N. Sanches

unread,
Jul 20, 2010, 11:50:22 AM7/20/10
to NFePHP
Só para deixar registrado,

Eu consegui fazer funcionar a assinatura. O problema era bem bizarro.
O campo TributacaoRPS só deve ser T ou I apenas, se eu coloco F ou J
(que é o correto no meu caso) o erro acontece.

Vou organizar as 2 classes simples que fiz para consumir o webservices
e post aqui.



Grato,

Reinaldo Nolasco Sanches

Giuseppe Lopes

unread,
Jul 20, 2010, 11:54:07 AM7/20/10
to nfe...@googlegroups.com
Reinaldo,

Como vc gerou a cadeia de bytes?

Se puder somente mostrar como fez funcionar o campo Assinatura.

Parabéns pelo progresso!

[ ]'s
Giuseppe Lopes




Grato,

Reinaldo Nolasco Sanches

Reinaldo N. Sanches

unread,
Jul 20, 2010, 1:17:54 PM7/20/10
to NFePHP
private function signRPS( NFeRPS $rps, &$rpsNode )
{
$content = sprintf( '%08s', $rps->taxPayerRegisterProvider ) .
sprintf('%-5s',$rps->serie ) . // 5 chars
sprintf( '%012s', $rps->number ) .
date( 'Ymd', $rps->issueDate ) .
$rps->taxation .
$rps->status .
( ( $rps->withheldTax ) ? 'S' : 'N' ) .
sprintf( '%015s', str_replace( array( '.', ',' ),'',
number_format( $rps->servicesValue, 2 ) ) ).
sprintf( '%015s', str_replace( array( '.', ',' ), '',
number_format( $rps->deductionsValue, 2 ) ) ) .
sprintf( '%05s', $rps->serviceCode ) .
( ( $rps->contractorRPS->type == 'F' ) ? '1' : '2' ) .
sprintf( '%014s', $rps->contractorRPS-
>federalTaxNumber );

$signatureValue = '';
$pkeyId = openssl_get_privatekey( file_get_contents( $this-
>privateKey ) );
openssl_sign( $content, $signatureValue, $pkeyId,
OPENSSL_ALGO_SHA1 );
openssl_free_key( $pkeyId );

$rpsNode->appendChild( new DOMElement( 'Assinatura',
base64_encode( $signatureValue ) ) );
}


On Jul 20, 12:54 pm, Giuseppe Lopes <giuseppe.lo...@gmail.com> wrote:
> Reinaldo,
>
> Como vc gerou a cadeia de bytes?
>
> Se puder somente mostrar como fez funcionar o campo Assinatura.
>
> Parabéns pelo progresso!
>
> [ ]'s
> Giuseppe Lopes
>
> Em 20 de julho de 2010 12:50, Reinaldo N. Sanches <
> reinaldo.sanc...@gmail.com> escreveu:
>
>
>
> > Só para deixar registrado,
>
> > Eu consegui fazer funcionar a assinatura. O problema era bem bizarro.
> > O campo TributacaoRPS só deve ser T ou I apenas, se eu coloco F ou J
> > (que é o correto no meu caso) o erro acontece.
>
> > Vou organizar as 2 classes simples que fiz para consumir o webservices
> > e post aqui.
>
> > Grato,
>
> > Reinaldo Nolasco Sanches
>
> > --
> > Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
> > Para Postar: nfe...@googlegroups.com
> > Para Sair do Grupo: nfephp+un...@googlegroups.com<nfephp%2Bunsu...@googlegroups.com>

Reinaldo N. Sanches

unread,
Jul 20, 2010, 4:00:25 PM7/20/10
to NFePHP
Coloquei o projeto no github sob licença MIT para quem precisar usar,
portar, modificar, etc...

Fiz uma pequena documentação e algumas modificações para tirar as
coisas que faziam parte do meu sistema em que uso elas para ficar
genericas e poder ser usadas em qualquer projeto PHP.

http://github.com/reinaldons/NFePHPaulista


Grato,

Reinaldo Nolasco Sanches

Paulo Gabriel

unread,
Jul 21, 2010, 11:16:28 PM7/21/10
to nfe...@googlegroups.com
Reinaldo, muito obrigado!

Suas contribuições são extremamente importantes!


Obrigado!
Reply all
Reply to author
Forward
0 new messages