BStudio Plugin — B2B & Integracje

NIP/GUS Validator

Wersja: 1.0.0 Autor: Biegun.Studio Wymaga: WordPress 5.9+, WooCommerce 6.0+, PHP 7.2+, PHP SOAP

Walidacja NIP i automatyczne pobieranie danych firmy z API GUS (BIR1) w kasie WooCommerce. Autouzupełnienie adresu, weryfikacja aktywności VAT (Biała Lista MF), cache transient 24h.

Jak to działa?

Wtyczka dodaje pole NIP do sekcji billing w kasie WooCommerce. Klient klika przycisk Sprawdź — JS wysyła żądanie AJAX, które po stronie PHP weryfikuje sumę kontrolną NIP, odpytuje API GUS BIR1 (SOAP) o dane podmiotu, opcjonalnie sprawdza status VAT w Białej Liście MF, a następnie zwraca dane do formularza. Wyniki API są cachowane w WordPress transients (GUS: 24h, MF: 6h).

Wymagania wstępne

Brak PHP SOAP? Wtyczka wyświetli komunikat w panelu admina. Skontaktuj się z hostingiem w celu włączenia rozszerzenia php-soap.

Instalacja

  1. Skopiuj folder bstudio-nip-gus do /wp-content/plugins/.
  2. Aktywuj wtyczkę w panelu WordPress.
  3. Przejdź do WooCommerce → NIP/GUS Validator.
  4. Wpisz klucz API GUS, wybierz środowisko (testowe / produkcyjne), skonfiguruj opcje.
  5. Kliknij Zapisz ustawienia — pole NIP pojawi się automatycznie w kasie.

Konfiguracja

OpcjaOpis
Klucz API GUSKlucz do API GUS BIR1. Jeśli puste — używany klucz demo (środowisko testowe).
Środowiskotestowe = klucz demo, ograniczone dane. produkcyjne = pełny dostęp, wymagany własny klucz.
NIP wymaganyWymusza podanie NIP przed złożeniem zamówienia.
AutouzupełnianiePo weryfikacji NIP automatycznie wypełnia pola: Firma, Adres, Miasto, Kod pocztowy.
Pozycja pola NIPGdzie w formularzu billing ma pojawić się pole NIP.
Weryfikacja VAT (MF)Po kliknięciu „Sprawdź" dodatkowo weryfikuje status VAT w Białej Liście MF.
Pokaż NIP gdy poleKlucz pola z Flexible Checkout (np. checkbox). Jeśli puste — NIP zawsze widoczny.
= wartośćWartość pola warunkowego wyzwalająca widoczność NIP (zazwyczaj 1).

Pole NIP w kasie

Pole billing_nip jest dodawane do sekcji billing. Klucz przechowywany w metadanych zamówienia jako _billing_nip (surowy) i _billing_nip_formatted (format XXX-XX-XX-XXX).

Walidacja

API GUS BIR1

Komunikacja SOAP z serwisem GUS BIR1 v1.1. Klasa BNG_GUS_API obsługuje logowanie sesją SID, cookie sid, wyszukiwanie podmiotu po NIP i wylogowanie.

Dane pobierane z GUS

Cache GUS: Wyniki cachowane przez 24h. Klucz transient: bng_gus_{md5(nip+env)}. Zmiana środowiska (test/prod) generuje nowy klucz cache.

Biała Lista MF

REST API Ministerstwa Finansów: https://wl-api.mf.gov.pl/api/search/nip/{nip}?date={YYYY-MM-DD}. Weryfikacja sprawdza pole result.subject.statusVat — wartość Czynny oznacza aktywnego podatnika VAT.

Cache MF: Wyniki cachowane przez 6h. Klucz: bng_mf_{nip}_{data}. Zmiana daty powoduje nowe zapytanie (wymagana aktualność danych dziennych).

Integracja z Flexible Checkout

Jeśli masz wtyczkę BStudio Flexible Checkout i dodałeś pole np. Chcę fakturę VAT (checkbox, klucz np. billing_invoice), wpisz ten klucz w ustawieniu Pokaż NIP gdy pole, a wartość ustaw na 1.

Pole NIP będzie ukryte domyślnie i pojawi się dopiero po zaznaczeniu checkboxa. Logika działa po stronie JS (real-time show/hide) bez przeładowania strony.

