---
title: "Awtomatizzazzjoni tal-Passaporti Diġitali tal-Prodotti bil-Webhooks — qr3.app Blog"
description: "Passaport Diġitali tal-Prodott mhuwiex paġna statika — kull skan huwa avveniment li tista"
canonical: "https://qr3.app/mt/blog/dpp-webhooks-automation/"
lang: "mt"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Awtomatizzazzjoni tal-Passaporti Diġitali tal-Prodotti bil-Webhooks — qr3.app Blog

> Passaport Diġitali tal-Prodott mhuwiex paġna statika — kull skan huwa avveniment li tista

Canonical: <https://qr3.app/mt/blog/dpp-webhooks-automation/>

[← Blog](/mt/blog/) [Tutorials](/mt/blog/category/tutorials/)

May 30, 2026 5 min biex taqra [Tutorials](/mt/blog/category/tutorials/) [dpp](/mt/blog/tag/dpp/)[webhooks](/mt/blog/tag/webhooks/)[automation](/mt/blog/tag/automation/)[qr-scanned](/mt/blog/tag/qr-scanned/)[sdk](/mt/blog/tag/sdk/)

# Awtomatizzazzjoni tal-Passaporti Diġitali tal-Prodotti bil-Webhooks

Passaport Diġitali tal-Prodott mhuwiex paġna statika — kull skan huwa avveniment li tista' tibni fuqu. Irreaġixxi għal qr.scanned għall-analitika, l-ordnijiet mill-ġdid u l-flegi ta' rtirar, żomm id-data tal-passaport friska mill-ERP tiegħek, u vverifika kull payload b'HMAC-SHA256. Gwida għall-iżviluppaturi b'kodiċi.

minn **QR3 Redaktion**

![Awtomatizzazzjoni tal-Passaporti Diġitali tal-Prodotti bil-Webhooks](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-webhooks-automation/hero.png)

Ħafna timijiet jittrattaw Passaport Diġitali tal-Prodott bħala paġna: toħolqu, tistampa l-QR, u tinsih. Dan iħalli l-aktar sinjal utli barra. Kull darba li xi ħadd jiskennja l-QR fuq prodott, dik hija **avveniment** — persuna reali, f'pajjiż reali, li żżomm unità reali, f'mument reali. Wassal dawk l-avvenimenti fl-istack tiegħek u l-passaport jieqaf ikun paġna statika u jsir il-front end ta' pipeline ta' awtomatizzazzjoni. Din il-gwida turi kif tabbona għal `qr.scanned`, tivverifika kull payload, u tibdel l-iskans u l-aġġornamenti f'workflows reali bl-SDK ta' qr3.

## Għaliex DPP huwa sors ta' avvenimenti, mhux paġna statika

Il-valur ta' passaport mhuwiex il-paġna li l-konsumatur jara darba. Huwa l-fluss ta' interazzjonijiet madwaru: skans fil-kamp, tibdil fid-data mill-ERP tiegħek, tranżizzjonijiet fiċ-ċiklu tal-ħajja. Kull wieħed huwa xi ħaġa li s-sistemi tiegħek jistgħu jirreaġixxu għaliha f'ħin reali.

Il-Webhooks jaqilbu l-mudell tas-soltu tal-polling. Minflok tistaqsi *"ġara xi ħaġa?"* fuq timer, qr3 isejjaħ **lilek** fil-mument li jiġri. It-tipi ta' avveniment li temetti l-pjattaforma jinkludu `qr.scanned`, flimkien ma' `qr.created`, `qr.updated` u `qr.deleted` għat-tibdil fiċ-ċiklu tal-ħajja. Dak li l-aktar timijiet jużaw inqas huwa `qr.scanned`: jisparat meta konsumatur, tekniku, jew uffiċjal tad-dwana fil-fatt jiskennja prodott fil-kamp.

Payload ta' `qr.scanned` iġorr il-kuntest li teħtieġ biex taġixxi — inkluż il-**pajjiż** tal-iskan u l-**id tad-dpp/code** li jidentifika liema unità ġiet skennjata. Dak huwa biżżejjed biex imexxi l-analitika, l-ifornir mill-ġdid, u l-loġika tal-irtirar mingħajr bniedem fiċ-ċiklu.

## Abbonament għal qr.scanned

Indika endpoint ta' webhook lejn is-servizz tiegħek u ttratta l-avveniment. Ivverifika l-firma kontra r-raw body qabel ma tanalizzah:

```
import express from "express";
import { createHmac, timingSafeEqual } from "crypto";

const app = express();
const secret = process.env.QR3_WEBHOOK_SECRET!;

// Recompute the HMAC over the exact bytes qr3 signed and compare in constant time.
function verify(raw: Buffer, header: string | undefined): boolean {
  const expected = createHmac("sha256", secret).update(raw).digest("hex");
  const expectedBytes = Buffer.from(`sha256=${expected}`);
  const receivedBytes = Buffer.from(header ?? "");
  return (
    expectedBytes.length === receivedBytes.length &&
    timingSafeEqual(expectedBytes, receivedBytes)
  );
}

// Use the raw body so the signature matches the exact bytes qr3 signed.
app.post("/webhooks/qr3", express.raw({ type: "application/json" }), (req, res) => {
  if (!verify(req.body, req.headers["x-qr3-signature"] as string)) return res.sendStatus(401);
  const event = JSON.parse(req.body.toString("utf8"));

  if (event.type === "qr.scanned") {
    // event payload includes fields like the scan country and the dpp/code id
    handleScan(event);
  }

  res.sendStatus(200);
});
```

