---
title: "Automatizace digitálních produktových pasů pomocí webhooků — qr3.app Blog"
description: "Digitální produktový pas není statická stránka — každé skenování je událost, na které můžete stavět. Reagujte na qr.scanned pro analytiku, doobjednávky a příznaky stažení z trhu, udržujte data pasu aktuální z vašeho ERP a ověřujte každý payload pomocí HMAC-SHA256. Průvodce na úrovni vývojáře s ukázkami kódu."
canonical: "https://qr3.app/cs/blog/dpp-webhooks-automation/"
lang: "cs"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Automatizace digitálních produktových pasů pomocí webhooků — qr3.app Blog

> Digitální produktový pas není statická stránka — každé skenování je událost, na které můžete stavět. Reagujte na qr.scanned pro analytiku, doobjednávky a příznaky stažení z trhu, udržujte data pasu aktuální z vašeho ERP a ověřujte každý payload pomocí HMAC-SHA256. Průvodce na úrovni vývojáře s ukázkami kódu.

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

[← Blog](/cs/blog/) [Tutoriály](/cs/blog/category/tutorials/)

30. května 2026 5 min čtení [Tutoriály](/cs/blog/category/tutorials/) [dpp](/cs/blog/tag/dpp/)[webhooks](/cs/blog/tag/webhooks/)[automation](/cs/blog/tag/automation/)[qr-scanned](/cs/blog/tag/qr-scanned/)[sdk](/cs/blog/tag/sdk/)

# Automatizace digitálních produktových pasů pomocí webhooků

Digitální produktový pas není statická stránka — každé skenování je událost, na které můžete stavět. Reagujte na qr.scanned pro analytiku, doobjednávky a příznaky stažení z trhu, udržujte data pasu aktuální z vašeho ERP a ověřujte každý payload pomocí HMAC-SHA256. Průvodce na úrovni vývojáře s ukázkami kódu.

autor **QR3 Redaktion**

![Automatizace digitálních produktových pasů pomocí webhooků](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-webhooks-automation/hero.png)

Většina týmů zachází s digitálním produktovým pasem jako se stránkou: vytvoříte ho, vytisknete QR kód a zapomenete na něj. Tím ale necháváte ležet ten nejužitečnější signál. Pokaždé, když někdo naskenuje QR kód na produktu, je to **událost** — skutečná osoba, ve skutečné zemi, držící skutečný kus, ve skutečném okamžiku. Propojte tyto události se svým stackem a pas přestane být statickou stránkou a stane se vstupní branou automatizační pipeline. Tento průvodce ukazuje, jak se přihlásit k odběru `qr.scanned`, ověřit každý payload a proměnit skenování a aktualizace ve skutečné workflow s qr3 SDK.

## Proč je DPP zdrojem událostí, a ne statickou stránkou

Hodnota pasu není ta stránka, kterou spotřebitel jednou uvidí. Je to proud interakcí kolem něj: skenování v terénu, změny dat z vašeho ERP, přechody v životním cyklu. Každá z nich je něco, na co mohou vaše systémy reagovat v reálném čase.

Webhooky obracejí obvyklý model dotazování (polling). Místo toho, abyste se v pravidelných intervalech ptali *„stalo se něco?“*, zavolá qr3 **vám** v okamžiku, kdy se to stane. Mezi typy událostí, které platforma vysílá, patří `qr.scanned`, dále `qr.created`, `qr.updated` a `qr.deleted` pro změny v životním cyklu. Tou, kterou většina týmů nevyužívá naplno, je `qr.scanned`: spustí se, když spotřebitel, technik nebo celní úředník skutečně naskenuje produkt v terénu.

Payload `qr.scanned` nese kontext, který potřebujete k jednání — včetně **země** skenování a **dpp/code id**, které identifikuje, jaký kus byl naskenován. To stačí k tomu, abyste řídili analytiku, doplňování zásob a logiku stažení z trhu bez zásahu člověka.

## Přihlášení k odběru qr.scanned

Nasměrujte webhookový endpoint na svou službu a zpracujte událost. Před parsováním ověřte podpis vůči surovému tělu zprávy:

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

Handler je záměrně útlý: ověřit, větvit podle `event.type`, rychle potvrdit pomocí `200`. Náročnou práci (zápisy do analytiky, volání ERP) dělejte asynchronně, aby pomalý navazující systém nikdy neblokoval potvrzení.

## Ověřování podpisů (HMAC-SHA256) — dělejte to vždy

Webhookový endpoint je veřejná URL. Kdokoli, kdo ji najde, na ni může poslat POST. Pokud tělu důvěřujete, aniž byste kontrolovali, kdo ho odeslal, může útočník zfalšovat „skenování“, spustit falešné doobjednávky nebo vyvolat falešné příznaky stažení z trhu. **Před tím, než na payload zareagujete, vždy ověřte podpis.**

qr3 podepisuje každý webhook pomocí **HMAC-SHA256** nad nezpracovaným tělem požadavku s použitím tajného klíče vašeho endpointu. Podpis přichází v hlavičce požadavku `X-QR3-Signature` jako `sha256=` následovaný hexadecimálním otiskem. Znovu vypočítejte HMAC nad stejnými bajty a porovnejte oba v konstantním čase; pokud se liší, požadavek odmítněte:

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

Tři pravidla, která to udržují poctivé:

- **Ověřujte proti surovým bajtům.** Opětovná serializace JSON může změnit pořadí klíčů a bílé znaky, což rozbije HMAC. Zachyťte surové tělo (výše, `express.raw`).

- **Udržujte tajný klíč v tajnosti.** Žije ve vašem prostředí, nikdy ne v klientském kódu ani v repozitáři.

