# URL Értesítés

### Működés

Használja a `NotificationUrl` paramétert, hogy automatikusan értesüljön a tranzakciók státuszának változásáról. Az inicializáció (`Init`) során adja át az értesítési URL címet a `NotificationUrl` paraméterben. Rendszerünk ezt a címet hívja meg a tranzakció státuszának megváltozásakor.

Rendszerünk legfeljebb 5 alkalommal kísérli meg a megadott értesítési URL hívását, amíg a hívásra HTTP 200 választ nem kap. Az értesítés a tranzakció részletes adatait tartalmazza JSON formátumban (a `Details` hívás eredményének megfelelően), amit `application/json` típusként küldünk, így az adat a *raw request body*-ból nyerhető ki.

Jelezze vissza rendszerünk számára, hogy a kereskedő oldala értesült a tranzakció eredményéről. Ehhez indítson egy `Result` kérést minden rendszerünktől visszaérkező `NotificationUrl` hívás után. `Result` kérés hiányában a tranzakció “megválaszolhatatlan” állapotot kap a *PayAdmin* felületén.

Az alapértelmezett (lineáris időközönként maximum 5 alkalommal történő) URL értesítési eljárás mellett elérhető egy kiterjesztett URL értesítési eljárás is.

Ebben az esetben az értesítési kísérletek fokozatosan elnyújtott időközönként történnek az alábbi logika szerint:

* Azonnal a végstátusz beállítását követően.
* 5 másodperc elteltével.
* 10 másodperc elteltével.
* 30 másodperc elteltével.
* 1 perc elteltével.
* 5 perc elteltével.
* 15 perc elteltével.
* 30 perc elteltével.
* 1 óra elteltével.
* 3 óra elteltével.
* 6 óra elteltével.
* 12 óra elteltével.
* 1 nap elteltével.

A kiterjesztett URL értesítés igénybevételéhez vegye fel a kapcsolatot az ügyfélszolgálatunkkal a <business@nevogate.com> címen.

{% hint style="warning" %}
A `NotificationUrl` átadása minden tranzakció inicializáció során kötelező.\
Továbbá figyeljen arra, hogy a megadott értesítési URL cím (`NotificationUrl`):

* rendelkezzen HTTPS protokollal
* legyen mindenkor publikusan elérhető
  {% endhint %}

{% hint style="danger" %}
A JSON formátumú értesítésben található paraméterek kis kezdőbetűkkel szerepelnek. Ezzel ellentétben a tranzakció részletes adatainak lekérdezésére (`Details` hívásra) adott válasz paraméterei nagy kezdőbetűvel rendelkeznek.
{% endhint %}

### Beállítás lépései

Végezze el a következő lépéseket az URL értesítés megfelelő működéséhez.

{% hint style="warning" %}
A leírt folyamatot minden egyes `NotificationUrl` híváskor végre kell hajtani.
{% endhint %}

1. Adjon meg egy értesítési URL címet a `NotificationUrl` paraméter segítségével.
2. Vizsgálja meg, hogy a *raw request body* tartalmaz JSON típusú adattartalmat (a rendszerünkből érkező `NotificationUrl` hívás során).
3. Nyerje ki az aktuális `TransactionId` értéket a *raw request body*-ból.
4. Indítson egy `Result` kérést melyben megadja a `NotificationUrl` törzséből kinyert `TransactionId` értéket.
5. Dolgozza fel a `Result` kérésre kapott választ, majd
6. mentse el a rendszerében a tranzakció végstátuszát (`ResultCode`).
7. Válaszoljon HTTP 200-as státusz kóddal a rendszerünkből érkező `NotificationUrl` hívásra.

{% hint style="info" %}
PHP használata esetén így nyerheti ki a `TransactionId` értékét:

```php
$json = file_get_contents('php://input');
$data = json_decode($json);
$transactionId = $data->commonData->transactionId;
```

{% endhint %}

### Példa (URL értesítés beállítására teszt környezetben)

{% code overflow="wrap" %}

```php
curl --url 'https://system-test.paymentgateway.hu/api/payment/' \
  --user 'sdk_test:86af3-80e4f-f8228-9498f-910ad' \
  --user-agent 'Init | merchant-store.com | PHP | 7.3.0' \
  --request 'POST' \
  --data 'method=Init' \
  --data 'json=
    {
        "StoreName":"sdk_test",
        "ProviderName":"Borgun2",
        "ResponseUrl":"https://demo.nevogate.com/response.php",
        "Amount":100,
        "Currency":"HUF",
        "OrderId":"TEST-ORDER-ID",
        "UserId":"TEST-USER-ID",
        "NotificationUrl":"https://merchant.notification.url"
    }'
```

{% endcode %}
