-
Total de ítens
523 -
Registro em
-
Última visita
-
Days Won
2
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por datilas
-
-
15 minutos atrás, Werner_Marques disse:
@datilas, eu não localizei. Mas pode ser que você encontre, já que não tenho muita experiência com TEF.
Segue o manual em anexo
TEF Guia Tecnico Gerenciador Padrao 2.5_032010.rar 389 kB · 1 download
Esse manual não contempla CDP ou nenhum tipo de captura de dados.
Recomendo vc entrar em contato com eles e obter informações mais precisas de como fazer a captura de dados pelo pinpad
- 1
-
59 minutos atrás, Werner_Marques disse:
Bom dia,
@datilas , Para o Pay&go funcionou perfeitamente.
Já no D-TEF ele retorna um erro dizendo que o TEF_dial não está ativo, mesmo eu inicializando ele antes. O erro é disparado pela procedure FinalizarRequisicao pelo o que vi ele verifica se o arquivo sts existe, caso não exista na pasta resp ele retorna o erro.
Pelo o que vi o D-TEF não possui esse comando CDP, vou continuar pesquisando. Muito obrigado.
veja se no manual de integração do TEF-D existe essa possibilidade,
caso exista vc pode fazer a alteração baseado nessa da pay&go
se vc possuir o manual posta aqui por favor. pois eu não tenho
-
apenas para responder o tópico:
da uma olhada nesse link:
veja se pode te ajudar para você poder alterar e usar com o seu GP.
se os moderadores acharem que é duplicidade de tópico peço desculpa.(estou tentando ajudar)
- 3
-
18 minutos atrás, AlexBecker disse:
Bem depois de muito consultar a internet e o velho googrisss conseguimos a solução, obrigado.
poderia compartilhar com a gente?
-
eu exportei o db do Sped Contribuições em MySQL,firebird e sqlite
- 1
-
eu exportei o db do sped fiscal efd em MySQL,firebird e sqlite
esta com todas as tabelas para o layout 14 que começa a partir de 01/01/2020
- 1
-
o que esta me encafifando é essa mensagem "Unsupported Media Type"
tenta assim
IdHTTPConexao.Request.Clear;
IdHTTPConexao.Request.ContentType := 'application/json';
IdHTTPConexao.Request.CharSet := 'utf-8';
IdHTTPConexao.Request.CustomHeaders.Clear;
IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken);
//IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json');
IdHTTPConexao.Response.ContentType := 'application/json';
IdHTTPConexao.Response.CharSet := 'utf-8'; -
48 minutos atrás, luizcnr disse:
Tentei das seguintes formas:
Onde estava o IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType); como foi comentado, mudei para IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'multipart/form-data');
E me apresentou o seguinte erro:
---------------------------
Aviso
---------------------------
Atenção! Ocorreu ao Cadastrar Produto no iFood.
<html><body><h1>Whitelabel Error Page</h1><p>
This application has no explicit mapping for /error,
so you are seeing this as a fallback.</p><div id='created'>
Tue Nov 05 15:47:05 GMT-03:00 2019</div><div>There was an unexpected error
(type=Internal Server Error, status=500).</div><div>java.lang.RuntimeException:
java.io.IOException: Missing initial multi part boundary</div></body></html>Se eu comentar a linha citada, me apresenta o erro seguinte erro:
---------------------------
Aviso
---------------------------
Atenção! Ocorreu ao Cadastrar Produto no iFood.
<html><body><h1>Whitelabel Error Page</h1><p>
This application has no explicit mapping for /error,
so you are seeing this as a fallback.</p><div id='created'>
Tue Nov 05 15:47:05 GMT-03:00 2019</div><div>There was an unexpected error
(type=Internal Server Error, status=500).</div><div>java.lang.RuntimeException:
java.io.IOException: Missing initial multi part boundary</div></body></html>E de outra forma, se eu crio uma variável iJSONEnviar : TIdMultipartFormDataStream;
E passo em IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType);
Me retorna o seguinte erro:
---------------------------
Aviso
---------------------------
Atenção! Ocorreu ao Cadastrar Produto no iFood.
<html><body><h1>Whitelabel Error Page</h1><p>This application has no
explicit mapping for /error, so you are seeing this as a fallback.</p>
<div id='created'>Tue Nov 05 15:54:19 GMT-03:00 2019</div><div>There was an unexpected error
(type=Internal Server Error, status=500).</div><div>java.lang.RuntimeException:
java.io.IOException: Missing initial multi part boundary</div></body></html>// comenta essa linha IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType); IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); //deixa essa IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json');//deixa essa // comenta essa linha IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Disposition', 'form-data; name="sku"'); IdHTTPConexao.Response.CharSet := 'UTF-8';
código limpo pra não confundir:
Var iRespostaIfood: String; iJSON: String; iJSONStream, AResponseContent: TStringStream; Begin AResponseContent := TStringStream.Create(''); Try iJSON := ('{"merchantId": MerchantID,' + //CÓD DO RESTAURANTE '"externalCode":"205",' + '"availability": "AVAILABLE",' + '"name": "X BURGUER - TESTE",' + '"description": "PÃO, HAMBURGUER E QUEIJO",' + '"order": 1,' + '"schedules": [],' + '"price":{' + '"originalValue": 0,' + '"promotional": false,' + '"value": 12.50}' + '}'); mRetorno.Lines.Clear; mRetorno.Lines.Add(iJSON); iJSONStream := TStringStream.Create(iJSON); //Configura o HTTP IdHTTPConexao.Request.Clear; IdHTTPConexao.Request.CustomHeaders.Clear; IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json'); IdHTTPConexao.Response.CharSet := 'UTF-8'; Try IdHTTPConexao.Post('https://pos-api.ifood.com.br/v1.0/skus', iJSONStream, AResponseContent); iRespostaIfood := AResponseContent.DataString; //201 = Indica que novos parâmetros foram criados com sucesso If IdHTTPConexao.ResponseCode = 201 Then Application.MessageBox(PWideChar('Produto Cadastrado com Sucesso!'), 'Informação', MB_OK + MB_ICONINFORMATION); Except On e: EIdHTTPProtocolException Do Begin If (e.ErrorCode <> 200) Or (e.ErrorCode <> 201) Then Begin Application.MessageBox(PWideChar('Atenção! Ocorreu ao Cadastrar Produto no iFood. ' + e.ErrorMessage), 'Aviso', MB_OK + MB_ICONWARNING); Exit; End; End; End; Finally FreeAndNil(iJSONStream); FreeAndNil(AResponseContent); End;
-
17 minutos atrás, luizcnr disse:
Então, eu já tentei das duas formas. No POSTMAN, eu usei o seguinte JSON:
{
"merchantId": 292468,
"availability": "AVAILABLE",
"externalCode":"201",
"name": "FANTA LATA",
"description": "",
"order": 2,
"schedules": [],
"price": {
"originalValue": 0,
"promotional": false,
"value": 12.50}
}
Foi retornado o código 201, sendo criado o produto na API do iFood. Eu acho que o problema, esteja no momento de passar os parâmetros no form-data.
Mas, ainda não descobri qual a forma correta de passar esse JSON para criar o produto, via Delphi.
tenta ssim:
Var iStringListProduto: TStringList; iRespostaIfood: String; iJSON: String; iJSONStream, AResponseContent: TStringStream; // iJSONEnviar : TIdMultipartFormDataStream; Begin // iJSONEnviar := TIdMultiPartFormDataStream.Create; AResponseContent := TStringStream.Create(''); Try iJSON := ('{"merchantId": MerchantID,' + //CÓD DO RESTAURANTE '"externalCode":"205",' + '"availability": "AVAILABLE",' + '"name": "X BURGUER - TESTE",' + '"description": "PÃO, HAMBURGUER E QUEIJO",' + '"order": 1,' + '"schedules": [],' + '"price":{' + '"originalValue": 0,' + '"promotional": false,' + '"value": 12.50}' + '}'); mRetorno.Lines.Clear; mRetorno.Lines.Add(iJSON); iJSONStream := TStringStream.Create(iJSON); //Configura o HTTP IdHTTPConexao.Request.Clear; IdHTTPConexao.Request.CustomHeaders.Clear; IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType); IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken); IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json'); //IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Disposition', 'form-data; name="sku"'); IdHTTPConexao.Response.CharSet := 'UTF-8'; Try IdHTTPConexao.Post('https://pos-api.ifood.com.br/v1.0/skus', iJSONStream, AResponseContent); iRespostaIfood := AResponseContent.DataString; //201 = Indica que novos parâmetros foram criados com sucesso If IdHTTPConexao.ResponseCode = 201 Then Application.MessageBox(PWideChar('Produto Cadastrado com Sucesso!'), 'Informação', MB_OK + MB_ICONINFORMATION); Except On e: EIdHTTPProtocolException Do Begin If (e.ErrorCode <> 200) Or (e.ErrorCode <> 201) Then Begin Application.MessageBox(PWideChar('Atenção! Ocorreu ao Cadastrar Produto no iFood. ' + e.ErrorMessage), 'Aviso', MB_OK + MB_ICONWARNING); Exit; End; End; End; Finally If Assigned(iJSONStream) Then FreeAndNil(iJSONStream); FreeAndNil(AResponseContent); End;
-
2 horas atrás, luizcnr disse:
Datilas, obrigado por responder.
Realizei o teste com o que vce me solicitou, mas ainda não deu certo
pelo que vi na documentação não preencher ('"schedules": [],' +) caso não exista.
{ "merchantId": 999999, "ID do Restaurante (MerchantID)", "externalCode": "155", "COD PDV", "availability": "AVAILABLE", --"Disponibilidade do item", "name": "X BURGUER", "Nome do Item", "description": "PÃO, HAMBURGUER E QUEIJO", --" Descrição do Item (Composição)", "order": 0: "Ordem para o item aparecer no cardápio", "price": { "originalValue": 0: --"Valor Original do Item (Somente preencher caso o item estiver em promoção)", "promotional": false: --"Item está em promoção?" "value": 12 --"Valor do item (Valor que vai para aparecer na plataforma Ifood)" } } //preencher apenas se existir (schedules) { "merchantId": 999999, "ID do Restaurante (MerchantID)", "externalCode": 9430, "COD PDV" "availability": "AVAILABLE", --"Disponibilidade do item", "name": "Esfiha de Carne", "Nome do Item" "description": "Recheio com Mussarela.", --"Descrição do Item (Composição)", "schedules": [{ --"Disponibilidade dos itens " Dias da semana e horário funcionamento "" "dayOfWeek": "MONDAY" --" Dia da semana que funciona" }, { "dayOfWeek": "FRIDAY" --" Dia da semana que funciona" } ], "order": 1, --"Ordem para o item aparecer no cardápio", "price": { "Preço" "originalValue": 3.96, --"Valor Original do Item (Somente preencher caso o item estiver em promoção)" "promotional": true, --" Item está em promoção?" "value": 1.98 --"Valor promocional do item (Valor que vai para aparecer na plataforma Ifood)" } }
-
33 minutos atrás, luizcnr disse:
Galera,
Bom dia!
Estou com um problema, por alguns dias e não consigo resolver. Estou realizando a integração do meu sistema com o iFood.
Estou realizando alguns testes, por enquanto, estava obtendo sucesso, até tentar cadastrar o produto na API do iFood.
O procedimento que estou utilizando para cadastro é o seguinte:
procedure TfrmPrincipal.btnCriarProdutoClick(Sender: TObject);
var
iStringListProduto : TStringList;
iRespostaIfood : string;
iJSON : string;
iJSONStream : TStringStream;
iJSONEnviar : TIdMultipartFormDataStream;
begin
iJSONEnviar := TIdMultiPartFormDataStream.Create;try
iJSON := ('{"merchantId": MerchantID,' + //CÓD DO RESTAURANTE
'"externalCode":"205",' +
'"availability": "AVAILABLE",' +
'"name": "X BURGUER - TESTE",' +
'"description": "PÃO, HAMBURGUER E QUEIJO",' +
'"order": 1,' +
'"schedules": [],' +
'"price":{' +
'"originalValue": 0,' +
'"promotional": false,' +
'"value": 12.50}'+
'}');
mRetorno.Lines.Clear;
mRetorno.Lines.Add(iJSON);iJSONEnviar.AddFormField('sku', iJSON);
//Configura o HTTP
IdHTTPConexao.Request.Clear;
//IdHTTPConexao.Request.CharSet := 'UTF-8';
IdHTTPConexao.Request.CustomHeaders.Clear;
IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', iJSONEnviar.RequestContentType);
IdHTTPConexao.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + self.fToken);
IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Type', 'application/json');
IdHTTPConexao.Request.CustomHeaders.AddValue('Content-Disposition', 'form-data; name="sku"');
IdHTTPConexao.Response.CharSet := 'UTF-8';try
iRespostaIfood := IdHTTPConexao.Post('https://pos-api.ifood.com.br/v1.0/skus', iJSONEnviar);//201 = Indica que novos parâmetros foram criados com sucesso
if IdHTTPConexao.ResponseCode = 201 then
Application.MessageBox(PWideChar('Produto Cadastrado com Sucesso!'),
'Informação', MB_OK+MB_ICONINFORMATION);
except
on e:EIdHTTPProtocolException do
begin
if (e.ErrorCode <> 200) or (e.ErrorCode <> 201) then
begin
Application.MessageBox(PWideChar('Atenção! Ocorreu ao Cadastrar Produto no iFood. ' +
e.ErrorMessage),
'Aviso', MB_OK+MB_ICONWARNING);
Exit;
end;
end;
end;
finallyend;
end;Estou obtendo o seguinte retorno de erro:
---------------------------
Aviso
---------------------------
Atenção! Ocorreu ao Cadastrar Produto no iFood.
<html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit
mapping for /error, so you are seeing this as a fallback.</p><div id='created'>
Tue Nov 05 10:50:01 GMT-03:00 2019</div><div>There was an unexpected error
(type=Bad Request, status=400).</div><div>Unable to parse form content</div></body></html>Obs. Esse mesmo JSON, executei no POSTMAN e estou obtendo um retorno positivo que o produto é cadastrado com sucesso, porém, o erro está no fonte e não estou conseguindo identificar.
Se alguém, conseguir me auxiliar ou ajudar.
Obrigado!
pode ser por causa do acento na palavra "PÃO" tente converter o texto para utf-8 ou tira o acento para testar
-
muito obrigado.
- 1
-
aqui eu tenho uma vps com owncloud a versão Enterprise tem um plugin que filtra arquivos por extensão
o owncloud funciona como um dropbox então ele sobe o arquivo assim que possivel
o que eu faço é compactar a pasta de xml's e o backup do db e altero a extensão para uma especifica ".bkx"
e filtro no owncloud por essa extensão
quando o cliente é infectado por um vírus a ultima versão que vai ter no meu backup é valida
já que ransomware encripta o arquivo e altera a extensão, ele não afeta o arquivo que já subiu.
sem contar que eu tenho total controle ao owncloud então eu posso habilitar e desabilitar um cliente sempre que necessário
- 3
-
1 hora atrás, MaikonPanazzolo disse:
O aplicativo trata-se de um exe que captura a tela do computador(printscreen) e salva em uma pasta, juntamente com informações de teclas digitadas e afins
isso é um comportamento de keylogger dificilmente você vai conseguir que um antivírus te deixe em paz,
se voce precisa de um bugtrace voce poderia usar :
http://madshi.net/madExceptDescription.htm
https://www.eurekalog.com/downloads_delphi.php
por exemplo, mas existe outros.
- 2
-
remova o IdHTTP1 do seu formulario e tente usar assim:
Var code: Integer; sResponse: String; Json: String; JsontoSend, AResponseContent: TStringStream; iStatusCode: Integer; http: TIdHTTP; Begin Json := '{"Customer": { "DocumentType" : "CNPJ", "DocumentNumber" : "11229082000167" }, "Driver": { "PhoneCountry": "+55", "PhoneNumber": "19999690130", "Name": "Daniel Marcelo"} }'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); http := TIdHTTP.Create(Nil); Try http.Request.CharSet := 'utf-8'; http.Request.ContentType := 'application/json'; http.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); http.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); http.Response.ContentType := 'applicattion/json'; http.Response.CharSet := 'utf-8'; Try http.Post('https://api.tudoentregue.com.br/v1/customers/AddDriver', JsontoSend, AResponseContent); Except On E: Exception Do Begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText); Memo1.Lines.Add('Error on Request: ' + sLineBreak + e.Message); exit; End; End; Memo1.Lines.Clear; Memo1.Lines.Add('Response Content: ' + AResponseContent.DataString); Memo1.Lines.Add('Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Response Text: ' + http.ResponseText); Finally JsontoSend.Free; AResponseContent.Free; http.Free; End;
eu adicionei essas duas linhas:
Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode));
Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText);porque caso ResponseCode for 403,404,422 o indy vai levantar um except
sendo que
//IdHTTP1.ResponseCode = 403 Motorista não Relacionado. *response vazio*
//IdHTTP1.ResponseCode = 404 Motorista não Localizado. *response vazio*então você não conseguiria tratar o erro de Motorista não Localizado por exemplo.
caso tenha resolvido seu problema marque o post como melhor resposta
clicando no sinal de no canto superior esquerdo do post
- 3
-
se quiser usar https é só ligar um IdSSLIOHandlerSocketOpenSSL1 ao IdHTTP1
e colocar as dlls ssleay32.dll e libeay32.dll
na mesma pasta da sua aplicação
-
1 hora atrás, d2mpavan disse:
Pra mim, na primeira vez que rodo retorna vazio.
Na segunda vez em diante retorna o mesmo erro que aparece pra você.
Por favor, dê uma olhada se pode me ajudar. O código abaixo está com o App e Requester Key...
Não sei como fechar essa comunicação... lembrando que estou usando o componente IDHTTP.
segue código...
var code : Integer;
sResponse : String;
Json : String;
JsontoSend, AResponseContent : TStringStream;
iStatusCode : Integer;
begin
Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "123", "DeviceKey": "123456", "DeviceId": "222555",';
Json := Json +'"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13425066", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}';JsonToSend := TStringStream.Create(Json);
AResponseContent := TStringStream.Create('');
try
IdHTTP1.Request.Clear;
IdHTTP1.Request.CharSet := 'UTF-8';
IdHTTP1.Request.Method := 'POST';
IdHTTP1.Request.Username := '';
IdHTTP1.Request.Password := '';
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.CustomHeaders.AddValue('AppKey','58fb05c3-4e8b-4929-b7df-95bd261035c9');
IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey','629eda6f-9df5-40e7-a94e-4c54cec83a15');IdHTTP1.Response.ContentType := 'applicattion/json';
IdHTTP1.Response.CharSet := 'UTF-8';
try
sresponse := IdHTTP1.Post('https://api.tudoentregue.com.br/v1/drivers',JsontoSend);
except
on E:EIdHTTPProtocolException do
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Error on Request: ' + #13+#10 + e.Message);
exit;
end;
end;
Memo1.Lines.Clear;
Memo1.Lines.Add(sResponse);finally
JsontoSend.Free();
end;
end;
consegui:
Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "", "DeviceKey": "", "DeviceId": "",'; Json := Json + '"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13400000", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}'; AResponseContent := TStringStream.Create(''); JsonToSend := TStringStream.Create(utf8Encode(Json)); Try IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'utf-8'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); IdHTTP1.Response.ContentType := 'applicattion/json'; IdHTTP1.Response.CharSet := 'utf-8'; IdHTTP1.Post('http://api.tudoentregue.com.br/v1/drivers', JsontoSend, AResponseContent); //IdHTTP1.ResponseCode = 200 Atualização de Registro. //IdHTTP1.ResponseCode = 201 Inclusão de Registro. //IdHTTP1.ResponseCode = 422 Erro de Validação. showmessage(AResponseContent.DataString); showmessage(IdHTTP1.ResponseCode.ToString); showmessage(IdHTTP1.ResponseText); Finally JsontoSend.Free(); End;
de acordo com a api
quando faz um post em /drivers
o Response vem vazio mesmo
o que valida a informação do post é o ResponseCode
//IdHTTP1.ResponseCode = 200 Atualização de Registro.
//IdHTTP1.ResponseCode = 201 Inclusão de Registro.
//IdHTTP1.ResponseCode = 422 Erro de Validação.mas quando faz um get em /drivers
ele responde os dados do motorista
mas de uma boa lida na api pois os codigos do ResponseCode são muito importantes
por exemplo quando faz um get em drivers:
//IdHTTP1.ResponseCode = 200 Processado com Sucesso. *e vem os dados do motorista no response*
//IdHTTP1.ResponseCode = 403 Motorista não Relacionado. *response vazio*
//IdHTTP1.ResponseCode = 404 Motorista não Localizado. *response vazio* -
eu testei com o rest debuguer do delphi e funcionou.
menu tools-> Rest Debuguer
agora to sem tempo pra testar com o indy
-
11 minutos atrás, d2mpavan disse:
Certo,
Mas como faço para usar como você fez no seu exemplo inicial com o THTTPClient? (apresenta undeclared identifier)
Ou com o TIDHTTP que estou usando terei o mesmo efeito?
É que não estou tendo retorno usando o TIDHTTP...
Obrigado!
pra mim aparece: HTTP/1.1 422 Unprocessable Entity
seu try except não esta deixando voce ver o erro
-
voce pode testar dentro da propria api
acessa: https://api.tudoentregue.com.br/Documentacao/index.html
clique no botão Authorize do lado direito
digite suas keys clique no botão Authorize dentro da tela que abriu
feche essa tela.
logo abaixo clique na primeira opção
clique no botão "try it out"
logo em baixo clique no botão execute
vc vai ter uma resposta parecida com essa:
curl -X POST "http://api.tudoentregue.com.br/v1/drivers" -H "accept: application/json" -H "AppKey: gfg" -H "RequesterKey: gdf" -H "content-type: application/json" -d "{ \"PhoneCountry\": \"+55\", \"PhoneNumber\": \"99999999999\", \"Name\": \"Motorista Exemplo\", \"IMEI\": \"999999999999999\", \"DeviceKey\": \"XXX99xXX-...\", \"DeviceId\": \"9FF9F9FFF99FFFFF9999F9FFF99999F9\", \"DeviceType\": \"MarcaModelo\", \"OSName\": \"Android\", \"OSVersion\": \"7.0\", \"Email\": \"[email protected]\", \"ZipCode\": \"99999999\", \"City\": \"Cidade do Exemplo.\", \"State\": \"Estado do Exemplo.\", \"Enable\": false}"
2 minutos atrás, d2mpavan disse:Então...
Inseri as informações na uses, porém quando vou compilar, não encontra o arquivo, por exemplo: "file not found: NetConsts.dcu"
Obrigado!
então remova essa uses
-
7 minutos atrás, d2mpavan disse:
Não encontrou o arquivo...
?-não entendi mas se for isso
Net.HttpClient,
Net.URLClient,
NetConsts; -
6 minutos atrás, d2mpavan disse:
Bom dia Datilas!
Muito obrigado por me ajudar!
Porém, quando inseri as keys e tentei transmitir um arquivo obtive uma resposta vazia e os dados não foram inseridos. Isso quando apenas inseri as chaves utilizando o componente idhttp que eu estava utilizando.
Testei também conforme seu código só que apresentou erro "undeclared identifier: 'THTTPClient'
Como devo declarar na uses para corrigir o problema? (uso Delphi Rad Studio XE).
Desde já agradeço se puder me ajudar novamente.
Grande abraço!
Daniel
uses
System.Net.HttpClient,
System.Net.URLClient,
System.NetConsts; -
eu preciso consumir um serviço do firebase:
curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]' \ -H 'Content-Type: application/json' \ --data-binary '{"email":"[[email protected]]","password":"[PASSWORD]","returnSecureToken":true}'
com indy eu uso assim (funciona):
Var lJsonStream: TStringStream; sUrlFull: String; AResponseContent: TStringStream; iStatusCode: Integer; sResponse: String; jsData: TJSONObject; Begin sUrlFull := 'https://identitytoolkit.googleapis.com/v1/accounts:' + 'signInWithPassword' + '?key=' + sAPIKEY; jsData.AddPair('email', '[email protected]'); jsData.AddPair('password', '1a2b3C'); jsData.AddPair('returnSecureToken', TJSONBool.Create(True)); lJsonStream := TStringStream.Create(UTF8Encode(jsData.ToJSON)); AResponseContent := TStringStream.Create(''); Try IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Post(sUrlFull, lJsonStream, AResponseContent); iStatusCode := IdHTTP1.ResponseCode; sResponse := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); End; End;
com Net.HttpClient eu uso assim (funciona):
Var lJsonStream: TStringStream; lIdHTTP: THTTPClient; sUrlFull: String; AResponseContent: TStringStream; iStatusCode: Integer; sResponse: String; jsData: TJSONObject; Begin sUrlFull := 'https://identitytoolkit.googleapis.com/v1/accounts:' + 'signInWithPassword' + '?key=' + sAPIKEY; jsData.AddPair('email', '[email protected]'); jsData.AddPair('password', '1a2b3C'); jsData.AddPair('returnSecureToken', TJSONBool.Create(True)); lJsonStream := TStringStream.Create(UTF8Encode(jsData.ToJSON)); AResponseContent := TStringStream.Create(''); lIdHTTP := THTTPClient.Create; Try lIdHTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; lIdHTTP.ContentType := 'application/json'; iStatusCode := lIdHTTP.Post(sUrlFull, lJsonStream, AResponseContent).StatusCode; sResponse := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); FreeAndNil(lIdHTTP); End; End;
a pergunta é como faço isso com Synapse já tentei de vários jeitos, já procurei no Google mas não consegui.
-
40 minutos atrás, d2mpavan disse:
Boa Tarde Pessoal!
Se puderem me orientar, preciso consumir uma API (segue documentação... https://api.tudoentregue.com.br/Documentacao/index.html)
Quanto à geração dos arquivo no formato Json, eu já consegui entender.
Porém, já tentei de várias formas e não consigo fechar comunicação com web service para Post do arquivo.
Vi na documentação que tem um "AppKey" e um "RequesterKey". As duas chaves eu possuo mas não tenho ideia de onde as defino.
securityDefinitions": { "AppKey": { "type": "apiKey", "in": "header", "name": "AppKey", "description": "Identificador do software Homologado junto à ActiveCorp para integrar dados ao TudoEntregue." }, "RequesterKey": { "type": "apiKey", "in": "header", "name": "RequesterKey", "description": "Identificador único do Motorista/Cliente junto ao TudoEntregue."
Estou utilizando IDHTTP, mas seria interessante que o envio fosse através de HTTPS.
Vejam como estou fazendo:
var code : Integer;
sResponse : String;
Json : String;
JsontoSend : TStringStream;
begin
Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "", "DeviceKey": "", "DeviceId": "",';
Json := Json +'"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13400000", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}';JsonToSend := TStringStream.Create(utf8Encode(Json));
try
IdHTTP1.Request.Clear;
IdHTTP1.Request.CharSet := 'UTF-8';
IdHTTP1.Request.Method := 'POST';
IdHTTP1.Request.ContentType := 'application/json';IdHTTP1.Response.ContentType := 'applicattion/json';
IdHTTP1.Response.CharSet := 'UTF-8';
try
sResponse := IdHTTP1.Post('http://api.tudoentregue.com.br/v1/drivers',JsontoSend);
except
on E:EIdHTTPProtocolException do
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Error on Request: ' + #13+#10 + e.Message);
exit;
end;
end;
Memo1.Lines.Clear;
Memo1.Lines.Add(sResponse);finally
JsontoSend.Free();
end;
end;
Alguém poderia me dar um exemplo de como enviar os arquivos se possivel em HTTPS?
Desde já agradeço!
Daniel
tente assim:
IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'UTF-8'; IdHTTP1.Request.Method := 'POST'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey','seuAppKey'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey','seuRequesterKey');
ou assim:
Var lJsonStream: TStringStream; lIdHTTP: THTTPClient; sUrlFull: String; AResponseContent: TStringStream; istatusCode:Integer; sResposta:String; Begin lJsonStream := TStringStream.Create(aJSON); AResponseContent := TStringStream.Create(''); lIdHTTP := THTTPClient.Create; Try lIdHTTP.CustomHeaders['AppKey'] := 'seuAppKey'; lIdHTTP.CustomHeaders['RequesterKey'] := 'seuRequesterKey'; lIdHTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; lIdHTTP.ContentType := 'application/json'; istatusCode := lIdHTTP.Post('https://api.tudoentregue.com.br/v1/drivers', lJsonStream, AResponseContent).StatusCode; sResposta := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); FreeAndNil(lIdHTTP); End; End;
mas fica difícil testar sem as keys.
Recuperar XML autorizado
em NFC-e - Nota Fiscal do Consumidor Eletrônica
Postado
Vamos supor que o seu cliente venha perder o XML da nota por exemplo, neste caso basta você ler os dados da nota do banco de dados, gerar e assinar o XML e por fim realizar uma consulta com o XML carregado, desta forma ao realizar a consulta a SEFAZ vai retornar o protocolo de autorização e o componente se encarrega de atualizar o XML acrescentando o protocolo nele, deixando-o assim um documento com validade jurídica.