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

### Működés

Használja az inicializálás (`Init`) funkciót rákövetkező fizetés létrehozásához (amennyiben a vásárló már rendelkezik legalább egy regisztrált fizetőeszközzel). Az inicializálás során a kereskedő oldala átadja a referencia tranzakció azonosítóját, illetve az aktuális tranzakció és a vásárló adatait rendszerünknek. Ennek hatására rendszerünk létrehoz egy új tranzakciós rekordot a kereskedőtől kapott adatok felhasználásával. Sikeres inicializálás esetén az új rekord mellett rendszerünk létrehoz egy új tranzakció azonosítót is (`TransactionId`), majd visszaadja ezt az azonosítót a kereskedő oldalának.

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

* Adja át az `AutoCommit` paramétert `"false"` értékkel későbbi terhelés engedélyezéséhez.
* Adja meg a kereskedő rendszerében tárolt, **egyedi** `UserId` paramétert. Az egyes vásárlók az inicializálás során átadott `UserId` paraméter segítségével azonosíthatók be. A rákövetkező fizetéshez átadott `UserId` értéke meg kell egyezzen a referencia tranzakció során átadott `UserId` értékével.
* Adja át a `PaymentRegistration`, a `OneClickPayment` és a `ReferenceTransactionId` paramétereket az egykattintásos (one-click) 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/egykattintasos-fizetes-one-click-payment/bankkartya-es-mobiltarca/kesobbi-terheles-ketlepcsos-fizetes/rakoevetkezo-fizetes-regisztralt-fizetoeszkoezzel/eros-uegyfel-hitelesites-psd2-sca)
* Tárolja le az `Init` kérésre visszaadott 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=start)

{% 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.
{% endhint %}

{% hint style="warning" %}
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 egykattintásos 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>Init</code></td><td><code>POST</code></td><td>method=<code>Init</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="143">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>ProviderName</code></td><td>string</td><td><ul><li>Barion2</li><li>Borgun2 (Teya RPG)</li><li>GP (<em>Global Payments</em>)</li><li>KHB</li><li>OTPSimple (<em>SimplePay</em>)</li><li>PayPalRest</li><li>PayURest</li><li>Saferpay (Worldline)</li></ul></td><td>A tranzakcióhoz kiválasztott fizetési szolgáltató.</td></tr><tr><td><code>ResponseUrl</code></td><td>string<br><br>(255 karakter)</td><td>szabadon választható</td><td>Visszatérési URL: tranzakciót követően, rendszerünk erre a címre irányítja vissza a vásárlót.</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>Amount</code></td><td>number</td><td>szabadon választható</td><td>Bruttó végösszeg amit a vásárló kifizet.<br><br>(Magyar forint (HUF) esetén értéke egész szám.)</td></tr><tr><td><code>AutoCommit</code></td><td>string</td><td><ul><li>"false"</li></ul></td><td>Jelzi, hogy a vásárló kétlépcsős fizetést indít és a megadott összeget a bank befoglalhatja a vásárló számláján.</td></tr><tr><td><code>UserId</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>A vásárló azonosítója a kereskedő áruházában.</td></tr><tr><td><code>PaymentRegistration</code></td><td>boolean</td><td><ul><li>false</li></ul></td><td>Jelzi, hogy ebben az esetben nem történik fizetőeszköz-regisztráció.</td></tr><tr><td><code>OneClickPayment</code></td><td>boolean</td><td><ul><li>true</li></ul></td><td>Jelzi, hogy a tranzakció egykattintásos (one-click) fizetést eredményez.</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>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="142">Típus</th><th>Érték</th><th>Leírás</th></tr></thead><tbody><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><p>A fizetés devizaneme.<br></p><p>(Értékei fizetési szolgáltatónként és szerződésenként eltérőek lehetnek.)</p></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>Language</code></td><td>string<br><br>(2 karakter)</td><td><ul><li>HU (alapért.)</li><li>EN</li><li>DE</li><li>...</li></ul><p>(ISO 639-1 alapján)</p></td><td>A fizetési felület nyelve.</td></tr><tr><td><code>Extra</code></td><td>string</td><td>egyedi értékek</td><td>Kiegészítő vagy szolgáltató specifikus adatok (<a href="../../../../segedlet/extra-parameter-szabalyok">extra paraméter használata</a>).</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 `Init` 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 'Init | merchant-store.com | PHP | 7.3.0' \
  --request 'POST' \
  --data 'method=Init' \
  --data 'json=
    {
        "StoreName":"sdk_test",
        "ProviderName":"GP",
        "ResponseUrl":"https://demo.nevogate.com/response.php",
        "NotificationUrl":"https://www.notification.url/",        
        "Amount":100,
        "Currency":"HUF",
        "AutoCommit":"false",
        "OrderId":"TEST-ORDER-ID",
        "UserId":"TEST-USER-ID",
        "PaymentRegistration":false,
        "OneClickPayment":true,
        "ReferenceTransactionId":"992c8e75435e6d4dfdf6415f0714cae8"
    }'
```

{% endcode %}

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

Az `Init` 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 width="270">Paraméter</th><th width="101">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><br>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": "a92c8e75435e6d4dfdf6415f0714cae8",
    "ResultCode": "SUCCESSFUL",
    "ResultMessage": null,
    "ResponseId": "3202109280600047703"
}
```

{% endcode %}
