Gerar o Token via CartaoPostal:
With FConhecimento do begin
Try
RESTRequest1.Method := TRESTRequestMethod.rmPOST;
RESTClient1.BaseURL := 'https://api.correios.com.br/token/v1/autentica/cartaopostagem';
HTTPBasicAuthenticator1.Username := ParametrosCorreios.FieldByName('NomeUsuario').AsString;
HTTPBasicAuthenticator1.Password := ParametrosCorreios.FieldByName('CodigoAcesso').AsString;
JsonBody := TJSONObject.Create;
JsonBody.AddPair('numero', ParametrosCorreios.FieldByName('CartaoPostagem').Value);
RESTRequest1.Params.Items[0].Value:= JsonBody.ToString;
RESTRequest1.Params.AddItem.ContentType := ctAPPLICATION_JSON;
RESTRequest1.Execute;
data := RESTResponse1.JSONValue as TJSONObject;
Token := data.Values['token'].Value;
DataEmissao := data.Values['emissao'].Value;
DataValidade := data.Values['expiraEm'].Value;
// Converte a data de entrada para o formato correto
DataEmissao := StringReplace(DataEmissao, '-', '/', [rfReplaceAll]);
DataValidade := StringReplace(DataValidade, '-', '/', [rfReplaceAll]);
// Remove o "T" e ajuste o formato da hora
DataEmissao := StringReplace(DataEmissao, 'T', ' ', [rfReplaceAll]);
DataValidade := StringReplace(DataValidade, 'T', ' ', [rfReplaceAll]);
DataEmissao := Copy(DataEmissao, 9,2) + '/' + Copy(DataEmissao, 6,2) + '/' + Copy(DataEmissao, 1,4) + ' ' + Copy(DataEmissao, 12,8);
DataValidade := Copy(DataValidade, 9,2) + '/' + Copy(DataValidade, 6,2) + '/' + Copy(DataValidade, 1,4) + ' ' + Copy(DataValidade, 12,8);
Except on E : Exception do begin
ShowMessage('Erro: ' + E.Message);
Exit;
end;
end;
end;
Para consultar o rastreamento:
function TFConhecimento.Rastro_Correios(Objeto : String): String;
var data, JsonBody: TJsonObject;
cEventos: String;
//ClientDataSet_Rastreio : TClientDataSet;
begin
TokenCorreios('CartaoPostal');
With FConhecimento do begin
Try
RESTRequest2.Params.Clear;
RESTRequest2.Method := TRESTRequestMethod.rmGET;
RESTClient2.Authenticator := nil;
RESTClient2.BaseURL := 'https://api.correios.com.br/srorastro/v1/objetos/' + Objeto + '?resultado=T';
RESTRequest2.AddParameter('Authorization', 'Bearer '+ParametrosCorreios.FieldByName('Token').AsString,
TRESTRequestParameterKind.pkHTTPHEADER, [poDoNotEncode]);
RESTRequest2.Execute;
RESTResponseDataSetAdapter2.Active:= True;
//Pega Campo de Eventos e transforma em DataSet
cEventos:= FDRastreio.FieldByName('Eventos').AsString;
Try
JsonToDataset(ClientDataSet_Rastreio, cEventos);
ClientDataSet_Rastreio.Open;
DataRastreio.DataSet:= ClientDataSet_Rastreio;
Except on E : Exception Do begin
Result:= 'ERRO Validação ClientDataSet_Rastreio[Eventos](' + E.Message + ')';
ClientDataSet_Rastreio.Free;
Exit;
end;
end;
Except on E : Exception do begin
ShowMessage('Erro: ' + E.Message);
Result := 'erro: ' + E.Message;
mRetorno.Text:= 'erro: ' + E.Message;
Exit;
end;
end;
end;
end;
esta bem cru ainda pessoal, mais está funcional!