# Tranzakció inicializálása (InitRP) (regisztrált fizetőeszközzel)

### Működés

Használja az inicializálás (`InitRP`) funkciót a rákövetkező fizetések létrehozásához, a korábbi referencia tranzakció azonosító használatával. A referencia azonosító megegyezik a fizetőeszköz regisztrációja során végrehajtott tranzakció azonosítójával (`TransactionId`). Ezt az azonosítót a regisztrált fizetési eszközök lekérdezése során is visszaadjuk `ReferenceTransactionId` néven, a `GetPaymentRegistrations` hívás válaszában. A referencia tranzakció azonosítójára hivatkozva, a rákövetkező tranzakciók már a fizetési eszköz adatainak ismételt megadása nélkül hozhatók létre.

Az inicializálás során figyeljen a következőkre:

* Adja át a `ReferenceTransactionId` paramétert a rákövetkező fizetéshez.
* Használjon erős ügyfél-hitelesítést (PSD2/SCA) a vásárló adatainak átadásához. Erről a következő oldalon olvashat részletesebben: [Erős ügyfél-hitelesítés (PSD2/SCA)](https://docs.nevogate.com/ismetlodo-fizetes-recurring-payment/bankkartya-es-mobiltarca/azonnali-terheles/rakoevetkezo-fizetes-regisztralt-fizetoeszkoezzel/eros-uegyfel-hitelesites-psd2-sca)
* Tárolja le az `InitRP` kérésre visszaadott referencia tranzakció azonosítót, mivel később ennek segítségével hivatkozhat az adott tranzakcióra.

[<mark style="color:blue;background-color:blue;">**Próbálja ki ezt a funkciót!**</mark>](https://demo.nevogate.com/views/?action=startRP)

{% hint style="info" %}
Az inicializációban a fizetési szolgáltatók nem vesznek részt, ez a folyamat kizárólag a kereskedő oldala és a *Nevogate* rendszere között zajlik.\
\
A regisztrált fizetőeszköz adatainak lekérdezéséről és a `GetPaymentRegistrations` hívásról a következő hivatkozáson olvashat további részleteket:

[Fizetőeszköz-regisztráció lekérdezése](https://docs.nevogate.com/ismetlodo-fizetes-recurring-payment/regisztralt-fizetoeszkoez-kezelese/fizetoeszkoez-regisztracio-lekerdezese)
{% endhint %}

{% hint style="warning" %}
A sikeres inicializálást (`InitRP` hívás) követően a tranzakciót egy `StartRP` hívással kell elindítani.\
\
Mobilalkalmazás fejlesztésnél biztosítsa, hogy az inicializációra a szerver oldalon kerüljön sor. Biztonsági okokból az **inicializáció nem történhet meg a mobilalkalmazásban**.
{% endhint %}

Az ismétlődő fizetési tranzakciók esetén a Nevogate a kereskedőnél megvalósult fizetőeszköz-regisztráció céljából indított fizetési tranzakció adatai alapján egyedi tranzakciós lenyomatot, ún. **referencia tranzakciót hoz létre**. Ezt egyértelműen hozzárendeli a kereskedő által a tranzakció során átadott `UserId` paraméterhez, amely a vásárló egyedi azonosítására szolgál a kereskedő rendszerén belül.

{% hint style="danger" %}
A kereskedőnek a funkció igénybevétele során biztosítania kell, hogy **saját rendszerén belül minden vásárlójához egyedi** `UserId`**-t rendeljen**. Kiemelt fontosságú, hogy egy már kiosztott azonosító semmilyen körülmények között ne kerülhessen újra hozzárendelésre egy másik vásárlóhoz. Amennyiben ez nem teljesül, kritikus adatintegritási és biztonsági sebezhetőség jön létre: ha két vagy több vásárlóhoz ugyanaz az `UserId` tartozik, az egyikük által regisztrált fizetőeszközzel egy másik vásárló tranzakciói is teljesülhetnek.

A fenti utasítások be nem tartásából eredő hibáért és az ebből fakadó esetleges károkért a Nevogate-et felelősség nem terheli, azért **kizárólag a kereskedő felelős**.
{% endhint %}

### **API kérés paraméterek**

#### Az API kérés általános információi

<table data-full-width="true"><thead><tr><th>Művelet</th><th>HTTP kérés</th><th>Adatok</th></tr></thead><tbody><tr><td><code>InitRP</code></td><td><code>POST</code></td><td>method=<code>InitRP</code><br><br>json={JSON encode-olt paraméterek}</td></tr></tbody></table>

{% hint style="info" %}
Az API kérésekhez kapcsolódó paramétereket két táblázatba soroljuk fel a könnyebb átláthatóság kedvéért. Természetesen az egyes paraméterek megjelenhetnek ugyanabban az API kérésben.

Az API paraméterek felosztása a következő:

* kötelező paraméterek
* opcionális paraméterek
  {% endhint %}

#### **Kötelező paraméterek**

<table data-full-width="true"><thead><tr><th>Paraméter</th><th width="141">Típus</th><th>Érték</th><th>Leírás</th></tr></thead><tbody><tr><td><code>StoreName</code></td><td>string</td><td>A <em>Nevogate</em> szerződésben kerül meghatározásra.</td><td>Rendszerünkben tárolt egyedi bolt azonosító.</td></tr><tr><td><code>ReferenceTransactionId</code></td><td>string</td><td>32 karakter hosszú md5 hash</td><td>A fizetőeszköz-regisztrációhoz kapcsolódó tranzakció azonosítója a <em>Nevogate</em> rendszerében.</td></tr><tr><td><code>ResponseUrl</code></td><td>string<br><br>(255 karakter)</td><td>szabadon választható</td><td>Ha fizetési folyamat végén a tranzakció státusza PENDING, akkor a tranzakció végleges státuszának beálltakor, aszinkron módon meghívásra kerül az itt átadott URL.</td></tr><tr><td><code>NotificationUrl</code></td><td>string<br><br>(255 karakter)</td><td>szabadon választható</td><td>Rendszerünk ezen a címen értesíti a kereskedőt a tranzakció státuszának változásáról (<a href="url-ertesites">URL értesítés</a>).</td></tr><tr><td><code>Info</code></td><td>string</td><td>egyedi értékek</td><td>A vásárlás és a vásárló adatai az erős ügyfél-hitelesítéshez (<a href="eros-uegyfel-hitelesites-psd2-sca">PSD2/SCA</a>).</td></tr></tbody></table>

#### **Opcionális paraméterek**

<table data-full-width="true"><thead><tr><th>Paraméter</th><th width="141">Típus</th><th>Érték</th><th>Leírás</th></tr></thead><tbody><tr><td><code>Amount</code></td><td>number</td><td>egyedi értékek</td><td><p>A tranzakció bruttó végösszege (az összeg amit a vásárló kifizet).<br></p><p>Amennyiben nincs megadva, úgy a referencia tranzakciónál megadott érték kerül beállításra.</p></td></tr><tr><td><code>Currency</code></td><td>string<br><br>(3 karakter)</td><td><ul><li>HUF (alapért.)</li><li>EUR</li><li>USD</li><li>...</li></ul></td><td>A fizetés devizaneme.<br><br>Értéke meg kell, hogy egyezzen a referencia tranzakciónál megadott értékkel.<br><br>Amennyiben nincs megadva, úgy a referencia tranzakciónál megadott érték kerül beállításra.</td></tr><tr><td><code>OrderId</code></td><td>string<br><br>(255 karakter)</td><td>egyedi értékek<br><br>(kivéve e-mail címek, illetve személyes adatok)</td><td><p>A megrendelés azonosítója a kereskedő áruházában.</p><p>(Lehetővé teszi a tranzakció visszakeresését, használata erősen javasolt.)</p></td></tr><tr><td><code>UserId</code></td><td><code>UserId</code></td><td>egyedi értékek<br><br>(kivéve e-mail címek, illetve személyes adatok)</td><td>A vásárló azonosítója a kereskedő áruházában, amelyre a korábbi fizetőeszköz-regisztráció végrehajtásra került.<br><br>Amennyiben nincs megadva, úgy a referencia tranzakciónál megadott érték kerül beállításra.</td></tr><tr><td><code>ModuleName</code></td><td>string<br><br>(32 karakter)</td><td>egyedi értékek</td><td>A kereskedő oldalán használt szervizcsomag, programnyelv, keretrendszer, modul, stb. megnevezése.</td></tr><tr><td><code>ModuleVersion</code></td><td>string<br><br>(8 karakter)</td><td>verziószám</td><td>A kereskedő oldalán használt szervizcsomag, programnyelv, keretrendszer, modul, stb. verziószáma.</td></tr></tbody></table>

#### **Mintakód**

Rákövetkező tranzakció inicializálása `InitRP` kérés használatával:

{% code overflow="wrap" %}

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

{% endcode %}

### **API válasz paraméterek**

Az `InitRP` kérés eredményét JSON formában válaszoljuk meg. A válasz a következő paramétereket tartalmazza:

<table data-full-width="true"><thead><tr><th>Paraméter</th><th width="91">Típus</th><th>Érték</th><th>Leírás</th></tr></thead><tbody><tr><td><code>TransactionId</code></td><td>string</td><td><p>Sikeres inicializálás:</p><ul><li>32 karakter hosszú md5 hash</li></ul><p>Sikertelen inicializálás:</p><ul><li>null</li></ul></td><td>A tranzakció azonosítója a <em>Nevogate</em> rendszerében.</td></tr><tr><td><code>ResultCode</code></td><td>string</td><td><p>Sikeres inicializálás:</p><ul><li>SUCCESSFUL</li></ul><p>Sikertelen inicializálás:</p><ul><li>InactiveStore</li><li>InactiveProvider</li><li>MissingParameter</li><li>MissingRemoteAddress</li><li>UnauthorizedAccess</li><li>UnauthorizedRemoteAddress</li><li>UnknownParameter</li><li>UnknownProvider</li><li>UnknownProviderForStore</li><li>UnknownStore</li><li>WrongApikey</li><li>WrongParameter</li><li>WrongProviderSettings</li></ul><p>Illetve további szolgáltató specifikus eredménykódok.</p></td><td><p>Jelzi a tranzakció inicializálás eredményét.<br><br>Sikertelen inicializálás esetén jelzi a hiba okát.</p><p>A felsoroltakon kívül további szolgáltató specifikus eredménykódokat is tartalmazhat.</p></td></tr><tr><td><code>ResultMessage</code></td><td>string</td><td>leírás</td><td>Az egyes <code>ResultCode</code> értékek szöveges magyarázata.</td></tr><tr><td><code>ResponseId</code></td><td>integer</td><td>egyedi értékek</td><td>A válaszüzenet egyedi azonosítója a <em>Nevogate</em> rendszerében.</td></tr></tbody></table>

#### **Mintakód**

Sikeres inicializálásra adott válasz:

{% code overflow="wrap" %}

```php
{
    "TransactionId": "90866b50774d8341be49c1aea1ede5a6",
    "ResultCode": "SUCCESSFUL",
    "ResultMessage": null,
    "ResponseId": "3202109280600047718"
}
```

{% endcode %}
