##  Fizetés típusú kimenő webhook 

A ListaMester fizetés típusú kimenő webhookja egy sima HTTP POST a ListaMester-felhasználó által megadott URL-re. A törzs a feliratkozó adatait viszi. Külön fizetési aláírás vagy HMAC nincs.

## **Mikor indul**

A hívás a csoport egy aktív, kimenő, **fizetés** (`paymentFinished`) triggerű webhookjára megy, ha a fizetés sikeresen lezárult, és a csoporthoz tartozik számlázási sablon (számla feliratkozáskor).

Két út indítja:

- Sikeres online fizetés lezárása (OTP Simple, Barion, Stripe, K&amp;H, CIB).
- A ListaMester felületéről indított fizetés-véglegesítés.

Ugyanezen az első, számlázós online fizetésen a rendszer utána egy külön **feliratkozás** webhookot is elküld, ha az is be van állítva. A két hívás külön POST.

A hívás elmarad, ha a tag kézbesítése le van tiltva, vagy a csoport kettős opt-in és az e-mail még nincs megerősítve. Sikertelen fizetés, ismétlődő (recurring) terhelés és a Számlázz.hu Autókassza IPN nem indítja a fizetés webhookot. Az Autókassza csak a feliratkozás webhookot hívhatja, és csak akkor, ha a csoportnál az „RTM csak IPN után” beállítás él.

## **HTTP hívás**

|  |  |
|---|---|
| Metódus | `POST` |
| URL | A webhooknál megadott cím. A query string a body-tól függetlenül megmarad. |
| Siker | HTTP 2xx. A válasz törzsét a ListaMester nem értelmezi. |
| Átirányítás | 301–399, legfeljebb 5 lépés, ugyanazzal a metódussal és törzzsel. |
| Hiba | 4xx és 5xx naplózódik, újrapróbálás nincs. |
| Időtúllépés | Nincs beállított connect/read timeout. |

Két törzsformátum választható. A `Content-Type` fejléc charset paramétert nem tartalmaz. Az űrlapos értékek UTF-8 szerint vannak százalék-kódolva (a szóköz `+`). A JSON törzs a szerveren UTF-8.

## **Hitelesítés**

Kriptográfiai aláírás, HMAC, időbélyeg vagy nonce nincs. A bejövő webhookok `hookKey` mezője a kimenő híváson nem megy ki.

A hitelesítés a ListaMester felületén megadott egyedi HTTP-fejlécekkel történik. Ezeket a ListaMester minden híváshoz hozzáteszi, a `Content-Type` mellé. A fogadó oldal adja meg a titkot, a ListaMester-felhasználó pedig bemásolja a webhook fejlécébe. A végpont legyen HTTPS.

Példa:

```plaintext
Authorization: Bearer <a fogadó rendszer által kiadott titok>
```

vagy

```plaintext
X-Api-Key: <megosztott kulcs>
```

A felületen rögzített statikus törzsmezők ugyanígy minden hívásban szerepelnek. Egy `event=payment` mezővel akkor is felismerhető az esemény, ha több trigger ugyanarra az URL-re mutat.

## **Mezők**

A mezőnevek nem fix sémák. A kulcsokat a webhook beállítása adja. A törzsben nincs összeg, pénznem, tranzakcióazonosító, számlaszám, rendelésazonosító vagy esemény neve, amíg ezeket adatmező-hozzárendelés vagy statikus mező nem teszi bele.

| **Kulcs** | **Honnan jön** | **Érték** |
|---|---|---|
| Az „email mező azonosítója” | Tag e-mail-címe | Szöveg. Üres kulcs vagy üres érték az űrlapos formátumból kimarad. |
| A „név mező azonosítója” | Tag neve | Szöveg. |
| `memberId` | Mindig, fix kulcs | A ListaMester tag azonosítója, szövegként. Ugyanaz a tag minden későbbi híváson. |
| Hozzárendelt külső mezőnevek | A csoport adatmezői | Az adatmező szöveges értéke. Többválasztós mezőnél az értékek `;` karakterrel vannak összefűzve. |
| Statikus mezők | A webhookon megadott név és érték | Változatlan szöveg minden hívásban. |

Ütközéskor a hozzárendelt mező felülírja az azonos nevű statikus vagy beépített kulcsot, az e-mail, a név és a `memberId` pedig felülírja az azonos nevű statikus mezőt. JSON-ban a hiányzó adatmező `null`. Űrlapos kódolásnál az üres érték kimarad a törzsből. A mezők sorrendje nem garantált.

A `memberId` a tagot azonosítja, egy fizetési eseményt nem. Ismételt véglegesítés ugyanazzal a `memberId`-vel újabb POST-ot küld. A fogadó oldal kezelje a hívást újra feldolgozhatóként.

## **Minta, JSON**

`Content-Type: application/json`

A példa azt feltételezi, hogy az e-mail mező neve `email`, a név mező neve `name`, van két hozzárendelt mező (`szamlazasiNev`, `adoszam`), és van egy statikus `event` mező.

```plaintext
{
  "event": "payment",
  "email": "vasarlo@example.com",
  "name": "Kovács Anna",
  "memberId": "123456",
  "szamlazasiNev": "Minta Kft.",
  "adoszam": "12345678-1-42"
}
```

## **Minta, űrlap**

`Content-Type: application/x-www-form-urlencoded`

```plaintext
event=payment&email=vasarlo%40example.com&name=Kov%C3%A1cs+Anna&memberId=123456&szamlazasiNev=Minta+Kft.&adoszam=12345678-1-42
```

## **Válasz**

A fogadó adjon vissza gyorsan 2xx-et. A törzs tartalma közömbös. 4xx vagy 5xx esetén a ListaMester nem küldi újra a hívást.

## **Beállítás a ListaMesterben**

A webhook a csoport integrációinál hozható létre, PRO csomaggal. Irány: kimenő hívás. Trigger: fizetés. Adatformátum: JSON vagy URL-kódolt. Kötelező a meghívandó URL. Ide kerül a titkos fejléc, az e-mail és a név mezőneve, a statikus mezők és az adatmező-hozzárendelések. A webhook legyen aktív, és a csoporthoz legyen számlasablon rendelve, különben a fizetés trigger nem fut le.