Autor Téma: API pro slovenské ICO  (Přečteno 191 krát)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2222
  • Karma: 98
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
API pro slovenské ICO
« kdy: 15-03-2019, 11:02:12 »
Ahoj,

není nekde na webu moznost API pro Slovenské ICO? Jako po zavolání API se slovenským ICO mi to vrátí nějaké aspon zakladní informace o firme?

Dříve jsem používal edata.sk, ale to zmizelo.

Našel jsem https://zvarik.cz/cs/api-udaje-firem-cr-sk , https://github.com/lubosdz/parser-orsr/blob/master/ConnectorOrsr.php

ale třeba má někdo lepší tip. Parsovat slovenský OR se mi moc nechce :-)
Embarcadero MVP - Czech republic

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 57
  • Karma: 2
Re:API pro slovenské ICO
« Odpověď #1 kdy: 15-03-2019, 14:34:42 »

Offline xnukes

  • Plnoletý
  • ***
  • Příspěvků: 129
  • Karma: 2
  • Strength Through Unity, Unity Through Faith.
    • Verze Delphi: Rad Studio XE8
    • Bludspeed s.r.o.
Re:API pro slovenské ICO
« Odpověď #2 kdy: 18-03-2019, 07:24:03 »
něco jsem kdysi psal, je to funkční , používá to jednu api z webu apilayer.net a funguje to pouze na DIC .. ale jeste to bude mit nejake mouchy, tak snad ti to k necemu bude :)
Kód: Delphi [Vybrat]
  1. {* VatlayerAPI for Delphi
  2.  * Author: Lukas Vlcek
  3.  * E-mail: xnukes@gmail.com
  4.  
  5. Usage:
  6.  
  7. var
  8.   Data: TVatlayerValidateObj;
  9. begin
  10.   with TVatlayerAPI.Create do
  11.   begin
  12.     Data := GetVatInfo('LU26375245'); // Here is content of company :-)
  13.   end;
  14. end;
  15.  
  16. *}
  17.  
  18. unit VatlayerAPI;
  19.  
  20. interface
  21.  
  22. uses
  23.   System.JSON, IdHTTP, SysUtils, StrUtils, Types, Dialogs, Classes, Character;
  24.  
  25. const VATLAYER_BASE = 'http://apilayer.net/api/';
  26. const VATLAYER_APIKEY = '7e58515c70f1e4f2e1bda90070eb8266';
  27. const VATLAYER_ENDPOINT_VALIDATE = 'validate';
  28.  
  29. type
  30.   TVatlayerValidateObj = class(TObject)
  31.     private
  32.       Valid: Boolean;
  33.       Database: string;
  34.       FormatValid: Boolean;
  35.       Query: string;
  36.       CountryCode: string;
  37.       VatNumber: string;
  38.       CompanyName: string;
  39.       CompanyAddress: string;
  40.       procedure Split(Input: string; var OutputStrings: TStringList);
  41.     public
  42.       function GetCompanyName: string;
  43.       function GetCompanyCity: string;
  44.       function GetCompanyAddress: string;
  45.       function GetCompanyZip: string;
  46.     published
  47.       property IsValid: Boolean read Valid;
  48.       property IsFromatValid: Boolean read FormatValid;
  49.   end;
  50.   TVatlayerAPI = class(TObject)
  51.     private
  52.       function GetUrlContent(Url: string): string;
  53.       function GetVatlayerValidateData(VatNumber: string): TJSONObject;
  54.     public
  55.       function GetVatInfo(VatNumber: string): TVatlayerValidateObj;
  56.   end;
  57.  
  58. implementation
  59.  
  60. // TVatlayerValidateObj
  61.  
  62. procedure TVatlayerValidateObj.Split(Input: string; var OutputStrings: TStringList);
  63. var
  64.   Parts: TStringDynArray;
  65.   I: Integer;
  66. begin
  67.   Parts := SplitString(Input, #13#10);
  68.   for I := 0 to Length(Parts) - 1 do
  69.     OutputStrings.Add(Parts[I]);
  70. end;
  71.  
  72. function TVatlayerValidateObj.GetCompanyName: string;
  73. begin
  74.   Result := Self.CompanyName;
  75. end;
  76.  
  77. function TVatlayerValidateObj.GetCompanyCity: string;
  78. var
  79.   Parsing: TStringList;
  80. begin
  81.   Parsing := TStringList.Create;
  82.   Split(AnsiString(Self.CompanyAddress), Parsing);
  83.   if Parsing.Count > 0 then
  84.   begin
  85.     if Parsing.Count = 2 then
  86.       Result := Parsing[1];
  87.     if Parsing.Count = 3 then
  88.       Result := Parsing[2];
  89.   end;
  90. end;
  91.  
  92. function TVatlayerValidateObj.GetCompanyAddress: string;
  93. var
  94.   Parsing: TStringList;
  95. begin
  96.   Parsing := TStringList.Create;
  97.   Split(AnsiString(Self.CompanyAddress), Parsing);
  98.   if Parsing.Count > 0 then
  99.   begin
  100.     if Parsing.Count = 2 then
  101.       Result := Parsing[0];
  102.     if Parsing.Count = 3 then
  103.       Result := Parsing[0] + ', ' + Parsing[1];
  104.   end;
  105. end;
  106.  
  107. function TVatlayerValidateObj.GetCompanyZip: string;
  108. var
  109.   Parsing: TStringList;
  110. begin
  111.   Parsing := TStringList.Create;
  112.   Split(AnsiString(Self.CompanyAddress), Parsing);
  113.   if Parsing.Count > 0 then
  114.   begin
  115.     if Parsing.Count = 2 then
  116.       Result := Parsing[1];
  117.     if Parsing.Count = 3 then
  118.       Result := Parsing[2];
  119.     if AnsiPos(' ', Result) > 0 then
  120.     begin
  121.       if IsNumber(Result, AnsiPos(' ', Result) + 1) then
  122.       begin
  123.         Result := Result.Substring(0, AnsiPos(' ', Result) + 2);
  124.       end
  125.       else
  126.       begin
  127.         Result := Result.Substring(0, AnsiPos(' ', Result));
  128.       end;
  129.     end
  130.     else
  131.     begin
  132.       Result := '';
  133.     end;
  134.   end;
  135. end;
  136.  
  137. // TVatlayerAPI
  138.  
  139. function TVatlayerAPI.GetUrlContent(Url: string): string;
  140. var
  141.   IdHTTP1: TIdHTTP;
  142. begin
  143.   IdHTTP1 := TIdHTTP.Create;
  144.   Result := IdHTTP1.Get(Url);
  145.   IdHTTP1.Destroy;
  146. end;
  147.  
  148. function TVatlayerAPI.GetVatlayerValidateData(VatNumber: string): TJSONObject;
  149. var
  150.   VatlayerURLContent: string;
  151. begin
  152.   try
  153.     VatlayerURLContent := GetUrlContent(VATLAYER_BASE + VATLAYER_ENDPOINT_VALIDATE + '?' + 'access_key=' + VATLAYER_APIKEY + '&vat_number=' + VatNumber);
  154.     Result := TJSONObject.ParseJSONValue(VatlayerURLContent) as TJSONObject;
  155.     if Result = nil then
  156.       raise Exception.Create('Error parsing JSON');
  157.   except on E: Exception do
  158.     ShowMessage('Error VatlayerAPI:' + sLineBreak + E.ClassName + sLineBreak + E.Message);
  159.   end;
  160. end;
  161.  
  162. function TVatlayerAPI.GetVatInfo(VatNumber: string): TVatlayerValidateObj;
  163. var
  164.   JsonObj: TJSONObject;
  165. begin
  166.   Result := TVatlayerValidateObj.Create;
  167.  
  168.   JsonObj := GetVatlayerValidateData(VatNumber);
  169.  
  170.   if Assigned(JsonObj.GetValue('error')) then
  171.   begin
  172.     ShowMessage((JsonObj.GetValue('error') as TJSONObject).GetValue('info').Value);
  173.   end
  174.   else
  175.   begin
  176.     Result.Valid := StrToBool(JsonObj.GetValue('valid').Value);
  177.     Result.Database := JsonObj.GetValue('database').Value;
  178.     Result.FormatValid := StrToBool(JsonObj.GetValue('format_valid').Value);
  179.     Result.Query := JsonObj.GetValue('query').Value;
  180.     Result.CountryCode := JsonObj.GetValue('country_code').Value;
  181.     Result.VatNumber := JsonObj.GetValue('vat_number').Value;
  182.     Result.CompanyName := JsonObj.GetValue('company_name').Value;
  183.     Result.CompanyAddress := JsonObj.GetValue('company_address').Value;
  184.   end;
  185. end;
  186.  
  187. end.
  188.  
Strength Through Unity, Unity Through Faith.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: