Ver Mensaje Individual
  #17  
Antiguo 27-06-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Yo utilizo ese codigo con Delphi 2010. Compila sin ningun problema. Eso si, necesitas la biblioteca Synapse para la parte de HTTP, ya que con Indy he tenido problemas; y alguna otra biblioteca para tratar con JSON, yo he usado lkJson

De hecho, el mismo codigo lo he traducido a FreePascal (hay algunas cuestiones menores relacionadas con el soporte a genericos y ayudantes, pero es en esencia el mismo codigo)

Si queres usar otras bibliotecas simplemente tenes que implementar un par de interfaces:

Las que convierten JSON a objetos de negocio, definidas en Afip.PublicAPI.Parsers.pas

Código PHP:
  IAfip_PersonParser = interface
    [
'{3A2CC23D-B463-45C8-B3BA-8546DBF21A62}']
    function 
JsonToPerson(const AJsonstring): IPersona_Afip;
    function 
JsonToDocumentos(const AJsonstring): TArray<string>;
  
end;

  
IAfip_ItemParser = interface
    [
'{0EF21EDC-EFE9-4600-8732-1BBE3A7B136C}']
    function 
JsonToItems(const AJsonstring): TArray<TItem_Afip>;
    function 
JsonToDependencies(const AJsonstring): TArray<TDependencia_Afip>;
  
end
Y un cliente HTTP, esta interfaz esta definida en Afip.PublicAPI.HttpClient.pas

Código PHP:
  /// <summary>
  ///  Esta interface define los dos metodos basicos que tienen que implementar los clientes HTTP
  ///  Segun la documentacion de la AFIP el encoding del response es UTF-8
  /// </summary>
  
IHttpClient = interface
    [
'{AFA99837-6CBB-4111-A268-D8AB8E4CD8DD}']
    function 
HttpGetText(const AUrlstring): string;
    function 
HttpGetBinary(const AUrlstring): TStream;
  
end
Despues conectas todo, creando una instancia de la clase TAfipQuery. El constructor te va a indicar que objetos necesitas suministrar:


Código Delphi [-]
var
  API_AFIP: IApi_Afip;
  HttpClient: IHttpClient;
  PersonParser: IAfip_PersonParser;
  ItemsParser: IAfip_ItemParser;
begin
  HttpClient := // crear http client
  PersonParser := // crear parser json
  ItemsParser:= // crear parser json
  API_AFIP:= TAfipQuery.Create(HttpClient, PersonParser, ItemsParser);
  // usar API

Última edición por AgustinOrtu fecha: 27-06-2017 a las 06:15:12.
Responder Con Cita