Integrări

Plugin WooCommerce — semnătură electronică post-cumpărare

Cum conectezi magazinul tău WooCommerce cu Zapis, ca după plată clientul să semneze automat un contract electronic.

Intermediar 8 min · 2 vizualizări
Plugin WooCommerce — semnătură electronică post-cumpărare

De ce ai nevoie de pluginul ăsta

Dacă vinzi prin WooCommerce cursuri online, abonamente, servicii recurente, produse high-ticket sau orice altceva ce implică termeni juridici (politică refund, GDPR, acord didactic, contract de prestări servicii) — atunci după plată ai nevoie ca clientul să semneze un contract înainte să livrezi. Până acum, asta însemna PDF-uri trimise pe email și speranță. Cu pluginul Zapis pentru WooCommerce, totul devine automat:

  1. Clientul plătește în magazinul tău (Stripe, PayPal, Cash on Delivery — orice gateway).
  2. Pe pagina de mulțumire vede un box vizibil cu buton „Semnează contractul acum".
  3. Ajunge pe Zapis cu datele lui pre-completate (nume, email, telefon, preț).
  4. Semnează cu mouse-ul sau degetul.
  5. Comanda din WooCommerce trece automat pe Completed, iar PDF-ul semnat e accesibil din admin.

Tu nu mai urmărești PDF-uri pierdute pe Gmail. Clientul nu mai trebuie să printeze, scaneze și trimită înapoi.

Cum funcționează în 60 de secunde

Pluginul stă în WordPress și ascultă două hook-uri:

  • La plata confirmată (woocommerce_payment_complete sau intrarea comenzii pe processing) — face un POST la Zapis API cu datele comenzii și primește înapoi un signing link. Linkul e salvat ca meta pe comandă și afișat pe pagina de mulțumire + în email-ul către client.
  • Când clientul semnează — Zapis trimite webhook contract.signed către WordPress; pluginul verifică semnătura HMAC, marchează comanda Completed și salvează URL-ul PDF-ului semnat.

Toată legătura între cele două sisteme se face prin API key (autentificare WordPress → Zapis) și webhook secret (verificare Zapis → WordPress). Le generezi pe ambele din interfața Zapis.

Înainte să începi

Trebuie să ai:

  • Un cont Zapis activ, cu o ofertă publicată (status: Publicată) care va servi drept șablon pentru contractul cumpărătorului.
  • Un magazin WordPress + WooCommerce 8.0+ (PHP 7.4 minim, recomandat 8.1+).
  • Drepturi de administrator pe ambele.

Pasul 1 — Activează integrarea de magazin în Zapis

