Sari la conținut
WEBLURE

WooCommerce · Facturare

WooCommerce: completarea datelor firmei după CUI

Clientul scrie CUI-ul, iar denumirea și adresa firmei se completează singure. Se poate face cu serviciul public ANAF, dar cu limite de respectat și cu o verificare a datelor.

  • Serviciul public ANAF v9
  • Cerere POST în JSON
  • Limite: 100 CUI, 1 cerere/s
  • Cache
  • Completare câmpuri

Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole

Vrei să ți-o facem noi?

Doar două câmpuri. Răspundem în aceeași zi lucrătoare, cu ofertă fixă.

+ Telefon și detalii (opțional)

Răspuns rapid

Serviciul public ANAF pentru plătitori de TVA (v9) primește un POST cu Content-Type application/json, la https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva, cu un array de obiecte {cui, data}. Limite documentate: maximum 100 de CUI-uri pe cerere și o cerere pe secundă per client. Răspunsul conține în date_generale denumirea, adresa și numărul de înregistrare, iar în inregistrare_scop_Tva starea de plătitor de TVA. Apelul se face pe server (nu din browser), cu cache, apoi completezi câmpurile din checkout.

Ce ai nevoie

  • Câmpurile CUI, denumire și adresă la checkout
  • Acces la tema copil
  • Un mediu de test
  • Logica de gestionare a erorilor

Pașii, pe rând

  1. 1Pregătește câmpurile din checkoutAi nevoie de câmpuri pentru CUI, denumirea firmei și adresă. Vezi ghidul despre câmpurile pentru persoane juridice.
  2. 2Normalizează CUI-ulElimină spațiile și prefixul „RO” înainte de interogare; serviciul primește valoarea numerică a CUI-ului.
  3. 3Construiește cerereaPOST către serviciul v9 cu Content-Type application/json și un array JSON care conține pentru fiecare CUI un obiect cu „cui” (numeric) și „data” (data verificării, în format AAAA-LL-ZZ).
  4. 4Respectă limiteleDocumentația ANAF precizează maximum 100 de CUI-uri pe cerere și o singură cerere pe secundă per client. La checkout trimiți un singur CUI; adaugă o pauză sau cache ca să nu depășești limita.
  5. 5Citește răspunsulÎn „found” găsești datele; în „notFound”, CUI-urile fără rezultat. Din date_generale iei „denumire”, „adresa”, „nrRegCom”; din inregistrare_scop_Tva citești „scpTVA” (dacă firma e plătitoare de TVA).
  6. 6Apelează de pe serverFă cererea printr-un endpoint AJAX propriu, nu direct din browser. Așa nu expui logica și poți pune cache pentru fiecare CUI.
  7. 7Completează câmpurile, dar lasă clientul să le corectezeDatele ANAF sunt orientative: clientul trebuie să poată modifica denumirea și adresa. Tratează erorile (serviciu indisponibil, CUI negăsit) cu un mesaj clar.

Interogare ANAF pe server + endpoint AJAX (schelet)

php
function wl_anaf_cui($cui) {
    $cui = preg_replace('/\D/', '', strtoupper($cui));
    if (!$cui) {
        return null;
    }
    $cheie = 'wl_anaf_' . $cui;
    if (($cache = get_transient($cheie)) !== false) {
        return $cache;
    }
    $r = wp_remote_post('https://webservicesp.anaf.ro/api/PlatitorTvaRest/v9/tva', [
        'timeout' => 10,
        'headers' => ['Content-Type' => 'application/json'],
        'body'    => wp_json_encode([['cui' => (int) $cui, 'data' => wp_date('Y-m-d')]]),
    ]);
    if (is_wp_error($r) || wp_remote_retrieve_response_code($r) !== 200) {
        return null;
    }
    $j = json_decode(wp_remote_retrieve_body($r), true);
    $f = $j['found'][0] ?? null;
    if (!$f) {
        return null;
    }
    $out = [
        'denumire' => $f['date_generale']['denumire'] ?? '',
        'adresa'   => $f['date_generale']['adresa'] ?? '',
        'regcom'   => $f['date_generale']['nrRegCom'] ?? '',
        'tva'      => !empty($f['inregistrare_scop_Tva']['scpTVA']),
    ];
    set_transient($cheie, $out, DAY_IN_SECONDS);
    return $out;
}

add_action('wp_ajax_wl_cui', 'wl_ajax_cui');
add_action('wp_ajax_nopriv_wl_cui', 'wl_ajax_cui');
function wl_ajax_cui() {
    check_ajax_referer('wl_cui', 'nonce');
    $d = wl_anaf_cui(sanitize_text_field(wp_unslash($_POST['cui'] ?? '')));
    $d ? wp_send_json_success($d) : wp_send_json_error('CUI negăsit sau serviciul e indisponibil.');
}

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Câmpurile din răspuns sunt cele din documentația ANAF v9; verifică documentația oficială înainte de lansare, pentru că structura se poate schimba. Adaugă limitare de cereri (1/s) dacă ai trafic mare.

Nu vrei să te complici sau ai rămas blocat? Scrie-ne și o facem noi.

Scrie-ne pe WhatsAppCere ofertă

Mai multe detalii

Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
1

Răspunsul e gol sau „notFound”

De ce: CUI-ul nu există sau a fost scris greșit (litere, prefix, cifre în plus).

Ce faci: Normalizează CUI-ul și afișează un mesaj ca să-l corecteze clientul.

2

Cererile sunt refuzate

De ce: Limita de o cerere pe secundă per client a fost depășită.

Ce faci: Adaugă cache pe CUI și o pauză între cereri.

3

Adresa din răspuns diferă de adresa de facturare dorită

De ce: Serviciul oferă adresa sediului social și a domiciliului fiscal; clientul poate dori alta.

Ce faci: Lasă câmpurile editabile și completează-le doar ca sugestie.

Întrebări frecvente4 răspunsuri
Serviciul ANAF e gratuit?

Este un serviciu web public, cu limite documentate (100 de CUI-uri pe cerere, o cerere pe secundă). Citește documentația oficială pentru condițiile curente.

Pot apela serviciul direct din browser?

Nu e recomandat. Apelează-l de pe server, cu cache, ca să controlezi limitele și erorile.

Datele sunt garantat corecte?

Nu. Sunt datele din evidențele publice la data interogată; lasă clientul să le verifice și să le modifice.

Vă ocupați de implementare?

Da, cu cache, gestionarea erorilor și legătura cu facturarea. Cere ofertă.

Subiecte acoperite pe această pagină

  • completare date firmă după CUI WooCommerce
  • API ANAF CUI WooCommerce
  • verificare CUI checkout
  • PlatitorTvaRest v9
  • autocompletare firmă CUI
  • date firmă ANAF checkout