Pobranie danych kontrahenta na podstawie nru NIP jest przydatną funkcjonalnością w celu weryfikacji lub automatyzacji wprowadzanych danych w programach typu ERP.

Oferuję rozwiązania oparte o API GUSu (wykonaną zgodnie z zalecaną architekturą przez GUS). Wniosek o klucz testowy lub produkcyjny w GUS jest bezpłatny (odpowiedź z GUS jest błyskawiczna). 

Oferuję rozwiązanie w dwóch wariantach:

  • Biblioteka DLL + przykÅ‚adowa aplikacja w Windows Forms
  • RozwiÄ…zanie w oparciu o serwis poÅ›redniczÄ…cy (skrypt PHP + aplikacja kliencka w Delphi/C#)

Zainteresowanym mogę podesłać link do dema w PHP.

Aktualizacja 2018-09-06

Oferuję też wersję dla podmiotów publicznych ADM.

GUS WSDL

Najlepszym i obecnie zalecanym rozwiÄ…zaniem jest postawienie WebService na swoim serwerze. UsÅ‚uga ta bÄ™dzie sÅ‚użyÅ‚a jako warstwa poÅ›rednia dla klientów koÅ„cowych. Zapobiega to “zaszywaniu” swojego klucza API w aplikacjach klienckich i pozwala na kontrolÄ™ nad iloÅ›ciÄ… wysyÅ‚anych zapytaÅ„.

Poniższy schemat przedstawia uproszczony schemat takiej architektury. Własny WS (zlokalizowany na naszym serwerze) komunikuje się z API GUSu. Żądania do naszego WS z poziomu aplikacji klienckiej są realizowane przez protokół HTTP (zwykłe wywołanie typu GET z parametrem NIP lub REGON). Serwis odpowie w formacie JSON (brak wyniku lub dane w formacie obiektu JSON). Taka forma wywołania/odpowiedzi pozwala na łatwe skonsumowanie tego serwisu nawet w egzotycznych językach/środowiskach.

 

GUS WSDL

Wymagania:

  • Uzyskany klucz testowy (dane wrażliwe sÄ… zamazywane w odpowiedzi) lub docelowo produkcyjny. MogÄ™ pomóc z wnioskiem o uzyskanie klucza API
  • Hosting z PHP >= 5.3

Pakiet zawiera:

  • Skrypty PHP gotowe do wrzucenia na hosting (tylko uzupeÅ‚nić klucz)
  • PrzykÅ‚adowa aplikacja w Delphi lub C#

GUS DLL

Alternatywnym rozwiązaniem jest biblioteka napisana w C#, która obsługuje wszystkie zdarzenia związane z komunikacją z GUS. Należy wtedy zaszyć klucz API bezpośrednio w aplikacji/bazie danych. Klient końcowy musi wtedy wnioskować o klucz produkcyjny do GUSu.

Wystawiam FV.

Inne środowiska programistyczne

JeÅ›li potrzebujesz bibliotekÄ™ na innÄ… platformÄ™ lub funkcjonalnoÅ›ci której nie ma – mogÄ™ to wykonać. Również inne tego typu parsery. PrzeÅ›lij specyfikacjÄ™ projektu – biuro@largosystem.pl

ARCHIWUM  2016-10-25

Z uwagi na to, że GUS obfuskuje caÅ‚Ä… transmisjÄ™ danych po dostÄ™pie publicznym – nie wspieram już tego rozwiÄ…zania.

GUS udostępnił nową wyszukiwarkę podmiotów gospodarczych, która opiera się o webservice i komunikację poprzez JSON. Stara wyszukiwarka nadal funkcjonuje, ale dane już nie są aktualizowane (stan bazy danych na 2014-11-07). Napisałem odpowiednią bibliotekę w języku C# oraz porty na inne języki, które współpracują z nową wersją wyszukiwarki.

 Aktualizacja 2016-01-27

Wygląda na to, że captcha została zlikwidowana. Oto treść wiadomości, którą otrzymałem.

Captcha nie została usunięta z aplikacji WEBowej, zmieniły się zasady jej działania. Weryfikacja kodu captcha będzie wymagana dla adresów IP generujących dużą ilość zapytań.

Główne zmiany

Komunikacja opiera się poprzez JSON z udostępnionym webservice. Nie trzeba już uzupełniać cookies jak w poprzedniej wersji, lecz wysłać odpowiednie żądania z parametrami. W odpowiedzi otrzymujemy również wiadomość w formacie JSON.

Udostępnienie kodu

Zainteresowane osoby/firmy proszę o kontakt. Oferuję bibliotekę w dwóch wariantach: w tańszej wersji bez wsparcia lub ze wsparciem (1 rok). Pakiet zawiera:

  • peÅ‚ny kod źródÅ‚owy biblioteki
  • peÅ‚ny kod źródÅ‚owy przykÅ‚adowego projektu

Mogę wystawić FV. Poniżej przedstawiam galerię zdjęć przykładowego programu wykorzystującego bibliotekę.

Funkcjonalność biblioteki

  • Wyszukiwanie podmiotu po NIP, REGON itd.
  • Informacja o stanie bazy danych
  • Automatyczne pobranie wszystkich dostÄ™pnych raportów (w formacie klucz -> wartość)

Biblioteka udostępnia wszystkie pomocne zdarzenia (events) takie jak: zalogowany, captcha (pobrana / prawidłowa / nieprawidłowa), wyszukiwanie (pobrano raporty / brak wyników). Projekt skompilowany jest na Visual Studio Community 2013 (.NET 4.0). Istnieje możliwość modyfikacji kodu aby był kompatybilny z .NET 2.0.

Dostępne platformy

  • C# .NET 3.5/4.0 (możliwość przeróbki dla wersji 2.0)
  • Delphi XE+
  • CBuilder XE+
  • PHP

 


Strona Internetowa

Potrzebujesz Å‚adnej strony internetowej? Zobacz demo na: tej stronie strona internetowa


Podobne artykuły

Komentarze

34 odpowiedzi na “GUS – nowa wyszukiwarka REGON w C#, Delphi, PHP”

  1. Krzysztof pisze:

    Panie Tomku.
    Proszę o pomoc, mam dodaną referencje do WSDL, wszystko zadeklarowane, widać metody.
    LogujÄ™ siÄ™ używajÄ…c zaloguj, podajÄ…c nadany przez GUS klucz użytkownika. zwraca mi 20 znakowy string. Teraz jak chcÄ™ pobrać captcha, zwraca -1, sesja wygasÅ‚a. ProszÄ™ o “maÅ‚e” nakierowanie co robiÄ™ źle, bo oczywiÅ›cie Panowie z GuS nie raczÄ… odpowiadać na maile ;).

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Niestety, ale nie testowałem tej metody. Rozwiązanie mam oparte na własnych żądaniach POST z JSON i bez specjalnego dostępu ze strony GUS. Po zalogowaniu się i otrzymaniu SIDa, w każdym nagłówku należy go przesyłać. Captchę bez problemu pobieram bez dodatkowych parametrów.

    • Krzysztof pisze:

      Chyba mnie Pan nakierował. Czyli pobrać sid ich metodą a później opakować to ręcznie dzięki POST i JSON?

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Jeśli masz zaimportowaną usługę to raczej nie tu leży problem, aby coś samemu opakowywać dodatkowo.

  2. Dominik pisze:

    Witam, korzystam z HttpRequesta, ale przy pierwszym połączeniu z index.aspx nie otrzymuję cookies, wiesz może dlaczego? Mam ustawiony cookiecontainer, zabrakło czegoś w headerze?

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      W nowej wersji już nie działamy na cookies lecz na JSON. Chyba, że masz na myśli starą wersję wyszukiwarki?

    • Dominik pisze:

      Rozumiem, ale sprawdzałem Fiddlerem, że jednak cookie jest zapisywane, mam rozumieć, że nie jest ono niezbędne?

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Nie trzeba dbać o cookies. Jedynie SID trzeba przesyłać w nagłówku żądania.

    • Dominik pisze:

      Mam jeszcze jedno pytanie, jeżeli mam już w odpowiedzi Captche to jak tą odpowiedź przerobić na obrazek, zwykłym Serializerem, czy potrzebuje jakiejś konwersji?

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Captcha jest kodowana Base64. W necie jest pełno przykładów: base64 to image

    • Dominik pisze:

      A jak string odebrany przez httprequesta przerobić na base64 to mi się coś psuje, nie jest to jakoś kodowane, albo szyfrowane?
      Mam takie coÅ›:
      using (var reader = new StreamReader(response.GetResponseStream()))
      {
      JavaScriptSerializer js = new JavaScriptSerializer();
      var objText = EncodeTo64(reader.ReadToEnd());
      Base64StringToBitmap(objText);
      captcha = (Image)js.Deserialize(objText, typeof(Image));
      }
      objText wypluwa mi zupełnie co innego niż to co pokazuje fiddler

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Odpowiedzi z serwera są kompresowane. Musisz ustawić automatyczną dekompresję w HttpWebRequest. Odpowiedź wtedy będzie JSONem i w tablicy będziesz miał base64 captchy

  3. Dominik pisze:

    Dzięki kolego, jesteś WIELKI, pozdrawiam!

  4. Justyn pisze:

    Nowy kod Pana Tomka działa poprawnie.
    Polecam !!! Duża oszczędność pracy.

  5. PZ pisze:

    Witam

    Z tego co wyczytaÅ‚em biblioteka ta korzysta z HTTP i JSON, natomiast ja próbujÄ™ oprzeć siÄ™ o WSDL. Niestety, ale po uprzednim zalogowaniu podczas pobierania captchy dostajÄ™ informacje, że sesja wygasÅ‚a… funkcja PobierzCaptcha nie przyjmuje parametrów, zakÅ‚adaÅ‚em, że obiekt przechowuje id sesji i przesyÅ‚a je sam, ale chyba coÅ› tu musi nie grać, skoro przy pierwszym requeÅ›cie po logowaniu sesja wygasÅ‚a.

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Zgadza siÄ™ – rÄ™cznie przygotowujÄ™ “paczkÄ™” do usÅ‚ugi.
      Proponowałbym podejrzeć Fiddlerem co jest wysyłane.

    • PZ pisze:

      Przyznam, że niezbyt widzi mi siÄ™ budowanie tego w oparciu o HTTP, kiedy mam pod rÄ™kÄ… rozwiÄ…zanie teoretycznie dużo prostsze. Tym bardziej, że pracujÄ™ z desktopowym softem. Cóż, chyba pozostaje mi poczekać na odpowiedź z GUSu odnoÅ›nie tego, co robiÄ™ nie tak przy pobieraniu tej captch’y ; )

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Logowanie jest na standardowego użytkownika?

  6. PZ pisze:

    Standardowego? ; ) Są jeszcze jacyś inni? :> Póki co dostęp jest testowy, klucz też zapewne testowy.

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Ja logujÄ™ siÄ™ na taki klucz “aaaaaabbbbbcccccdddd” i otrzymujÄ™ ID sesji. Może tu gdzieÅ› masz problem.

    • PZ pisze:

      ja dostałem mailowo klucz z GUSu, nieco inny, ID sesji także otrzymuje, zapisuje je, bo jest potrzebne do wylogowania ;> wylogowanie nie stanowi problemu.

  7. Paweł pisze:

    Ja też męczę się z panami z GUS. Telefonicznie niewiele można się od nich dowiedzieć, na maile odpiszą raz w tygodniu (czasami).
    Ostatnio dostałem info, że SID należy przeysłać nagłówkiem HTTP, a nie SOAP, ale nawet po tym ciąglę otrzymuję błąd 500.

    Poniżej treść mojego żadania, jeśli ktoś moze pomóc lub podpowiedzieć, bedę bardzo wdzięczny

    POST /wsBIR/UslugaBIRzewnPubl.svc HTTP/1.1
    Host: wyszukiwarkaregontest.stat.gov.pl
    Connection: Keep-Alive
    User-Agent: PHP-SOAP/5.4.32
    Content-Type: application/soap+xml; charset=utf-8; action=”http://CIS/BIR/2014/07/IUslugaBIR/PobierzCaptcha”
    Content-Length: 437
    Sid: 4p9p2g6d4f7v3f8t4c2r

    <?xml version="1.0" encoding="UTF-8"?>
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope&quot; xmlns:ns1="http://CIS/BIR/2014/07&quot; xmlns:ns2="http://www.w3.org/2005/08/addressing"&gt;
    <env:Header>
    <ns2:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</ns2:Action&gt;
    <ns2:To>https://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</ns2:To&gt;
    </env:Header>
    <env:Body>
    <ns1:PobierzCaptcha/>
    </env:Body>
    </env:Envelope>

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Przetestowałem. Należy dodać sid do nagłówka HTTP. Wtedy zwraca base64 captchy zamiast -1 : )

  8. Ogg pisze:

    Po bÅ‚Ä…dzeniu po doku i kodzie (generowane proxy) trafiÅ‚em na problem jak wy – a dokÅ‚adniej – ciężko jest dodać wÅ‚asny header do HttpWebRequesta, który leci po proxy.

    Jedynym rozwiÄ…zaniem zdaje siÄ™ być komunikacja “rÄ™czna” z użyciem JSON

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Dodanie sida do nagłówka nie rozwiązuje problemu?

  9. Ogg pisze:

    Nie udało mi się przekazać sida w Header. A doku przeczytałem za późno. Btw: obecnie na jednej captcha juz 20 zapytań można wykonać.

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Dzięki za zwrócenie uwagi. Mi wygasła sesja po 25 zapytaniach.

  10. Dominik pisze:

    Witam, mam pewien problem, otóż wszystko działa w porządku, jeżeli za pierwszym razem uruchamiam swój program i pobieram dane z GUSU, natomiast jeżeli otworzę okienko odpowiedzialne za to po raz kolejny, to nie chce mi pobrać captchy ani nawet się zalogować, co ciekawe jeżeli mam uruchomionego fiddlera to wszystko działa bez zarzutów, czyżbym zapomniał o czymś w nagłówku? Analizowałem wszystko i jedyną rzeczą której nie miałem a miał fiddler były Cookie, ale po dodaniu tego, błąd nie ustąpił, proszę o nakierowanie na rozwiązanie

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Trudno stwierdzić bez kodu. Sprawdziłem i nawiązywanie wielu sesji jest możliwe.

  11. JJ pisze:

    Witam, Panie Tomaszu mam gorącą prośbę, przygotowuje małą aplikację która ma uwzględniać pobieranie danych z GUS i nie rozumiem instrukcji z gusu. dostałem linki do plików. dostałem klucz.

    w przykładach jest wykorzystana klasa: UslugaBIRpubl . nie jestem pewien jak to funkcjonuje. czy klasę tę mam sam zbudować na podstawie plików xsd. Próbowałem wg opisów wygenerować klasę za pomocą narzędzia xsd.exe ale dostaje za każdym razem error:

    C:\xxx>xsd UslugaBIRzewnPubl.xsd /classes

    Microsoft (R) Xml Schemas/DataTypes support utility

    [Microsoft (R) .NET Framework, Version 4.0.30319.17929]

    Copyright (C) Microsoft Corporation. All rights reserved.

    Schema validation warning: Głównym elementem schematu W3C XML powinien być element <schema>, natomiast jego przestrzenią nazw powinna być przestrzeń http://www.w3.org/2001/XMLSchema. Line 2, position 4.

    Error: Schema c:\xxx\uslugabirzewnpubl.xsd could not be validated.

     

    I teraz nie wiem czy ja coś źle robię czy coś jest z plikami nie tak. Czy xsd powinien wygenerować klasy z implementacją metod, które są opisane w pdfie gusowskim np metoda DaneSzukaj ?

    Dziękuję za pomoc :)

    PS: jakie są ceny biblioteki dla .net  z wsparciem a jakie bez ? co daje wsparcie ?

     

    Pozdrawiam

     

  12. Krzysztof pisze:

    Panie Tomku mam takie pytanie. Tworzę aplikację w C#, zrobiłem integrację z GUS, funkcja DaneSzukaj pokazuje mi wszystko w textboxie i jest ok. Ale przy próbie użyciu funkcji

    DanePobierzPelnyRaport(“NUMER REGON”, “PublDaneRaportFizycznaOsoba”);

    nie jest nic pokazywane w textboxie, czy może Pan nakierować co może być przyczyną?

    • Tomasz Maciejewski Tomasz Maciejewski pisze:

      Jedna z dwóch możliwości:
      1) SID nie jest przesyłany w żądaniu HTTP
      2) Numer regon jest dla podmiotu prawnego

  13. Krzysztof pisze:

    po drobnych modyfikacjach otrzymuję komunikat błędu 5 (brak uprawień) co może być nie tak?

    kod dostępowy otrzymałem z gus-u

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *