dhEmis inválida no envio nfce C#

Opa,

Estou enviando nfce em C# com o sdk.

estou recebendo o seguinte erro:

"Error calling EmitirNfce: {\r\n    \"error\": {\r\n        \"code\": \"InvalidJson\",\r\n        \"message\": \"Invalid TDateTime JSON value at $.infNFe.ide.dhEmi\"\r\n    }\r\n}

A informação dhEmi eu já coloquei em UTC e no timezone do cliente e em ambos casos ocorre erro.

Enviei por volta das 17h no estado PR, -03:00

UTC
dhEmis

No fuso horário PR
dhEmiss timezone cliente

Pelo insomnia eu envio em UTC e dá certo

Mais informações do retorno

{
  "message": "Ocorreu um erro interno do servidor, tente mais tarde ou entre em contato com o administrador do sistema.",
  "messageCode": "ME0500",
  "exception": {
    "errorCode": 400,
    "errorContent": "{\r\n    \"error\": {\r\n        \"code\": \"InvalidJson\",\r\n        \"message\": \"Invalid TDateTime JSON value at $.infNFe.ide.dhEmi\"\r\n    }\r\n}",
    "headers": {
      "access-Control-Allow-Origin": [
        "*"
      ],
      "date": [
        "Wed, 24 May 2023 20:23:12 GMT"
      ],
      "server": [
        "Microsoft-HTTPAPI/2.0"
      ],
      "x-Robots-Tag": [
        "none, noarchive"
      ],
      "xdata-Version": [
        "2"
      ],
      "content-Length": [
        "132"
      ],
      "content-Type": [
        "application/json"
      ]
    },
    "message": "Error calling EmitirNfce: {\r\n    \"error\": {\r\n        \"code\": \"InvalidJson\",\r\n        \"message\": \"Invalid TDateTime JSON value at $.infNFe.ide.dhEmi\"\r\n    }\r\n}",
    "data": {},
    "source": "NuvemFiscal.Sdk",
    "hResult": -2146233088,
    "stackTrace": "   at NuvemFiscal.Sdk.Api.NfceApi.EmitirNfceWithHttpInfoAsync(NfePedidoEmissao body, CancellationToken cancellationToken)\r\n   at NuvemFiscal.Sdk.Api.NfceApi.EmitirNfceAsync(NfePedidoEmissao body, CancellationToken cancellationToken)\r\n   at LogSistemas.Domynus.Service.Fiscal.NuvemFiscal.Services.NuvemFiscalNFeAPIService.SendNFe(FiscalModeloNFe mod, NfePedidoEmissao nfe) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Service.Fiscal.NuvemFiscal\\Services\\NuvemFiscalNFeAPIService.cs:line 53\r\n   at LogSistemas.Domynus.Service.Fiscal.NuvemFiscal.Services.NuvemFiscalNFeEmissionService.Execute(NFeMovement nfeMovement) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Service.Fiscal.NuvemFiscal\\Services\\NuvemFiscalNFeEmissionService.cs:line 49\r\n   at LogSistemas.Domynus.Service.Commands.Fiscal.SendNFeCommandHandler.Handle(SendNFeCommand request, CancellationToken cancellationToken) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Service.Commands\\Fiscal\\SendNFeCommand.cs:line 44\r\n   at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at LogSistemas.Domynus.Service.Commands.Fiscal.ProcessSendNFeCommandHandler.Handle(ProcessSendNFeCommand request, CancellationToken cancellationToken) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Service.Commands\\Fiscal\\ProcessSendNFeCommand.cs:line 66\r\n   at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, RequestHandlerDelegate`1 next, CancellationToken cancellationToken)\r\n   at LogSistemas.Domynus.Api.Controller.Fiscal.NFeController.Send(Int32 id, ILogger logger) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Api\\Controller\\Fiscal\\NFeController.cs:line 84\r\n   at lambda_method431(Closure , Object )\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\r\n   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\r\n   at LogSistemas.Domynus.Api.Middleware.DefaultInfoLoggingMiddleware.Invoke(HttpContext context) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Api\\Middleware\\DefaultInfoLoggingMiddleware.cs:line 26\r\n   at LogSistemas.Domynus.Api.Middleware.ExceptionHandlingMiddleware.InvokeAsync(HttpContext context) in D:\\Projetos\\Domynus\\Domynus.web\\domynus_web_backend\\src\\LogSistemas.Domynus.Api\\Middleware\\ExceptionHandlingMiddleware.cs:line 41"
  }
}

Por favor coloque o fonte exato que você está usando para termos uma ideia melhor do que ocorre. Essa resposta JSON por exemplo não é do servidor da Nuvem, é de algum servidor intermediário.

Realmente, não me atentei a este detalhe, perdão.

image

Erro ocorre no EmitirNfceAsync.

Eu debuguei essa rotina, precisou decompilar o código se não me engano, mas não foi um debugue legal, não acompanhava a execução precisamente, então só consigo te passar isso mesmo, a não ser que me oriente de outra forma.

Toda a exceção capturada pelo minha aplicação está dentro de exception no json acima.

Opa,

Pessoal queria saber se essa questão que estou passando está no planejamento por agora para analisarem?
Até o momento não consegui realizar o envio e como estou pendente dessa situação para continuar a integração, eu precisava saber para ver como me impacta.

Já fizemos uma integração com um provedor de envio fiscal e quando colocamos no servidor para testes, deu problemas e eles não irão ajustar estes problemas por agora, fiz a integração completa e não adiantou, acabei perdendo tempo e preciso evitar isso novamente, então irei implementar o envio e testar no servidor.

Se precisarem de algo mais para eu ajudá-los nessa questão é só me avisar.

É somente isso mesmo, não querendo exigir nada pessoal.

Obrigado.

Tentamos ajudar, é claro. Nosso foco é nos serviços de API. A forma como os clientes se comunicam com a nossa API está fora do nosso alcance.

Disponibilizamos os SDKs para facilitar o acesso com algumas linguagens. E tentaremos ajudar no uso deles, sim. Mas a prioridade é sempre no lado da API. Até porque você pode acessar a Nuvem Fiscal sem os SDKs, eles não são obrigatórios.

Dito isso, acho que ainda precisaríamos de mais detalhes e também que você entenda melhor, como programador, o que acontece do seu lado.

Os prints que você enviou são (aparentemente) de propriedades de objetos do .NET. As datas portanto não tem significado nenhum para a Nuvem Fiscal. O que você precisaria fazer é tentar interceptar as chamadas à Nuvem (usando algo com o Fiddler por exemplo) para verificar exatamente qual é o JSON que está sendo enviado para a API. Consegue fazer isso?

Sim, vou testar aqui.

Segue

