Depanare și pregătire pentru lansare
Pornește de la simptom, izolează stratul care eșuează și păstrează dovezile tehnice relevante. Nu activa logarea extinsă permanent și nu publica datele clienților sau cheia API.
Metoda de diagnostic
- Reproduce o singură dată. Notează comanda, ora, acțiunea și mesajul exact.
- Identifică stratul. Browser, WordPress AJAX/REST, baza locală, Action Scheduler sau Ordova API.
- Colectează dovada minimă. Status HTTP, răspuns JSON, eroare PHP și intrarea relevantă din scheduler.
- Testează componenta izolată. De exemplu, tracking manual înainte de cron sau scannerul într-un editor text.
- Aplică și retestează întregul flux. O rezolvare locală nu este suficientă dacă schimbă alt pas.
Folosește comenzi de test și anonimizează nume, email, telefon, adresă, CUI, IBAN, cheia API și conținutul documentelor.
Conexiunea Ordova API
| Simptom | Verificare | Acțiune |
|---|---|---|
| Timeout cURL 28 | DNS și conexiune outbound din serverul WordPress. | Verifică rezolvarea domeniului, firewallul, IPv4/IPv6 și proxy-ul hostingului. |
| 401 API key invalid | Antetul X-Ordova-Key și cheia salvată. | Reintrodu cheia, salvează și validează din nou. |
| Răspuns JSON cu parsererror | Caractere înainte de JSON. | Caută BOM sau output neașteptat în fișierele PHP. |
| Domeniul duce la IP vechi | DNS public și cache DNS al hostingului. | Actualizează DNS, elimină override-uri hosts și așteaptă propagarea TTL. |
Testul contului folosește https://api.ordova.ro/account/me. Pluginul nu trebuie să aibă IP-uri hardcodate.
Checkout, localități și tarife
Metoda nu apare
- Verifică zona de livrare WooCommerce și metoda Ordova din acea zonă.
- Confirmă că serviciul curierului este activ și localitatea are mapare suportată.
- Pentru locker, trebuie să existe lockere în județul și localitatea selectate.
- În modul unificat, curierul trebuie inclus explicit în configurația metodei.
Tarif zero sau curier lipsă
Activează debugul administrativ pentru răspunsul de tarif. Verifică localitatea canonică, ID-ul curierului, greutatea, rambursul, modul contract și tariful implicit. Un curier cu răspuns invalid nu trebuie prezentat automat ca „0 lei”.
Prețul unificat nu se schimbă
Confirmă că selectarea curierului actualizează sesiunea server-side și declanșează recalcularea Store API, fără reload și fără a modifica metoda selectată la locker.
AWB, etichete și tracking
| Problemă | Ce verifici |
|---|---|
| Eroare de securitate | Nonce-ul global, nonce-ul comenzii, permisiunea utilizatorului și un buton recreat după anulare. |
| Referință Sameday duplicată | Referința internă trebuie regenerată pentru noua încercare AWB. |
| Eticheta are format greșit | Opțiunea A4/A6/ROLA, endpointul cu query format și răspunsul API. |
| DPD nu generează eticheta | Răspunsul complet al endpointului label și tipul de conținut returnat. |
| Tracking manual merge, automat nu | Callbackuri înregistrate, lotul găsit, acțiunile per comandă și WP Cron. |
Pentru tracking, compară metadatele comenzii înainte și după butonul manual cu execuția automată. Dacă dispatcherul găsește comenzile, verifică dacă joburile individuale sunt programate și executate.
Facturare și storno
- Confirmă că pluginul oficial SmartBill sau Oblio este activ și configurat.
- Verifică statusul WooCommerce care declanșează factura.
- Caută acțiunea asincronă și retry-urile, nu doar nota comenzii.
- Pentru storno, verifică existența facturii originale și asocierea ei cu aceeași comandă.
- Dacă starea rămâne „în curs”, verifică lock-ul operației și ultima eroare administrativă.
Stabilește providerul și documentul original înainte de retry. Idempotency protejează integrarea, dar nu înlocuiește verificarea contabilă.
Camera și scanarea Pick & Pack
- Verifică HTTPS și permisiunea. Camera nu pornește pe origine nesecurizată în producție.
- Testează codul fizic. Claritate, contrast, dimensiune și format suportat.
- Testează identificatorul. Compară exact scanarea cu GTIN, barcode sau SKU din produs/variație.
- Verifică update-ul instant. Răspunsul AJAX/REST trebuie să actualizeze lista locală fără refresh.
- Testează reluarea. După refresh, serverul trebuie să returneze același progres.
Pentru un scanner USB/Bluetooth, deschide un editor text. Dacă apar caractere suplimentare, dubluri sau lipsește Enter, corectează profilul scannerului înainte de a testa pluginul.
Portalul și documentele de retur
| Simptom | Diagnostic |
|---|---|
| Comanda nu este găsită | Numărul, emailul, statusul eligibil și perioada de retur. |
| Voucherul nu trimite cererea | Rezoluția salvată, validarea pasului și erorile răspunsului AJAX. |
| Localitățile nu se încarcă | Dependența pluginului principal și nomenclatorul sincronizat. |
| AWB retur: „Tert invalid” | Datele pickup, maparea localității și regulile serviciului Sameday. |
| Deprecated strtotime(null) | Data opțională trebuie verificată înainte de formatare. |
| Storno nu apare | Provider detectat, factură originală, status retur și condițiile controlului. |
WP Cron și Action Scheduler
În WooCommerce > Status > Scheduled Actions, caută hookurile Ordova. O acțiune veche „eșuată, fără callback” poate proveni dintr-o versiune în care pluginul nu era încă încărcat; important este ca acțiunile curente să aibă callback și să se finalizeze.
ordova_tracking_update
ordova_pending_lockers_check
ordova_fetch_lockers
ordova_pickpack_cleanup_locks- Nu apela funcțiile Action Scheduler înainte de inițializarea stocării.
- Nu încărca traducerile WooCommerce înainte de hookul
init. - Verifică execuția reală a WP Cron, mai ales pe site-uri cu trafic redus.
- O durată de 300 secunde indică timeout sau blocaj și necesită logurile PHP/server/bază de date.
Debug sigur și temporar
Pe staging, poți activa jurnalul WordPress fără a afișa erorile clientului:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );- Reproduce problema, apoi oprește debuggingul extins.
- Nu loga PDF base64, payloaduri complete sau date personale în producție.
- Păstrează statusul HTTP, codul erorii, endpointul fără secrete și durata cererii.
- Șterge fișierele de test și endpointurile temporare înainte de lansare.
Checklist de lansare
- Backup complet și mediu de staging actualizat.
- WordPress, WooCommerce, PHP și toate cele trei module sunt compatibile.
- Nu există BOM, mojibake, output la activare sau notice-uri PHP.
- Conexiunea API, sincronizarea și cronurile funcționează.
- Checkout clasic și Blocks sunt testate pe desktop și mobil.
- Tarifele și metodele unificate păstrează selecția corectă.
- AWB, eticheta, anularea, regenerarea și trackingul au fost parcurse.
- Camera, scannerul, lock-ul și finalizarea Pick & Pack au fost testate.
- Returul complet, AWB-ul retur, emailul, voucherul și storno au fost testate.
- Rolurile, nonce-urile, accesul la documente și PII au fost verificate.
- Cache-ul este golit și asseturile au versiuni noi.
- WP_DEBUG_DISPLAY este dezactivat, iar monitorizarea post-lansare este pregătită.
