# Creare cod QR Hibrid

**POST** `/v2/mia/qr/hybrid`\
Cod QR hibrid ce poate fi plătit de mai multe ori, cu posibilitatea modificării ulterioare a sumei și a datei de expirare (prin endpoint-ul `POST /v2/mia/qr/{qrId}/extension`). Se poate plasa pe suporturi statice, cum ar fi stickere.

***

### Request Body Parameters

| Parametru    | Tip              | Obligatoriu | Descriere                                                                                                   |
| ------------ | ---------------- | ----------- | ----------------------------------------------------------------------------------------------------------- |
| `amountType` | string (enum)    | Da          | Tipul sumei pe codul QR. Valori posibile: `Fixed`, `Controlled`, `Free`.                                    |
|              |                  |             | - **Fixed:** suma fixă (se utilizează parametrul `amount`).                                                 |
|              |                  |             | - **Controlled:** suma modificabilă, dar în limitele `amountMin` și `amountMax`.                            |
|              |                  |             | - **Free:** doar pentru coduri statice, fără sumă prestabilită (clientul setează suma în aplicația băncii). |
| `currency`   | string (enum)    | Da          | <p>Moneda plății. <br>Valori posibile: <code>MDL</code>. Format ISO 4217.</p>                               |
| `terminalId` | string (max 100) | Nu          | ID-ul terminalului oferit de bancă.                                                                         |
| `extension`  | object           | Nu          | Obiect ce conține extensii pentru codul QR.                                                                 |

***

#### `extension` Object Parameters

| Parametru     | Tip               | Obligatoriu condiționat           | Descriere                                                                                                                                                                      |
| ------------- | ----------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `expiresAt`   | string (datetime) | Da                                | Data expirării codului QR hibrid (minim 1 minut, maxim 60 zile). Codul expiră dacă nu s-a plătit în ultimele 30 zile. Format ISO 8601. Exemplu: `"2029-10-22T10:32:28+03:00"`. |
| `amount`      | number (decimal)  | Da pentru `Fixed` și `Controlled` | Suma codului QR. Pentru tipurile `Fixed` și `Controlled`, trebuie: `amountMin <= amount <= amountMax`. Valori între 0 și 100000. Nu se folosește pentru `Free`.                |
| `amountMin`   | number (decimal)  | Da pentru `Controlled`            | Suma minimă permisă (pentru `Controlled`). Trebuie să fie >0 și mai mică decât `amountMax`. Nu se folosește pentru `Free` și `Fixed`.                                          |
| `amountMax`   | number (decimal)  | Da pentru `Controlled`            | Suma maximă permisă (pentru `Controlled`). Trebuie să fie > `amountMin` și <= 100000. Nu se folosește pentru `Free` și `Fixed`.                                                |
| `description` | string (max 500)  | Da                                | Descrierea comenzii.                                                                                                                                                           |
| `orderId`     | string (max 100)  | Nu                                | Identificatorul comenzii pe partea comerciantului.                                                                                                                             |
| `callbackUrl` | string (max 1000) | Nu                                | URL HTTPS unde comerciantul primește date despre plata efectuată cu succes în aplicația băncii.                                                                                |
| `redirectUrl` | string (max 1000) | Nu                                | URL HTTPS unde clientul va fi redirecționat după plata cu succes (util pentru integrare website).                                                                              |

### Request Body Example

```json
{
  "amountType": "Fixed",
  "currency": "MDL",
  "terminalId": "P011111",
  "extension": {
    "expiresAt": "2029-10-22T10:32:28+03:00",
    "amount": 50.00,
    "description": "Order description",
    "orderId": "123",
    "callbackUrl": "https://example.com/callback",
    "redirectUrl": "https://example.com/success"
  }
}
```

***

### Response Parameters

| Parametru            | Tip               | Descriere                                                                                 |
| -------------------- | ----------------- | ----------------------------------------------------------------------------------------- |
| `result`             | object            | Obiect ce conține rezultatul cererii.                                                     |
| `result.qrId`        | string (guid)     | Identificator unic al codului QR creat.                                                   |
| `result.extensionId` | string (guid)     | Identificator unic al extensiei codului QR.                                               |
| `result.url`         | string (max 1000) | URL-ul codului QR. Format HTTPS.                                                          |
| `ok`                 | boolean           | Statusul procesării cererii: `true` - fără erori, `false` - eroare (detalii în `errors`). |
| `errors`             | array             | Lista erorilor de procesare (dacă există).                                                |

***

#### `errors` Object (dacă `ok` = false)

| Parametru      | Tip    | Descriere          |
| -------------- | ------ | ------------------ |
| `errorCode`    | string | Codul erorii.      |
| `errorMessage` | string | Descrierea erorii. |

### Response Example

```json
{
  "result": {
    "qrId": "123e4567-e89b-12d3-a456-426614174000",
    "extensionId": "40e6ba44-7dff-48cc-91ec-386a38318c68",
    "url": "https://example.com/qr/123e4567-e89b-12d3-a456-426614174000"
  },
  "ok": true
}
```
