> For the complete documentation index, see [llms.txt](https://docs.maibmerchants.md/e-commerce/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maibmerchants.md/e-commerce/ro/generare-token-de-acces.md).

# Generare Token de acces

| API endpoint (POST)                              |
| ------------------------------------------------ |
| <https://api.maibmerchants.md/v1/generate-token> |

Pentru a genera Token-ul de acces aveți nevoie de *Project ID* și *Project Secret* care sunt disponibile după activarea Proiectului în [*<mark style="color:blue;">**maibmerchants**</mark>*](https://maibmerchants.md/).

**Flow autentificare prin Token de acces:**

1. Efectuați un request folosind *Project ID / Project Secret* către endpoint-ul de generare token. Dacă datele transmise sunt valide veți primi ca răspuns Token (expirare Token) și Refresh Token (expirare Refresh Token).
2. Dacă Token-ul a expirat folosiți Refresh Token pentru genera un nou Token de acces. În cazul în care și Refresh Token a expirat folosiți *Project ID / Project Secret* (vedeți pct. 1).
3. Efectuați request-uri către **maib ecomm** folosind Token-ul de acces.&#x20;

### 1. Generare Token cu Project ID și Project Secret <a href="#merchanthubapidocsro-1.generaretokenfolosindprojectidsiprojectsecret" id="merchanthubapidocsro-1.generaretokenfolosindprojectidsiprojectsecret"></a>

**Parametri pentru request (body)**

<table><thead><tr><th>Parametru</th><th>Obligatoriu</th><th width="137">Tip</th><th>Descriere</th></tr></thead><tbody><tr><td>projectId</td><td>DA</td><td>string (uiid)</td><td>Project ID din <strong>maibmerchants</strong></td></tr><tr><td>projectSecret</td><td>DA</td><td>string (uiid)</td><td>Poject Secret din <strong>maibmerchants</strong></td></tr></tbody></table>

**Exemplu request (CURL)**

```bash
curl --location --request POST "https://api.maibmerchants.md/v1/generate-token" \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "projectId": "95f48bc4-bb2d-4682-a2a6-c573fe1a35ca",
    "projectSecret": "60462913-da44-47fa-8c82-146b676729b9"
    }'
```

**Parametri răspuns (instant)**

<table><thead><tr><th width="211">Parametru</th><th width="109.33333333333331">Tip</th><th>Descriere</th></tr></thead><tbody><tr><td>result</td><td>object</td><td>Obiect care conține Token și Refresh Token.</td></tr><tr><td><ul><li>accessToken</li></ul></td><td>string</td><td>Token de acces.</td></tr><tr><td><ul><li>expiresIn</li></ul></td><td>integer</td><td>Durata de viață a tokenului, în secunde.</td></tr><tr><td><ul><li>refreshToken</li></ul></td><td>string</td><td>Refresh Token pentru generarea unui nou Token de acces.</td></tr><tr><td><ul><li>refreshExpiresIn</li></ul></td><td>integer</td><td>Durata de viață Refresh Token, în secunde.</td></tr><tr><td><ul><li>tokenType</li></ul></td><td>string</td><td>Tip token (<em>Bearer</em>)</td></tr><tr><td>ok</td><td>boolean</td><td><p>Stare procesare request.</p><p><em>true</em> - nu sunt erori</p><p><em>false -</em> sunt erori (detaliile despre erori vor fi în afișate în <em>errors)</em></p></td></tr><tr><td>errors</td><td>array</td><td>Erori procesare request. <a href="/e-commerce/ro/erori/erori-api.md"><mark style="color:blue;">Tabelul cu erori</mark></a></td></tr><tr><td><ul><li>errorCode</li></ul></td><td>string</td><td>Cod eroare</td></tr><tr><td><ul><li>errorMessage</li></ul></td><td>string</td><td>Descriere eroare</td></tr><tr><td><ul><li>errorArgs</li></ul></td><td>object</td><td>Obiectul conține parametri cu detalii despre eroare</td></tr></tbody></table>

**Exemplu răspuns**

{% tabs %}
{% tab title="Fără erori" %}

```json
{
  "result": {
    "accessToken": "xxxxxx",
    "expiresIn": 300,
    "refreshToken": "xxxxxx",
    "refreshExpiresIn": 1800,
    "tokenType": "Bearer"
  },
  "ok": true
}
```

{% endtab %}

{% tab title="Cu erori" %}

```json
{
    "errors": [
        {
            "errorCode": "11001",
            "errorMessage": "Invalid credentials. Please check 'projectId' and 'projectSecret' parameters"
        }
    ],
    "ok": false
}
```

{% endtab %}
{% endtabs %}

### 2. Generare Token cu Refresh Token

**Parametri pentru request (body)**

<table><thead><tr><th>Parametru</th><th>Obligatoriu</th><th width="143">Tip</th><th>Descriere</th></tr></thead><tbody><tr><td>refreshToken</td><td>DA</td><td>string</td><td>Refresh Token</td></tr></tbody></table>

**Exemplu request (CURL)**

```bash
curl --location --request POST "https://api.maibmerchants.md/v1/generate-token" \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "refreshToken": "xxxxxxxxxxxxx"
    }'
```

**Exemplu răspuns**&#x20;

{% tabs %}
{% tab title="Fără erori" %}

```json
"result": {
    "accessToken": "xxxxxx",
    "expiresIn": 300,
    "refreshToken": "xxxxxx",
    "refreshExpiresIn": 1800,
    "tokenType": "Bearer"
  },
  "ok": true
}
```

{% endtab %}

{% tab title="Cu erori" %}

```json
{
    "errors": [
        {
            "errorCode": "11002",
            "errorMessage": "Invalid or expired 'refreshToken' parameter"
        }
    ],
    "ok": false
}
```

{% endtab %}
{% endtabs %}

### 3. Exemplu de request cu autentificare prin Token

```bash
curl -X 'POST' \
  'https://api.maibmerchants.md/v1/pay' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer access_token' \
  -H 'Content-Type: application/json' \
  -d '{
  "clientIp": "135.250.245.121",
  "amount": 10.25,
  "currency": "MDL",
  "description": "Descriere",
  "language": "ro",
  "orderId": "123",
  "clientName": "Client Name",
  "email": "customer@gmail.com",
  "phone": "069123456",
  "delivery": 1.25,
  "items": [
    {
      "id": "123",
      "name": "Produs",
      "price": 2.5,
      "quantity": 2
    }
  ],
  "callbackUrl": "https://example.com/callback",
  "okUrl": "https://example.com/ok",
  "failUrl": "https://example.com/fail"
}'
```
