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
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
- 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.
- 2Normalizează CUI-ulElimină spațiile și prefixul „RO” înainte de interogare; serviciul primește valoarea numerică a CUI-ului.
- 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).
- 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.
- 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).
- 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.
- 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)
phpfunction 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.
Mai multe detalii
Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
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.
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.
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
Ghiduri apropiate
- WooCommerce: integrare SmartBill
- WooCommerce: integrare Oblio
- WooCommerce: facturile nu se generează automat
- WooCommerce: configurarea câmpurilor pentru persoane juridice
- WooCommerce: diferențe de total între comandă și factură
- WooCommerce: generarea facturii de stornare la retur
- WooCommerce: câmpuri pentru persoane juridice
- Toate ghidurile
Surse și verificare
Verificat pe 5 noiembrie 2026. Denumirile din setări și pașii pot diferi între versiuni.