{
	"ambiente": "homologacao",
	"infNFe": {
		"versao": "4.00",
		"ide": {
			"cUF": 41,
			"cNF": "97617475",
			"natOp": "Venda de Mercadoria",
			"mod": 65,
			"serie": 1,
			"nNF": 50250,
			"dhEmi": "2023-05-25T16:54:11.7655731",
			"dhSaiEnt": "2023-05-25T16:54:11.7655731",
			"tpNF": 1,
			"idDest": 1,
			"cMunFG": "4109609",
			"tpImp": 4,
			"tpEmis": 1,
			"tpAmb": 2,
			"finNFe": 1,
			"indFinal": 1,
			"indPres": 1,
			"indIntermed": 99,
			"procEmi": 0,
			"verProc": "1.0",
			"NFref": []
		},
		"emit": {
			"CNPJ": "13007512000121",
			"xNome": "Kero Ótica Inc.",
			"xFant": "Kero Ótica",
			"enderEmit": {
				"xLgr": "Testetest",
				"nro": "12345",
				"xBairro": "Zona 1",
				"cMun": "4109609",
				"xMun": "Guaratuba",
				"UF": "PR",
				"CEP": "87200000",
				"cPais": "1058",
				"xPais": "Brasil",
				"fone": "36296203"
			},
			"IE": "9054324607",
			"CRT": 1
		},
		"dest": {
			"xNome": "Consumidor",
			"enderDest": {
				"xLgr": "Sem logradouro",
				"nro": "S/N",
				"xBairro": "Sem bairro",
				"cMun": "4109609",
				"xMun": "Guaratuba",
				"UF": "PR",
				"CEP": "00000000",
				"cPais": "1058",
				"xPais": "Brasil"
			},
			"indIEDest": 9
		},
		"autXML": [],
		"det": [
			{
				"nItem": 1,
				"prod": {
					"cProd": "05049385352",
					"cEAN": "5695546982566",
					"cBarra": "5695546982566",
					"xProd": "Lustroso Borracha Frango",
					"NCM": "00000000",
					"CFOP": "5102",
					"uCom": "PAR",
					"qCom": 1.0,
					"vUnCom": 10.0,
					"vProd": 10.0,
					"cEANTrib": "5695546982566",
					"cBarraTrib": "5695546982566",
					"uTrib": "PAR",
					"qTrib": 1.0,
					"vUnTrib": 10.0,
					"indTot": 1
				},
				"imposto": {
					"ICMS": {
						"ICMS00": {
							"orig": 0,
							"CST": "0",
							"modBC": 0,
							"vBC": 0.0,
							"pICMS": 0.0,
							"vICMS": 0.0
						}
					},
					"IPI": {
						"cEnq": "99",
						"IPITrib": {
							"CST": "99",
							"vIPI": 0.0
						}
					},
					"PIS": {
						"PISOutr": {
							"CST": "99",
							"vPIS": 0.0
						}
					},
					"PISST": {
						"vPIS": 0.0
					},
					"COFINS": {
						"COFINSOutr": {
							"CST": "99",
							"vCOFINS": 0.0
						}
					},
					"COFINSST": {
						"vCOFINS": 0.0
					},
					"ICMSUFDest": {
						"vBCUFDest": 0.0,
						"pICMSUFDest": 0.0,
						"pICMSInter": 0.0,
						"pICMSInterPart": 0.0,
						"vICMSUFDest": 0.0,
						"vICMSUFRemet": 0.0
					}
				},
				"impostoDevol": {
					"pDevol": 0.0,
					"IPI": {
						"vIPIDevol": 0.0
					}
				}
			}
		],
		"total": {
			"ICMSTot": {
				"vBC": 0.0,
				"vICMS": 0.0,
				"vICMSDeson": 0.0,
				"vFCP": 0.0,
				"vBCST": 0.0,
				"vST": 0.0,
				"vFCPST": 0.0,
				"vFCPSTRet": 0.0,
				"vProd": 10.0,
				"vFrete": 0.0,
				"vSeg": 0.0,
				"vDesc": 0.0,
				"vII": 0.0,
				"vIPI": 0.0,
				"vIPIDevol": 0.0,
				"vPIS": 0.0,
				"vCOFINS": 0.0,
				"vOutro": 0.0,
				"vNF": 10.0
			}
		},
		"transp": {
			"modFrete": 9,
			"transporta": {},
			"retTransp": {
				"vServ": 0.0,
				"vBCRet": 0.0,
				"pICMSRet": 0.0,
				"vICMSRet": 0.0,
				"CFOP": "5102",
				"cMunFG": "4109609"
			}
		},
		"pag": {
			"detPag": [
				{
					"tPag": "1",
					"vPag": 10.0
				}
			]
		},
		"infAdic": {},
		"infRespTec": {
			"CNPJ": "XXXX",
			"xContato": "XXX",
			"email": "XXX",
			"fone": "XXXX"
		}
	},
	"referencia": "216073"
}

Acima o dhEmis estava no fuso do horário normal, envie em UTC e foi gerado assim

"dhEmi": "2023-05-25T19:59:19.1488762Z",

O problema está nos milisegundos.

Trunquei eles e deu certo.

public static DateTime TruncateMilliseconds(this DateTime date)
{
    return date.AddTicks(-(date.Ticks % TimeSpan.TicksPerSecond));
}

O Fiddler ajudou, obrigado pelo sugestão.

2 curtidas

Este tópico foi fechado automaticamente 24 horas depois da última resposta. Novas respostas não são mais permitidas.