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.

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

 


Podobne artykuły

Komentarze

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

  1. Krzysztof napisał(a):

    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 napisał(a):

      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 napisał(a):

      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 napisał(a):

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

  2. Dominik napisał(a):

    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 napisał(a):

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

    • Dominik napisał(a):

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

    • Tomasz Maciejewski Tomasz Maciejewski napisał(a):

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

    • Dominik napisał(a):

      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 napisał(a):

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

    • Dominik napisał(a):

      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 napisał(a):

      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 napisał(a):

    Dzięki kolego, jesteś WIELKI, pozdrawiam!

  4. Justyn napisał(a):

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

  5. PZ napisał(a):

    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 napisał(a):

      Zgadza się – ręcznie przygotowuję „paczkę” do usługi.
      Proponowałbym podejrzeć Fiddlerem co jest wysyłane.

    • PZ napisał(a):

      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 napisał(a):

      Logowanie jest na standardowego użytkownika?

  6. PZ napisał(a):

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

    • Tomasz Maciejewski Tomasz Maciejewski napisał(a):

      Ja loguję się na taki klucz „aaaaaabbbbbcccccdddd” i otrzymuję ID sesji. Może tu gdzieś masz problem.

    • PZ napisał(a):

      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ł napisał(a):

    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 napisał(a):

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

  8. Ogg napisał(a):

    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 napisał(a):

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

  9. Ogg napisał(a):

    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 napisał(a):

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

  10. Dominik napisał(a):

    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 napisał(a):

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

  11. JJ napisał(a):

    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 napisał(a):

    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 napisał(a):

      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 napisał(a):

    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 email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *