---
title: "Digitális termékútlevelek automatizálása webhookokkal — qr3.app Blog"
description: "A digitális termékútlevél nem statikus oldal – minden egyes beolvasás egy esemény, amelyre építhetsz. Reagálj a qr.scanned eseményre analitikával, utánrendeléssel és visszahívási jelzésekkel, tartsd naprakészen az útlevél adatait az ERP-rendszeredből, és ellenőrizz minden payloadot HMAC-SHA256-tal. Fejlesztői szintű útmutató kóddal."
canonical: "https://qr3.app/hu/blog/dpp-webhooks-automation/"
lang: "hu"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Digitális termékútlevelek automatizálása webhookokkal — qr3.app Blog

> A digitális termékútlevél nem statikus oldal – minden egyes beolvasás egy esemény, amelyre építhetsz. Reagálj a qr.scanned eseményre analitikával, utánrendeléssel és visszahívási jelzésekkel, tartsd naprakészen az útlevél adatait az ERP-rendszeredből, és ellenőrizz minden payloadot HMAC-SHA256-tal. Fejlesztői szintű útmutató kóddal.

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

[← Blog](/hu/blog/) [Oktatóanyagok](/hu/blog/category/tutorials/)

2026. május 30. 5 perc olvasás [Oktatóanyagok](/hu/blog/category/tutorials/) [dpp](/hu/blog/tag/dpp/)[webhooks](/hu/blog/tag/webhooks/)[automation](/hu/blog/tag/automation/)[qr-scanned](/hu/blog/tag/qr-scanned/)[sdk](/hu/blog/tag/sdk/)

# Digitális termékútlevelek automatizálása webhookokkal

A digitális termékútlevél nem statikus oldal – minden egyes beolvasás egy esemény, amelyre építhetsz. Reagálj a qr.scanned eseményre analitikával, utánrendeléssel és visszahívási jelzésekkel, tartsd naprakészen az útlevél adatait az ERP-rendszeredből, és ellenőrizz minden payloadot HMAC-SHA256-tal. Fejlesztői szintű útmutató kóddal.

szerző: **QR3 Redaktion**

![Digitális termékútlevelek automatizálása webhookokkal](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-webhooks-automation/hero.png)

A legtöbb csapat egy digitális termékútlevelet egyszerű oldalként kezel: létrehozzák, kinyomtatják a QR-kódot, majd elfelejtik. Ezzel a leghasznosabb jelet hagyják az asztalon. Minden alkalommal, amikor valaki beolvassa a terméken lévő QR-kódot, az egy **esemény** – egy valódi ember, egy valódi országban, egy valódi darabot a kezében tartva, egy valódi pillanatban. Kösd be ezeket az eseményeket a technológiai stacked-be, és az útlevél megszűnik statikus oldal lenni, helyette egy automatizálási folyamat előterévé válik. Ez az útmutató megmutatja, hogyan iratkozz fel a `qr.scanned` eseményre, hogyan ellenőrizz minden payloadot, és hogyan alakítsd valódi munkafolyamatokká a beolvasásokat és frissítéseket a qr3 SDK segítségével.

## Miért eseményforrás a DPP, és nem statikus oldal

Egy útlevél értéke nem az az oldal, amelyet a fogyasztó egyszer megnéz. Hanem a körülötte zajló interakciók folyama: a terepen történő beolvasások, az ERP-ből érkező adatváltozások, az életciklus-átmenetek. Mindegyikre valós időben reagálhatnak a rendszereid.

A webhookok megfordítják a szokásos lekérdezéses (polling) modellt. Ahelyett, hogy időzítve azt kérdeznéd, *„történt-e valami?"*, a qr3 hív fel **téged** abban a pillanatban, amikor valami történik. A platform által kibocsátott eseménytípusok közé tartozik a `qr.scanned`, valamint a `qr.created`, `qr.updated` és `qr.deleted` az életciklus-változásokhoz. Az, amelyet a legtöbb csapat kihasználatlanul hagy, a `qr.scanned`: ez akkor sül el, amikor egy fogyasztó, technikus vagy vámtiszt ténylegesen beolvas egy terméket a valós világban.

Egy `qr.scanned` payload magában hordozza azt a kontextust, amelyre szükséged van a cselekvéshez – beleértve a beolvasás **országát** és a `dpp/code id`-t, amely azonosítja, melyik darabot olvasták be. Ez elegendő ahhoz, hogy emberi beavatkozás nélkül vezéreld az analitikát, az utánpótlást és a visszahívási logikát.

## Feliratkozás a qr.scanned eseményre

Irányíts egy webhook-végpontot a szolgáltatásodra, és kezeld le az eseményt. Ellenőrizd az aláírást a nyers törzs alapján, mielőtt elemeznéd azt:

```
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);
});
```

A kezelő szándékosan vékony: ellenőrizz, ágazz el az `event.type` alapján, és nyugtázz gyorsan egy `200`-zal. A nehéz munkát (analitikai írások, ERP-hívások) végezd aszinkron módon, hogy egy lassú downstream-rendszer soha ne blokkolja a nyugtázást.

## Aláírások ellenőrzése (HMAC-SHA256) — ezt mindig tedd meg

Egy webhook-végpont nyilvános URL. Bárki, aki megtalálja, küldhet rá POST-ot. Ha úgy bízol meg a törzsben, hogy nem ellenőrzöd, ki küldte, egy támadó hamis „beolvasásokat" koholhat, megtévesztő utánrendeléseket indíthat, vagy téves visszahívási jelzéseket válthat ki. **Mielőtt egy payload alapján cselekszel, mindig ellenőrizd az aláírást.**

A qr3 minden webhookot **HMAC-SHA256**-tal ír alá a nyers kéréstörzs felett, a végpontod titkos kulcsával. Az aláírás az `X-QR3-Signature` kérésfejlécben érkezik, `sha256=` formátumban, amelyet a hexadecimális kivonat követ. Számold újra a HMAC-et ugyanazon bájtok felett, és hasonlítsd össze a kettőt konstans időben; ha eltérnek, utasítsd el a kérést:

```
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);
});
```

Három szabály, amely megőrzi mindezt becsületesnek:

- **Ellenőrizz a nyers bájtok ellenében.** A JSON újraszerializálása átrendezheti a kulcsokat és megváltoztathatja a szóközöket, ami tönkreteszi a HMAC-et. Kapd el a nyers törzset (fent: `express.raw`).

- **Tartsd titokban a titkos kulcsot.** A környezetedben él, soha nem kliensoldali kódban vagy egy repóban.

- **Hiba esetén zárj le (fail closed).** Nincs érvényes aláírás → `401`, semmilyen mellékhatás nélkül. Eltérés esetén soha ne „dolgozd fel mégis".

## Mintázatok: analitika / utánrendelés / visszahívás

Ha egyszer megbízol az eseményben, néhány mintázat lefedi a legtöbbet, amire a csapatoknak szüksége van:

```
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:** összesítsd a beolvasásokat ország és darab szerint, hogy lásd a valós elköteleződést – mely piacok olvasnak be ténylegesen, és mely SKU-k esetében van a legtöbb értékesítés utáni interakció.

- **Utánrendelés / utánpótlás:** egy adott régióban tapasztalt beolvasási hullám keresleti jelzéseket táplálhat, vagy újrakészletezési munkafolyamatokat indíthat el az ERP-rendszeredben.

- **Visszahívás / biztonság:** ha egy darab visszahívás alatt áll, egy beolvasás lehetőség arra, hogy elérd azt, aki éppen birtokolja – riaszd a csapatodat, vagy jeleníts meg egy értesítést magán az útlevélen.

Ezek egyikéhez sem kell lekérdezés vagy éjszakai kötegelt feldolgozás. Abban a pillanatban megtörténnek, amint beolvassák a terméket.

## Az adatok naprakészen tartása a client.dpp.update segítségével

A beolvasásokra való reagálás a hurok egyik fele; a másik fele maga az útlevél pontosan tartása. Az olyan szabályozások, mint az **ESPR (EU 2024/1781)** és az **akkumulátor-rendelet (EU 2023/1542)**, elvárják, hogy az útlevél adatai a termék teljes élettartama során tükrözzék a valóságot – újraszámolt szénlábnyom, frissített javítási utasítások, elért újrahasznosított-tartalom célértékek.

Vezéreld ezeket a frissítéseket a nyilvántartási rendszerből. Amikor egy érték megváltozik az ERP-edben, told ki az útlevélbe:

```
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 },
});
```

Mivel a QR-kód egy stabil resolver URL-t kódol (`https://qr3.app/dpp/{gtin}/{serial}`, JSON-LD-hez add hozzá a `?format=jsonld` paramétert), soha nem kell újranyomtatnod egy címkét az adatok módosításához. Az identitás rögzített marad; a mögötte lévő tartalom naprakész. Párosítsd ezt a `qr.updated` eseménnyel, és szétküldhetsz egy értesítést minden alkalommal, amikor egy útlevél megváltozik – lezárva a hurkot az ERP-d, az útlevél és bárki között, aki downstream figyeli.