În contul tău Zapis, mergi la Settings → Magazin (există un item dedicat în meniul de Setări).

  • Bifează toggle-ul „Am un magazin online și vreau să integrez semnarea de contract".
  • La Platformă alege WooCommerce (WordPress).
  • La URL magazin pune URL-ul tău (ex: https://shop-ul-meu.ro).
  • Salvează.

Importanță: până nu activezi această pagină, restul opțiunilor de magazin sunt ascunse în UI și API-ul de comenzi va respinge cererile cu un mesaj clar.

Pasul 2 — Generează un API key

În Settings → Integrări → API keys → Generate new key:

  • Numele: „WooCommerce production" (sau orice altceva care să-l recunoști — un key per magazin).
  • Apasă Generează.
  • Copiază imediat valoarea (începe cu zapis_). E afișată o singură dată; după ce închizi modalul, nu mai e recuperabilă — trebuie să generezi alta.
Securitate: tratează API key-ul ca pe o parolă. Dacă bănuiești că s-a compromis, revocă-l din Zapis (butonul Revoke) și generează unul nou — pluginul refuză imediat orice cerere cu key vechi.

Pasul 3 — Copiază UUID-ul ofertei „șablon"

Ai nevoie să spui pluginului care ofertă să folosească drept contract pentru fiecare comandă. Poți avea o singură ofertă șablon pentru tot magazinul, sau una per categorie de produs.

  1. Mergi la Oferte în Zapis.
  2. Alege oferta pe care vrei să o folosești (status: Publicată).
  3. Apasă Partajare pe oferta respectivă.
  4. În modal, găsește secțiunea „UUID ofertă (pentru integrări API)".
  5. Apasă butonul de copiere. UUID-ul arată ca: 9568f502-1634-4c33-adb3-9dd94ebd001d.

Pasul 4 — Adaugă endpoint webhook

În Settings → Integrări → Webhook endpoints → Add endpoint:

  • URL: https://shop-ul-tau.ro/?zapis_webhook=1 (înlocuiește cu domeniul tău). Pentru testare locală cu wp-env, folosește ngrok ca să expui WordPress-ul tău public.
  • Eveniment: contract.signed.
  • Apasă Save.
  • Zapis afișează o singură dată un secret (folosit pentru semnătura HMAC). Copiază-l.

Pasul 5 — Descarcă și instalează pluginul

Pluginul nu e (încă) pe WordPress.org. Îl iei de pe GitHub:

  1. Mergi la github.com/EkanMagnia/zapis-woocommerce/releases.
  2. Descarcă cea mai recentă versiune (fișier zapis-woocommerce-x.y.z.zip).
  3. În WordPress: Plugins → Add New → Upload Plugin. Selectează zip-ul și Install Now.
  4. După instalare, apasă Activate.

După activare, în sidebar-ul admin apare un meniu nou: Zapis Contracts (icon clipboard, sub WooCommerce).

Pasul 6 — Configurează pluginul

Mergi la Zapis Contracts (meniul din sidebar) și completează:

  • API Key — valoarea de la pasul 2 (începe cu zapis_). Pluginul validează formatul la salvare.
  • Default Offer UUID — UUID-ul de la pasul 3. Va fi folosit pentru orice produs care nu are un UUID propriu setat.
  • Webhook Secret — secret-ul de la pasul 4. Fără el, pluginul respinge orice webhook (cod 503).
  • Zapis Base URL (opțional) — lasă gol pentru producție (https://zapis.io). Setează doar dacă rulezi Zapis pe staging propriu.

Apasă Save Changes. Dacă vreun câmp e invalid (ex: API key fără prefix zapis_, UUID malformat), e respins și câmpul rămâne gol — verifică valorile.

Pasul 7 — Personalizează box-ul de semnătură

Pe aceeași pagină, mai jos, găsești secțiunea „Box semnătură pe pagina de mulțumire". Aici controlezi cum arată invitația de semnare pe care o vede clientul după plată.

Toate câmpurile sunt opționale — lasă-le goale și pluginul folosește textele default („Un ultim pas — semnează contractul", etc.).

  • Titlu — apare în partea de sus a box-ului (ex: „Mai e un singur pas").
  • Text body — editor WYSIWYG cu suport pentru bold, italic, link-uri, liste. Aici poți spune clientului exact ce semnează și de ce.
  • Text buton — CTA-ul de pe buton (ex: „Semnează acum →").
  • Culoare gradient — start și final — color picker WP pentru fundalul în gradient al box-ului. Default: indigo → violet. Schimbă-le ca să se asorteze cu paleta magazinului tău.

Salvarea actualizează imediat box-ul pe toate paginile de comandă cu contract pending.

Override Offer UUID per produs

Dacă vinzi mai multe categorii de produse care au nevoie de contracte diferite (ex: cursurile au un acord didactic, abonamentele au alți termeni), poți seta un UUID specific pe fiecare produs:

  1. Mergi la Products → [produsul tău] → Edit.
  2. În tab-ul General din metadata produsului găsești câmpul Zapis Offer UUID.
  3. Pune UUID-ul specific (preluat din Share modal-ul ofertei).
  4. Salvează produsul.

La comenzi cu produse mixte, pluginul folosește UUID-ul primului produs cu UUID setat; dacă niciun produs nu are, cade pe Default Offer UUID.

Cum arată fluxul pentru cumpărător

  1. Cumpărătorul adaugă produs în coș, merge la checkout, completează datele, plătește.
  2. Pe pagina de Order received, deasupra detaliilor comenzii, apare box-ul cu gradient: titlu, descriere, buton CTA, footer „🔒 Securizat de Zapis".
  3. Primește și un email de confirmare cu același link de semnare.
  4. Apasă pe buton → ajunge pe Zapis cu nume, email, telefon și valoarea comenzii deja completate.
  5. Citește contractul, semnează cu mouse-ul sau degetul, finalizează.
  6. E redirecționat înapoi pe magazinul tău (pagina de mulțumire updatată) sau primește confirmare pe email că PDF-ul e gata.

În admin: meta box-ul Zapis Contract pe comanda respectivă afișează status-ul (Pending → Signed), submission UUID, link semnare, link PDF semnat (după finalizare), și un buton „Resend signing email" pentru cazurile când clientul a uitat să semneze.

Troubleshooting

Box-ul nu apare pe pagina de mulțumire

Cauze posibile:

  • Comanda nu a primit submission UUID — pluginul n-a apucat să facă POST la Zapis. Verifică WP debug.log și că plata declanșează hook-ul woocommerce_payment_complete. Cash on Delivery nu îl declanșează — vezi mai jos.
  • Default Offer UUID nu e setat sau produsul are UUID invalid. În admin → meta box-ul comenzii afișează „No contract has been sent" — re-verifică settings-urile.

Cash on Delivery: comanda trece la „processing", nu la „payment_complete"

La COD, WooCommerce nu declanșează woocommerce_payment_complete. Pluginul ascultă și pe woocommerce_order_status_processing, deci ar trebui să meargă din v0.2+. Dacă nu, schimbă manual status-ul comenzii la Completed sau folosește un gateway online (Stripe, PayPal).

Webhook nu ajunge la WordPress

În Zapis: Settings → Integrări → Webhook deliveries arată statusul fiecărui webhook trimis. Dacă vezi:

  • Connection refused / timeout — URL-ul webhook nu e accesibil public. Pe localhost folosește ngrok (ngrok http 80) și pune URL-ul ngrok ca webhook URL.
  • 401 Invalid signature — secret-ul diferă între Zapis și WordPress. Re-copiază secret-ul din Zapis și salvează-l în Zapis Contracts.
  • 503 Webhook secret missing — câmpul Webhook Secret e gol în WordPress.

API key respins

Câmpul rămâne gol după salvare → valoarea nu începe cu zapis_. Re-generează din Zapis și copiază integral.

Offer UUID respins

Formatul corect e UUID v4: 8-4-4-4-12 caractere hex (ex: 9568f502-1634-4c33-adb3-9dd94ebd001d). Dacă lipsește o cratimă sau ai copiat doar o parte, e respins.

Ce e în roadmap

  • Plugin oficial WordPress.org — pentru instalare 1-click direct din admin (în curs).
  • Aplicație Shopify — același flow, dar pentru Shopify (Q3 2026).
  • Domeniu personalizat pe Zapis — clientul vede contracte.magazinul-tau.ro în loc de zapis.io. Vezi articolele din această categorie pentru update-uri.
  • Conector Make.com / Zapier — pentru cei care nu vor să atingă WordPress.

Probleme sau întrebări?

Deschide ticket de suport din Settings → Suport sau scrie pe support@zapis.io. Pentru bug-uri tehnice și PR-uri pe plugin: github.com/EkanMagnia/zapis-woocommerce/issues.

Te-a ajutat acest articol?

Mulțumim pentru feedback!

Articole similare

Citește mai departe