Dane w zamówieniu

Meta keyZawartość
_billing_nipNIP — tylko cyfry (10 znaków)
_billing_nip_formattedNIP w formacie XXX-XX-XX-XXX
_bng_gus_nameNazwa firmy z GUS (jeśli zweryfikowano)
_bng_gus_streetUlica i numer z GUS
_bng_gus_cityMiejscowość z GUS
_bng_gus_postcodeKod pocztowy z GUS

NIP wyświetlany jest w panelu admina pod danymi adresowymi zamówienia (hook woocommerce_admin_order_data_after_billing_address).

FAQ

Czy wtyczka działa bez klucza API GUS?

Tak — w trybie testowym używany jest klucz demo GUS (abcde12345abcde12345). Dane testowe są ograniczone i nie zawierają pełnych danych produkcyjnych. Do pracy produkcyjnej wymagany jest własny klucz z systemu GUS.

Co się dzieje gdy GUS jest niedostępny?

Wtyczka zwraca błąd z komunikatem. Klient może mimo to złożyć zamówienie — weryfikacja GUS jest opcjonalna (walidacja obowiązkowa to tylko suma kontrolna NIP).

Czy NIP jest sprawdzany po stronie serwera przy składaniu zamówienia?

Tak — hook woocommerce_checkout_process weryfikuje sumę kontrolną. Zapytanie do GUS nie jest wykonywane przy składaniu zamówienia (tylko przy kliknięciu „Sprawdź" przez klienta).

Co się dzieje z danymi po odinstalowaniu?

Plik uninstall.php usuwa opcję bng_settings oraz wszystkie transients z prefiksami bng_gus_ i bng_mf_. Metadane zamówień (_billing_nip itd.) pozostają — są częścią historii zamówień.

Struktura plików

bstudio-nip-gus/
├── bstudio-nip-gus.php ← Bootstrap, HPOS compat, WC check
├── uninstall.php ← Usuwa opcje i transients
├── includes/
│ ├── class-bng-validator.php ← NIP checksum, format, clean
│ ├── class-bng-gus-api.php ← SOAP BIR1, cache 24h
│ ├── class-bng-mf-api.php ← Biała Lista MF REST, cache 6h
│ └── class-bng-checkout.php ← Pole WC, walidacja, AJAX, enqueue
├── admin/
│ ├── class-bng-admin.php ← Submenu WC, save settings
│ ├── views/
│ │ └── settings.php ← Formularz ustawień
│ └── assets/
│ └── bng-admin.css
└── public/assets/
    ├── bng-checkout.css ← NIP row, verify btn, result box, VAT badges
    └── bng-checkout.js ← AJAX, autofill, conditional, init on updated_checkout

Dane techniczne

ParametrWartość
PHP SOAPWymagane — class_exists('SoapClient') sprawdzane przy init
GUS WSDL (test)UslugaBIRzewnPubl-ver11-test.wsdl
GUS WSDL (prod)UslugaBIRzewnPubl-ver11-prod.wsdl
Cache GUS_transient_bng_gus_{hash} — 24h
Cache MF_transient_bng_mf_{nip}_{date} — 6h
AJAX actionbng_verify_nip (auth + nopriv)
Order meta_billing_nip, _billing_nip_formatted, _bng_gus_*
Settings optionbng_settings w wp_options
JS globalbngData (via wp_localize_script)
HPOSKompatybilny — FeaturesUtil::declare_compatibility

Wsparcie i zgłoszenia

Masz pytanie, napotkałeś problem albo chcesz rozwinąć to rozwiązanie pod swój sklep? Pomożemy.

Pomoc techniczna

Problemy z instalacją, konfiguracją lub działaniem wtyczki — opisz zgłoszenie, a wrócimy z rozwiązaniem.

Zgłoszenie (ticket)

Wyślij e-mail na shop@biegun.studio. W temacie podaj nazwę wtyczki i krótki opis. Dołącz wersje WordPressa, WooCommerce i PHP oraz kroki odtworzenia problemu.

Rozwój i modyfikacje

Potrzebujesz dodatkowej funkcji albo integracji? Realizujemy rozszerzenia i wdrożenia na zamówienie — napisz na shop@biegun.studio.

Pełna oferta wtyczek: biegun.studio/sklep