## Egy eseménytáblázat: esemény → mit automatizálj

| Esemény | Mikor sül el | Mit automatizálj |
| --- | --- | --- |
| `qr.scanned` | Egy termék QR-kódját beolvassák a terepen | Országonkénti analitika, utánpótlási jelzések, visszahívási riasztások |
| `qr.created` | Új útlevél jön létre | Indexeld, szinkronizáld a PIM/ERP-be, értesítsd a katalóguscsapatot |
| `qr.updated` | Az útlevél adatai megváltoznak | Cache-eld újra a nyilvános oldalt, küldd szét a változásértesítéseket |
| `qr.deleted` | Egy útlevelet eltávolítanak | Tedd sírkővé (tombstone) a belső rekordokat, vond vissza a downstream hivatkozásokat |

Kezdd a `qr.scanned` eseménnyel az elköteleződéshez és a terepi jelzésekhez; az életciklus-eseményeket akkor add hozzá, amikor az útleveleket beszinkronizálod a tágabb rendszereidbe.

## GYIK

**Ellenőriznem kell az aláírást, ha a végpontom URL-je titkos?**
Igen. Egy URL nem titok – kiszivárog a logokból, a proxykból és a böngészési előzményekből. Az `X-QR3-Signature` HMAC-ellenőrzése a nyers törzzsel (raw body) szemben az egyetlen, ami bizonyítja, hogy egy payload valóban a qr3-tól érkezett.

**Mi történik, ha a végpontom nem elérhető, amikor egy esemény elsül?**
Nyugtázz gyorsan egy `200`-zal, miután ellenőrizted, és a lassú munkát végezd aszinkron módon, hogy az átmeneti downstream-problémák soha ne akasszák meg a választ. Tartsd fenn a saját idempotenciádat a `dpp/code id` alapján, hogy egy újraküldött kézbesítést ne számolj duplán.

**Frissíthetem a GTIN-t vagy a sorozatszámot a client.dpp.update segítségével?**
Nem – a GTIN és a sorozatszám megváltoztathatatlan; ezek a termék stabil identitása. Csak az adatmezők frissíthetők. Pontosan ez a megváltoztathatatlanság teszi lehetővé, hogy a kinyomtatott QR-kód örökre érvényes maradjon.

## Források

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

- [EU Battery Regulation 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Kezdd el ingyen**, és kösd be az első DPP-webhookodat: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Kapcsolódó cikkek

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Oktatóanyagok GS1 Resolver tesztcsomag: DPP-hivatkozások megbízható ellenőrzése az élesítés előtt A stabil GS1-tesztcsomag ellenőrizhetővé teszi a Resolver 1.2-t. Így tesztelhetők az átirányítások, linkkészletek, a CORS, a nyelvek és a hibás esetek az élesítés előtt.](/hu/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Iparági hírek A BatteryPass-Ready elindította a Digitális Akkumulátor-útlevél tesztkörnyezetét A BatteryPass-Ready konzorcium 2026. június 24-én nyilvános tesztkörnyezetet indított a Digitális Akkumulátor-útlevélhez, az EU 2027 februárjától érvényes kötelezettségére tekintettel.](/hu/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Iparági hírek Digitális akkumulátor-útlevél 2027: amit a gyártóknak most tudniuk kell Webináriumok, nyílt forráskódú eszközök és új szabványok: az uniós akkumulátor-útlevél lendületet kapott. Áttekintés a 2026. júliusi helyzetről és a 2027 februárjáig tisztázandó kérdésekről.](/hu/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Iparági hírek Digitális akkumulátor-útlevél 2026: tesztkörnyezetek, szabványok és nyitott kérdések Hol tart az iparág a digitális akkumulátor-útlevél bevezetésében? Áttekintés a tesztkörnyezetekről, a CEN/CENELEC szabványairól, a nyílt forráskódú eszközökről és a 2026. júliusi szabályozási döntése.](/hu/blog/sector-20260711/)

[← Minden cikk](/hu/blog/) [Kezdés ingyen](https://app.qr3.app/sign-up)
