FONTE NFE VB.NET
Otavio, estou com o pequeno problema na assinatura do cancelamento...
nao consigo assinar dentro da tag cancNfe esta ficando fora
segue o metedo - é uma pequena adaptação do daniel
Public Function AssinarCancelamento(ByVal docXML As XmlDocument, ByVal pUri As String, ByVal pCertificado As X509Certificate2) As XmlDocument
Try
Dim cert As X509Certificate2 = pCertificado
Dim doc As New XmlDocument()
doc.PreserveWhitespace = False
doc = docXML
Dim signedXml As New SignedXml(doc)
signedXml.SigningKey = cert.PrivateKey
Dim reference As New Reference()
[ô] uri que deve ser assinada (infCanc)
Dim _Uri As XmlAttributeCollection = doc.GetElementsByTagName(pUri).Item(0).Attributes
For Each _atributo As XmlAttribute In _Uri
If _atributo.Name = [Ô]Id[Ô] Then
reference.Uri = [Ô]#[Ô] & _atributo.InnerText
End If
Next
Dim env As New XmlDsigEnvelopedSignatureTransform()
reference.AddTransform(env)
Dim c14 As New XmlDsigC14NTransform()
reference.AddTransform(c14)
signedXml.AddReference(reference)
Dim keyInfo As New KeyInfo()
keyInfo.AddClause(New KeyInfoX509Data(cert))
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
If TypeOf doc.FirstChild Is XmlDeclaration Then
doc.RemoveChild(doc.FirstChild)
End If
Return doc
Catch ex As Exception
Throw New Exception([Ô]Seguinte erro ao assinar: [Ô] & ex.Message)
End Try
End Function
rola uma ajuda
ta ficando assim
<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô] ?>
- <procCancNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <cancNFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô] versao=[Ô]2.00[Ô]>
- <infCanc Id=[Ô]ID0[Ô]>
<tpAmb>2</tpAmb>
<xServ>CANCELAR</xServ>
<chNFe>0</chNFe>
<nProt>0</nProt>
<xJust>desacordo comercial</xJust>
</infCanc>
</cancNFe>
- <Signature xmlns=[Ô]http://www.w3.org/2000/09/xmldsig#[Ô]>
- <SignedInfo>
<CanonicalizationMethod Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
<SignatureMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#rsa-sha1[Ô] />
- <Reference URI=[Ô]#ID0[Ô]>
- <Transforms>
<Transform Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#enveloped-signature[Ô] />
<Transform Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
</Transforms>
<DigestMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#sha1[Ô] />
<DigestValue>YFEdzikR9gXvVjncsl/y+xTAVI4=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>VSaNx642Qg6Z90AqzBTSIMOVHjVQMxc2MqmuwL+Svpi7kTNeQEQE/vh0MYaU8DMB9LMxZBeOfi7gnOBUwMdk/NcVubKf4t3to4Bt+ZUy+81XPLjLhlsbrlyBMse8MPJoE8EFmfmb8MhqfazR4jONqXPMhVBG7MApApFTqfXAPPk=</SignatureValue>
- <KeyInfo>
- <X509Data>
<X509Certificate>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</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</procCancNFe>
nao consigo assinar dentro da tag cancNfe esta ficando fora
segue o metedo - é uma pequena adaptação do daniel
Public Function AssinarCancelamento(ByVal docXML As XmlDocument, ByVal pUri As String, ByVal pCertificado As X509Certificate2) As XmlDocument
Try
Dim cert As X509Certificate2 = pCertificado
Dim doc As New XmlDocument()
doc.PreserveWhitespace = False
doc = docXML
Dim signedXml As New SignedXml(doc)
signedXml.SigningKey = cert.PrivateKey
Dim reference As New Reference()
[ô] uri que deve ser assinada (infCanc)
Dim _Uri As XmlAttributeCollection = doc.GetElementsByTagName(pUri).Item(0).Attributes
For Each _atributo As XmlAttribute In _Uri
If _atributo.Name = [Ô]Id[Ô] Then
reference.Uri = [Ô]#[Ô] & _atributo.InnerText
End If
Next
Dim env As New XmlDsigEnvelopedSignatureTransform()
reference.AddTransform(env)
Dim c14 As New XmlDsigC14NTransform()
reference.AddTransform(c14)
signedXml.AddReference(reference)
Dim keyInfo As New KeyInfo()
keyInfo.AddClause(New KeyInfoX509Data(cert))
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
If TypeOf doc.FirstChild Is XmlDeclaration Then
doc.RemoveChild(doc.FirstChild)
End If
Return doc
Catch ex As Exception
Throw New Exception([Ô]Seguinte erro ao assinar: [Ô] & ex.Message)
End Try
End Function
rola uma ajuda
ta ficando assim
<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô] ?>
- <procCancNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
- <cancNFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô] versao=[Ô]2.00[Ô]>
- <infCanc Id=[Ô]ID0[Ô]>
<tpAmb>2</tpAmb>
<xServ>CANCELAR</xServ>
<chNFe>0</chNFe>
<nProt>0</nProt>
<xJust>desacordo comercial</xJust>
</infCanc>
</cancNFe>
- <Signature xmlns=[Ô]http://www.w3.org/2000/09/xmldsig#[Ô]>
- <SignedInfo>
<CanonicalizationMethod Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
<SignatureMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#rsa-sha1[Ô] />
- <Reference URI=[Ô]#ID0[Ô]>
- <Transforms>
<Transform Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#enveloped-signature[Ô] />
<Transform Algorithm=[Ô]http://www.w3.org/TR/2001/REC-xml-c14n-20010315[Ô] />
</Transforms>
<DigestMethod Algorithm=[Ô]http://www.w3.org/2000/09/xmldsig#sha1[Ô] />
<DigestValue>YFEdzikR9gXvVjncsl/y+xTAVI4=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>VSaNx642Qg6Z90AqzBTSIMOVHjVQMxc2MqmuwL+Svpi7kTNeQEQE/vh0MYaU8DMB9LMxZBeOfi7gnOBUwMdk/NcVubKf4t3to4Bt+ZUy+81XPLjLhlsbrlyBMse8MPJoE8EFmfmb8MhqfazR4jONqXPMhVBG7MApApFTqfXAPPk=</SignatureValue>
- <KeyInfo>
- <X509Data>
<X509Certificate>MIIGEDCCBPigAwIBAgIQMjAxMDAxMjUyMDEwMTc4NzANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxNjA0BgNVBAsTLVNlY3JldGFyaWEgZGEgUmVjZWl0YSBGZWRlcmFsIGRvIEJyYXNpbCAtIFJGQjEuMCwGA1UEAxMlQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIGRvIFNFUlBST1JGQjAeFw0xMDAxMjYxNjQ5MTlaFw0xMTAxMjYxNjM4MzZaMIH7MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2VjcmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMREwDwYDVQQLEwhDT1JSRUlPUzETMBEGA1UECxMKQVJDT1JSRUlPUzEWMBQGA1UECxMNUkZCIGUtQ05QSiBBMTEXMBUGA1UEBxMOQkVMTyBIT1JJWk9OVEUxCzAJBgNVBAgTAk1HMTkwNwYDVQQDEzBPWElNSUwgT1hJR0VOSU8gTUlOQVMgR0VSQUlTIExUREE6NjYzNTg5NzkwMDAxODIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOsVdTLiP/2lKde4hLceIExOqaaw5YPYL+Uzx/kTcci9DfSbKBcNN7tiNdLKPF6REe/tmIZprkUADjOC1eHL4+aUnDsZya5XjY5l7gC+byFieMJI5KaCXqBaPU3r1WetojlDURn77fPOcJFF0/L2vUmCTZygwBAFGsvTycT5wNt/AgMBAAGjggKBMIICfTAPBgNVHRMBAf8EBTADAQEAMB8GA1UdIwQYMBaAFLkii4YkRueirecpO4xoO02tdJEUMA4GA1UdDwEB/wQEAwIF4DBgBgNVHSAEWTBXMFUGBmBMAQIBCjBLMEkGCCsGAQUFBwIBFj1odHRwczovL2NjZC5zZXJwcm8uZ292LmJyL2Fjc2VycHJvcmZiL2RvY3MvZHBjYWNzZXJwcm9yZmIucGRmMIG7BgNVHREEgbMwgbCgPQYFYEwBAwSgNAQyMDYwMzE5NjI0MDA5OTA5MTYxNTAwMDAwMDAwMDAwMDAwMDAwTUczMjI5ODE4U1NQTUegIgYFYEwBAwKgGQQXRUxDSU8gTUFSUVVFUyBERSBDQVNUUk+gGQYFYEwBAwOgEAQONjYzNTg5NzkwMDAxODKgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRdlZG1hckBhdHVhbGl6YWRhLmNvbS5icjAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgagGA1UdHwSBoDCBnTAyoDCgLoYsaHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2xjci9hY3NlcnByb3JmYi5jcmwwM6AxoC+GLWh0dHA6Ly9jY2QyLnNlcnByby5nb3YuYnIvbGNyL2Fjc2VycHJvcmZiLmNybDAyoDCgLoYsaHR0cDovL3d3dy5pdGkuZ292LmJyL3NlcnByby9hY3NlcnByb3JmYi5jcmwwTAYIKwYBBQUHAQEEQDA+MDwGCCsGAQUFBzAChjBodHRwOi8vY2NkLnNlcnByby5nb3YuYnIvY2FkZWlhcy9hY3NlcnByb3JmYi5wN2IwDQYJKoZIhvcNAQEFBQADggEBANv7SsHQcIedYIXV/RtmKyniZrJZPdtqQeItEisgm1jNlkz4+0Rgxzzyq6SMGDMN+kgQeeLZsiTRvvplNUQyiaD87gw+VRkHo5w8o4RtMJMp0k8zqHclGwCfBCtW9pa/LZQJ6xgcrMa5e+stn3KPeUd6xAN2YemiaEPRSgNDYzpXp6itP+a/CCdscXz2bIinrvm32Cr1xfyGfpKDjVDjEaQpxeb+JzPwS08nhsoevKefLsTX1Q3q8EITjJQaZTDaw+Gb7DLVOja1poS7wvE+/Ijxt8baTb6LrwmQZlbfim28y+aMJV18VPMcU4HWbrXGqEeaL4MNvAFi6Vu3x7FgOCU=</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</procCancNFe>
verifique a uri se esta correta [Ô]infCanc[Ô]
logo abaixo e o que eu uso para assinar os meus xml 2.00 de inutilizaçao, cancelamento, e recepção
Assinatura.Assinar(dll_rocket_nfe.rocket_Funcao.NomeArquivo, [Ô]infCanc[Ô], dll_rocket_nfe.rocket_Certificado.oCertificado, dll_rocket_nfe.rocket_Funcao.NomeArquivo)
Public Sub Assinar(ByVal strArqXMLAssinar As String, ByVal strUri As String, ByVal x509Certificado As X509Certificate2, ByVal strArqXMLAssinado As String)
[ô]Atualizar atributos de retorno com conteúdo padrão
Me.intResultado = 0
[ô]this.vResultadoString = [Ô]Assinatura realizada com sucesso[Ô];
Dim SR As StreamReader = Nothing
Try
[ô]Abrir o arquivo XML a ser assinado e ler o seu conteúdo
SR = File.OpenText(strArqXMLAssinar)
Dim vXMLString As String = SR.ReadToEnd()
SR.Close()
Try
[ô] Verifica o certificado a ser utilizado na assinatura
Dim _xnome As String = [Ô][Ô]
If x509Certificado IsNot Nothing Then
_xnome = x509Certificado.Subject.ToString()
End If
Dim _X509Cert As New X509Certificate2()
Dim store As New X509Store([Ô]MY[Ô], StoreLocation.CurrentUser)
store.Open(OpenFlags.[ReadOnly] Or OpenFlags.OpenExistingOnly)
Dim collection As X509Certificate2Collection = DirectCast(store.Certificates, X509Certificate2Collection)
Dim collection1 As X509Certificate2Collection = DirectCast(collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, False), X509Certificate2Collection)
If collection1.Count = 0 Then
Throw New Exception([Ô]O rocketnfe detectou problemas com o certificado digital. (Código do Erro: 2)[Ô])
[ô]this.vResultadoString = [Ô]Problemas no certificado digital[Ô];
Me.intResultado = 2
Else
[ô] certificado ok
_X509Cert = collection1(0)
Dim x As String
x = _X509Cert.GetKeyAlgorithm().ToString()
[ô] Create a new XML document.
Dim doc As New XmlDocument()
[ô] Format the document to ignore white spaces.
doc.PreserveWhitespace = False
[ô] Load the passed XML file using it’s name.
Try
doc.LoadXml(vXMLString)
[ô] Verifica se a tag a ser assinada existe é única
Dim qtdeRefUri As Integer = doc.GetElementsByTagName(strUri).Count
If qtdeRefUri = 0 Then
[ô] a URI indicada não existe
Throw New Exception([Ô]A tag de assinatura [Ô] & strUri.Trim() & [Ô] não existe no XML. (Código do Erro: 4)[Ô])
Me.intResultado = 4
Else
[ô] Exsiste mais de uma tag a ser assinada
If qtdeRefUri > 1 Then
[ô] existe mais de uma URI indicada
Throw New Exception([Ô]A tag de assinatura [Ô] & strUri.Trim() & [Ô] não é unica. (Código do Erro: 5)[Ô])
Me.intResultado = 5
Else
If doc.GetElementsByTagName([Ô]Signature[Ô]).Count = 0 Then
[ô]Documento ainda não assinado (Se já tiver assinado não vamos fazer nada, somente retornar ok para continuar o envio). Wandrey 12/05/2009
Try
[ô] Create a SignedXml object.
Dim signedXml As New SignedXml(doc)
[ô] Add the key to the SignedXml document
signedXml.SigningKey = _X509Cert.PrivateKey
[ô] Create a reference to be signed
Dim reference As New Reference()
[ô] pega o uri que deve ser assinada
Dim _Uri As XmlAttributeCollection = doc.GetElementsByTagName(strUri).Item(0).Attributes
For Each _atributo As XmlAttribute In _Uri
If _atributo.Name = [Ô]Id[Ô] Then
reference.Uri = [Ô]#[Ô] & _atributo.InnerText
End If
Next
[ô] Add an enveloped transformation to the reference.
Dim env As New XmlDsigEnvelopedSignatureTransform()
reference.AddTransform(env)
Dim c14 As New XmlDsigC14NTransform()
reference.AddTransform(c14)
[ô] Add the reference to the SignedXml object.
signedXml.AddReference(reference)
[ô] Create a new KeyInfo object
Dim keyInfo As New KeyInfo()
[ô] Load the certificate into a KeyInfoX509Data object
[ô] and add it to the KeyInfo object.
keyInfo.AddClause(New KeyInfoX509Data(_X509Cert))
[ô] Add the KeyInfo object to the SignedXml object.
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
[ô] Get the XML representation of the signature and save
[ô] it to an XmlElement object.
Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
[ô] Gravar o elemento no documento XML
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
XMLDoc = New XmlDocument()
XMLDoc.PreserveWhitespace = False
XMLDoc = doc
[ô] Atualizar a string do XML já assinada
Me.vXMLStringAssinado = XMLDoc.OuterXml
[ô] Gravar o XML Assinado no HD
Dim SW_2 As StreamWriter = File.CreateText(strArqXMLAssinado)
SW_2.Write(Me.vXMLStringAssinado)
SW_2.Close()
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 3
End If
Throw (caught)
End Try
End If
End If
End If
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 6
End If
Throw (caught)
End Try
End If
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 1
End If
Throw (caught)
End Try
Catch ex As Exception
If intResultado = 0 Then
Me.intResultado = 7
End If
Throw (ex)
Finally
SR.Close()
End Try
End Sub
logo abaixo e o que eu uso para assinar os meus xml 2.00 de inutilizaçao, cancelamento, e recepção
Assinatura.Assinar(dll_rocket_nfe.rocket_Funcao.NomeArquivo, [Ô]infCanc[Ô], dll_rocket_nfe.rocket_Certificado.oCertificado, dll_rocket_nfe.rocket_Funcao.NomeArquivo)
Public Sub Assinar(ByVal strArqXMLAssinar As String, ByVal strUri As String, ByVal x509Certificado As X509Certificate2, ByVal strArqXMLAssinado As String)
[ô]Atualizar atributos de retorno com conteúdo padrão
Me.intResultado = 0
[ô]this.vResultadoString = [Ô]Assinatura realizada com sucesso[Ô];
Dim SR As StreamReader = Nothing
Try
[ô]Abrir o arquivo XML a ser assinado e ler o seu conteúdo
SR = File.OpenText(strArqXMLAssinar)
Dim vXMLString As String = SR.ReadToEnd()
SR.Close()
Try
[ô] Verifica o certificado a ser utilizado na assinatura
Dim _xnome As String = [Ô][Ô]
If x509Certificado IsNot Nothing Then
_xnome = x509Certificado.Subject.ToString()
End If
Dim _X509Cert As New X509Certificate2()
Dim store As New X509Store([Ô]MY[Ô], StoreLocation.CurrentUser)
store.Open(OpenFlags.[ReadOnly] Or OpenFlags.OpenExistingOnly)
Dim collection As X509Certificate2Collection = DirectCast(store.Certificates, X509Certificate2Collection)
Dim collection1 As X509Certificate2Collection = DirectCast(collection.Find(X509FindType.FindBySubjectDistinguishedName, _xnome, False), X509Certificate2Collection)
If collection1.Count = 0 Then
Throw New Exception([Ô]O rocketnfe detectou problemas com o certificado digital. (Código do Erro: 2)[Ô])
[ô]this.vResultadoString = [Ô]Problemas no certificado digital[Ô];
Me.intResultado = 2
Else
[ô] certificado ok
_X509Cert = collection1(0)
Dim x As String
x = _X509Cert.GetKeyAlgorithm().ToString()
[ô] Create a new XML document.
Dim doc As New XmlDocument()
[ô] Format the document to ignore white spaces.
doc.PreserveWhitespace = False
[ô] Load the passed XML file using it’s name.
Try
doc.LoadXml(vXMLString)
[ô] Verifica se a tag a ser assinada existe é única
Dim qtdeRefUri As Integer = doc.GetElementsByTagName(strUri).Count
If qtdeRefUri = 0 Then
[ô] a URI indicada não existe
Throw New Exception([Ô]A tag de assinatura [Ô] & strUri.Trim() & [Ô] não existe no XML. (Código do Erro: 4)[Ô])
Me.intResultado = 4
Else
[ô] Exsiste mais de uma tag a ser assinada
If qtdeRefUri > 1 Then
[ô] existe mais de uma URI indicada
Throw New Exception([Ô]A tag de assinatura [Ô] & strUri.Trim() & [Ô] não é unica. (Código do Erro: 5)[Ô])
Me.intResultado = 5
Else
If doc.GetElementsByTagName([Ô]Signature[Ô]).Count = 0 Then
[ô]Documento ainda não assinado (Se já tiver assinado não vamos fazer nada, somente retornar ok para continuar o envio). Wandrey 12/05/2009
Try
[ô] Create a SignedXml object.
Dim signedXml As New SignedXml(doc)
[ô] Add the key to the SignedXml document
signedXml.SigningKey = _X509Cert.PrivateKey
[ô] Create a reference to be signed
Dim reference As New Reference()
[ô] pega o uri que deve ser assinada
Dim _Uri As XmlAttributeCollection = doc.GetElementsByTagName(strUri).Item(0).Attributes
For Each _atributo As XmlAttribute In _Uri
If _atributo.Name = [Ô]Id[Ô] Then
reference.Uri = [Ô]#[Ô] & _atributo.InnerText
End If
Next
[ô] Add an enveloped transformation to the reference.
Dim env As New XmlDsigEnvelopedSignatureTransform()
reference.AddTransform(env)
Dim c14 As New XmlDsigC14NTransform()
reference.AddTransform(c14)
[ô] Add the reference to the SignedXml object.
signedXml.AddReference(reference)
[ô] Create a new KeyInfo object
Dim keyInfo As New KeyInfo()
[ô] Load the certificate into a KeyInfoX509Data object
[ô] and add it to the KeyInfo object.
keyInfo.AddClause(New KeyInfoX509Data(_X509Cert))
[ô] Add the KeyInfo object to the SignedXml object.
signedXml.KeyInfo = keyInfo
signedXml.ComputeSignature()
[ô] Get the XML representation of the signature and save
[ô] it to an XmlElement object.
Dim xmlDigitalSignature As XmlElement = signedXml.GetXml()
[ô] Gravar o elemento no documento XML
doc.DocumentElement.AppendChild(doc.ImportNode(xmlDigitalSignature, True))
XMLDoc = New XmlDocument()
XMLDoc.PreserveWhitespace = False
XMLDoc = doc
[ô] Atualizar a string do XML já assinada
Me.vXMLStringAssinado = XMLDoc.OuterXml
[ô] Gravar o XML Assinado no HD
Dim SW_2 As StreamWriter = File.CreateText(strArqXMLAssinado)
SW_2.Write(Me.vXMLStringAssinado)
SW_2.Close()
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 3
End If
Throw (caught)
End Try
End If
End If
End If
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 6
End If
Throw (caught)
End Try
End If
Catch caught As Exception
If intResultado = 0 Then
Me.intResultado = 1
End If
Throw (caught)
End Try
Catch ex As Exception
If intResultado = 0 Then
Me.intResultado = 7
End If
Throw (ex)
Finally
SR.Close()
End Try
End Sub
Opa,
deu certo aqui otavio. valeu
acho que terminei...
deu certo aqui otavio. valeu
acho que terminei...
Boa tarde pessoal, sou novato no fórum tenho responsabilidade de implantar Nota Fiscal Eletrônica 2.0...
Algum de vocês tem algum projetinho de exemplo em c# ou vb.net? que possa me ajudar...
minhas maiores dúvidas são:
- Comunicar com o webservice
- Criar os lotes
-Assinar Digitalmente os arquivos xml
Se alguém puder me ajudar eu agradeço...
Meu Gmail é horizonprog@gmail.com ou horizonprog@hotmail.com
Algum de vocês tem algum projetinho de exemplo em c# ou vb.net? que possa me ajudar...
minhas maiores dúvidas são:
- Comunicar com o webservice
- Criar os lotes
-Assinar Digitalmente os arquivos xml
Se alguém puder me ajudar eu agradeço...
Meu Gmail é horizonprog@gmail.com ou horizonprog@hotmail.com
ALEXANDRECE Nestas paginas do tópico tem tudo que necessita.
Pessoal,
Alguém consegui fazer a inutilização e cancelamento?
Tentei baixar o arquivo postado pelo OTAVIOFAVERO, mas o mesmo encontra-se corrompido...
Se alguém consegui baixa com sucesso, por favor, encaminhe no meu email, ou poste-o novamente...
Alguém consegui fazer a inutilização e cancelamento?
Tentei baixar o arquivo postado pelo OTAVIOFAVERO, mas o mesmo encontra-se corrompido...
Se alguém consegui baixa com sucesso, por favor, encaminhe no meu email, ou poste-o novamente...
Citação::
Pessoal,
Alguém consegui fazer a inutilização e cancelamento?
Tentei baixar o arquivo postado pelo OTAVIOFAVERO, mas o mesmo encontra-se corrompido...
Se alguém consegui baixa com sucesso, por favor, encaminhe no meu email, ou poste-o novamente...
baixe de outro pc
abç
RODRIGUESRM,
a inutilizaçao e cancelamento é tranquilo, qual o seu problema exatamente? talvez eu possa te ajudar
a inutilizaçao e cancelamento é tranquilo, qual o seu problema exatamente? talvez eu possa te ajudar
[Ô]Ato COTEPE 13/10 - reduziu o prazo máximo de cancelamento da NF-e para 24 horas da autorização de uso, o novo prazo de cancelamento começa a valer a partir de 01/01/2011.[Ô]
http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2010/ac013_10.htm
http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2010/ac013_10.htm
Citação::
[Ô]Ato COTEPE 13/10 - reduziu o prazo máximo de cancelamento da NF-e para 24 horas da autorização de uso, o novo prazo de cancelamento começa a valer a partir de 01/01/2011.[Ô]
http://www.fazenda.gov.br/confaz/confaz/atos/atos_cotepe/2010/ac013_10.htm
valeu duhhh eu vou alterar la o meu post e organizar melhor! e vou gerar um banco de dados tambem! para disponivilizar ao topico!
valeu
Faça seu login para responder