- **Selhávejte uzavřeně (fail closed).** Žádný platný podpis → `401`, žádné vedlejší účinky. Při neshodě nikdy „přesto nezpracovávejte“.

## Vzory: analytika / doobjednávka / stažení z trhu

Jakmile události důvěřujete, pokryje hrstka vzorů většinu toho, co týmy chtějí:

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

- **Analytika:** agregujte skenování podle země a kusu, abyste viděli reálné zapojení — které trhy skutečně skenují a které SKU zaznamenávají nejvíce poprodejních interakcí.

- **Doobjednávka / doplňování zásob:** nárůst skenování v určitém regionu může napájet signály poptávky nebo spouštět workflow pro doplnění zásob ve vašem ERP.

- **Stažení z trhu / bezpečnost:** pokud je kus předmětem stažení z trhu, skenování je příležitostí oslovit toho, kdo ho drží — upozorněte svůj tým nebo zobrazte oznámení přímo v pasu.

Nic z toho nepotřebuje polling ani noční dávkové zpracování. Děje se to v okamžiku, kdy je produkt naskenován.

## Udržování aktuálnosti dat pomocí client.dpp.update

Reagování na skenování je polovina smyčky; tou druhou polovinou je udržování přesnosti samotného pasu. Předpisy jako **ESPR (EU 2024/1781)** a **nařízení o bateriích (EU 2023/1542)** očekávají, že data pasu budou po celou dobu životnosti produktu odrážet realitu — přepočítanou uhlíkovou stopu, aktualizované návody k opravě, dosažené cíle podílu recyklovaného obsahu.

Tyto aktualizace řiďte ze systému evidence. Když se hodnota ve vašem ERP změní, pošlete ji do pasu:

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

Protože QR kód kóduje stabilní resolver URL (`https://qr3.app/dpp/{gtin}/{serial}`, pro JSON-LD přidejte `?format=jsonld`), nikdy nebudete kvůli změně dat znovu tisknout štítek. Identita zůstává pevná; obsah za ní zůstává aktuální. Spárujte to s `qr.updated` a můžete rozeslat oznámení pokaždé, když se pas změní — uzavřete tak smyčku mezi vaším ERP, pasem a kýmkoli, kdo navazujícím způsobem sleduje dění.

## Tabulka událostí: událost → co automatizovat

| Událost | Spustí se, když | Co automatizovat |
| --- | --- | --- |
| `qr.scanned` | QR kód produktu je naskenován v terénu | Analytika podle země, signály doplnění zásob, upozornění na stažení z trhu |
| `qr.created` | Je vytvořen nový pas | Zaindexujte ho, synchronizujte do PIM/ERP, informujte tým katalogu |
| `qr.updated` | Změní se data pasu | Znovu načtěte cache veřejné stránky, rozešlete oznámení o změně |
| `qr.deleted` | Pas je odstraněn | Označte interní záznamy jako tombstone, zneplatněte navazující odkazy |

Začněte s `qr.scanned` pro zapojení a signály z terénu; události životního cyklu přidejte, jakmile budete pasy synchronizovat do svých širších systémů.

## FAQ

**Musím ověřovat podpis, pokud je URL mého endpointu tajná?**
Ano. URL není tajemství — uniká v logách, proxy serverech a historii prohlížeče. Ověření HMAC v hlavičce `X-QR3-Signature` proti nezpracovanému tělu (raw body) je jediná věc, která dokazuje, že payload skutečně pochází z qr3.

**Co se stane, když je můj endpoint nedostupný v okamžiku, kdy se spustí událost?**
Jakmile máte ověřeno, rychle potvrďte pomocí `200` a pomalou práci dělejte asynchronně, aby přechodné problémy navazujících systémů nikdy nezdržely odpověď. Udržujte si vlastní idempotenci na `dpp/code id`, aby se opakované doručení nezapočítalo dvakrát.

**Mohu pomocí client.dpp.update aktualizovat GTIN nebo sériové číslo?**
Ne — GTIN a sériové číslo jsou neměnné; jsou to stabilní identita produktu. Aktualizovat lze pouze datová pole. Právě tato neměnnost je to, co umožňuje, aby vytištěný QR kód zůstal navždy platný.

## Zdroje

- [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)

**Začněte zdarma** a zapojte svůj první DPP webhook: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Související články

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutoriály Testovací sada Resolveru GS1: DPP-odkazy důkladně ověřit před uvedením do provozu Stabilní testovací sada GS1 umožňuje ověřit Resolver 1.2. Před uvedením do provozu otestujete přesměrování, sady odkazů, CORS, jazyky i chybové stavy.](/cs/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Novinky z oboru BatteryPass-Ready spouští testovací prostředí pro digitální bateriový pas Konsorcium BatteryPass-Ready spustilo 24. června 2026 veřejné testovací prostředí pro digitální bateriový pas s ohledem na povinnost EU od února 2027.](/cs/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Novinky z oboru Digitální bateriový pas 2027: Co nyní výrobci potřebují vědět Webináře, nástroje s otevřeným zdrojovým kódem a nové normy: evropský bateriový pas nabírá na rychlosti. Přehled stavu v červenci 2026 a otevřených otázek do února 2027.](/cs/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Novinky z oboru Digitální pas baterie 2026: testovací prostředí, normy a otevřené otázky Jak si průmysl vede v oblasti digitálního pasu baterie? Přehled testovacích prostředí, norem CEN/CENELEC, open source nástrojů a regulatorních kroků v červenci 2026.](/cs/blog/sector-20260711/)

[← Všechny články](/cs/blog/) [Začít zdarma](https://app.qr3.app/sign-up)