Il-handler huwa intenzjonalment irqiq: ivverifika, ferra' fuq `event.type`, irrikonoxxi malajr b'`200`. Agħmel ix-xogħol tqil (kitbiet ta' analitika, sejħiet lill-ERP) b'mod asinkronu biex downstream bil-mod qatt ma jimblokka r-rikonoxximent.

## Verifika tal-firem (HMAC-SHA256) — dejjem agħmel dan

Endpoint ta' webhook huwa URL pubbliku. Kull min isibu jista' jagħmel POST lejh. Jekk tafda l-body mingħajr ma tiċċekkja min bagħtu, attakkant jista' jiffalsifika "skans", jiskatta ordnijiet mill-ġdid foloz, jew jispara flegi foloz ta' rtirar. **Dejjem ivverifika l-firma qabel ma taġixxi fuq payload.**

qr3 jiffirma kull webhook b'**HMAC-SHA256** fuq il-body tat-talba mhux ipproċessat (raw), billi juża s-secret tal-endpoint tiegħek. Il-firma tasal fil-header tat-talba `X-QR3-Signature`, bħala `sha256=` segwit mill-hex digest. Ikkalkula mill-ġdid l-HMAC fuq l-istess bytes u qabbel it-tnejn f'constant time; jekk ikunu differenti, irrifjuta t-talba:

```
app.post("/webhooks/qr3", express.raw({ type: "application/json" }), (req, res) => {
  if (!verify(req.body, req.headers["x-qr3-signature"] as string)) {
    // signature mismatch → not from qr3 (or body was altered in transit)
    return res.sendStatus(401);
  }
  process(JSON.parse(req.body.toString("utf8")));
  res.sendStatus(200);
});
```

Tliet regoli li jżommu dan onest:

- **Ivverifika kontra r-raw bytes.** Is-serjalizzazzjoni mill-ġdid tal-JSON tista' tirranġa mill-ġdid iċ-ċwievet u tibdel il-whitespace, li jkisser l-HMAC. Aqbad ir-raw body (hawn fuq, `express.raw`).

- **Żomm is-secret secret.** Jgħix fl-ambjent tiegħek, qatt fil-kodiċi tal-klijent jew f'repo.

- **Fail closed.** L-ebda firma valida → `401`, l-ebda effetti sekondarji. Qatt "ipproċessa xorta waħda" fuq nuqqas ta' qbil.

## Mudelli: analitika / ordni mill-ġdid / irtirar

Ladarba tafda l-avveniment, ftit mudelli jkopru ħafna minn dak li jridu t-timijiet:

```
function handleScan(event: { type: string; data: { country?: string; dpp_id?: string } }) {
  // 1) Analytics — where and how often are products scanned?
  metrics.increment("dpp.scan", { country: event.data.country });

  // 2) Re-order — a scan can signal consumption or field activity
  if (event.data.country) maybeReplenish(event.data.dpp_id, event.data.country);

  // 3) Recall flag — scans of a flagged unit alert your team
  if (isRecalled(event.data.dpp_id)) alertRecall(event.data.dpp_id, event.data.country);
}
```

- **Analitika:** aggrega l-iskans skont il-pajjiż u l-unità biex tara l-involviment fid-dinja reali — liema swieq fil-fatt jiskennjaw, u liema SKUs jaraw l-aktar interazzjoni wara l-bejgħ.

- **Ordni mill-ġdid / ifornir mill-ġdid:** tisplożjoni ta' skans f'reġjun tista' tagħmel l-input għal sinjali ta' domanda jew tiskatta workflows ta' restokk fl-ERP tiegħek.

- **Irtirar / sikurezza:** jekk unità tinsab taħt irtirar, skan huwa opportunità biex tilħaq lil min qed iżommha — avża t-tim tiegħek, jew uri avviż fuq il-passaport innifsu.

L-ebda waħda minn dawn ma teħtieġ polling jew batch ta' bil-lejl. Jiġru fl-istant li l-prodott jiġi skennjat.

## Żamma tad-data aġġornata permezz ta' client.dpp.update

Ir-reazzjoni għall-iskans hija nofs iċ-ċiklu; in-nofs l-ieħor huwa li żżomm il-passaport innifsu eżatt. Regolamenti bħall-**ESPR (UE 2024/1781)** u r-**Regolament dwar il-Batteriji (UE 2023/1542)** jistennew li d-data tal-passaport tirrifletti r-realtà matul il-ħajja tal-prodott — marka tal-karbonju kkalkulata mill-ġdid, istruzzjonijiet ta' tiswija aġġornati, miri ta' kontenut riċiklat milħuqa.

Mexxi dawk l-aġġornamenti mis-sistema tar-rekord. Meta valur jinbidel fl-ERP tiegħek, imbottah lejn il-passaport:

```
import { QR3 } from "@qr3/sdk";

const client = new QR3({ apiKey: process.env.QR3_API_KEY! });

// GTIN and serial are immutable; data fields are updatable.
await client.dpp.update(dppId, {
  battery_data: { carbon_footprint_kg: 58, recycled_content_pct: 16 },
});
```

Minħabba li l-QR jikkodifika URL ta' resolver stabbli (`https://qr3.app/dpp/{gtin}/{serial}`, żid `?format=jsonld` għal JSON-LD), qatt ma terġa' tistampa label biex tibdel id-data. L-identità tibqa' fissa; il-kontenut warajha jibqa' aġġornat. Ikkombina dan ma' `qr.updated` u tista' xxerred notifika kull meta passaport jinbidel — tagħlaq iċ-ċiklu bejn l-ERP tiegħek, il-passaport, u kull min qed josserva downstream.

## Tabella ta' avvenimenti: avveniment → x'tawtomatizza

| Avveniment | Jispara meta | X'tawtomatizza |
| --- | --- | --- |
| `qr.scanned` | QR ta' prodott jiġi skennjat fil-kamp | Analitika skont il-pajjiż, sinjali ta' ifornir mill-ġdid, allarmi ta' rtirar |
| `qr.created` | Jinħoloq passaport ġdid | Indiċjah, sinkronizza mal-PIM/ERP, avża t-tim tal-katalgu |
| `qr.updated` | Id-data tal-passaport tinbidel | Erġa' ikkaċċja l-paġna pubblika, xerred notifiki ta' tibdil |
| `qr.deleted` | Passaport jitneħħa | Immarka r-rekords interni bħala mejta, irrevoka r-referenzi downstream |

Ibda b'`qr.scanned` għall-involviment u s-sinjali tal-kamp; żid l-avvenimenti taċ-ċiklu tal-ħajja hekk kif tissinkronizza l-passaporti fis-sistemi usa' tiegħek.

## FAQ

**Irrid nivverifika l-firma jekk l-URL tal-endpoint tiegħi huwa sigriet?**
Iva. URL mhuwiex sigriet — joħroġ fil-logs, fil-proxies, u fl-istorja tal-browser. Il-verifika tal-HMAC `X-QR3-Signature` mal-body mhux ipproċessat hija l-unika ħaġa li tipprova li payload fil-fatt ġie minn qr3.

**X'jiġri jekk l-endpoint tiegħi jkun 'l isfel meta jispara avveniment?**
Irrikonoxxi malajr b'`200` ladarba tkun ivverifikajt, u agħmel ix-xogħol bil-mod b'mod asinkronu biex problemi temporanji downstream qatt ma jwaqqfu r-rispons. Żomm l-idempotenza tiegħek stess fuq id-`dpp/code id` biex twassil mibgħut mill-ġdid ma jingħaddx darbtejn.

**Nista' naġġorna l-GTIN jew is-serial permezz ta' client.dpp.update?**
Le — GTIN u serial huma immutabbli; huma l-identità stabbli tal-prodott. Huma biss l-oqsma tad-data li jistgħu jiġu aġġornati. Dik l-immutabilità hija eżattament dak li jħalli l-QR stampat jibqa' validu għal dejjem.

## Sorsi

- [UE ESPR — Regolament (UE) 2024/1781](https://eur-lex.europa.eu/eli/reg/2024/1781/oj)

- [Regolament tal-UE dwar il-Batteriji 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

- [HMAC — RFC 2104](https://www.rfc-editor.org/rfc/rfc2104)

**Ibda b'xejn** u qabbad l-ewwel webhook tad-DPP tiegħek: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Posts relatati

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutorials Suite tat-Test tar-Resolver GS1: DPP-Links jiġu vverifikati b’mod affidabbli qabel it-tnedija Is-suite stabbli tat-testijiet GS1 tagħmel lil Resolver 1.2 verifikabbli. Hawnhekk tara kif tittestja redirects, linksets, CORS, lingwi u żbalji qabel it-tnedija.](/mt/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Aħbarijiet tal-industrija Ambjent tat-test lest għal BatteryPass-Ready għall-Passaport Diġitali tal-Batteriji Il-konsorzju BatteryPass-Ready nieda ambjent pubbliku tat-test għall-Passaport Diġitali tal-Batteriji fl-24 ta’ Ġunju 2026, bil-ħsieb tal-obbligu tal-UE minn Frar 2027.](/mt/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Aħbarijiet tal-industrija Passaport Diġitali tal-Batteriji 2027: X’għandhom ikunu jafu issa l-manifatturi Webinars, għodod open source u standards ġodda: il-passaport tal-batteriji tal-UE qed jieħu spinta. Ħarsa lejn is-sitwazzjoni f’Lulju 2026 u l-mistoqsijiet miftuħa sa Frar 2027.](/mt/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Aħbarijiet tal-industrija Passaport Diġitali tal-Batteriji 2026: Ambjenti tat-test, standards u mistoqsijiet miftuħa Fejn tinsab l-industrija fir-rigward tal-Passaport Diġitali tal-Batteriji? Ħarsa lejn ambjenti tat-test, standards CEN/CENELEC, għodod open source u deċiżjonijiet regolatorji f’Lulju 2026.](/mt/blog/sector-20260711/)

[← L-artikli kollha](/mt/blog/) [Ibda b'xejn](https://app.qr3.app/sign-up)
