# Simulare plată (Sandbox)

### **POST**`/v2/mia/test-pay`

Simularea plății este permisă exclusiv în mediul sandbox (testare). Acest endpoint permite testarea procesului de plată prin transmiterea unui payload cu detalii despre plată.

***

#### Cerere (Request)

Metodă: `POST`

URL: `/v2/mia/test-pay`

***

#### Parametrii cerere (body JSON)

| Parametru   | Tip              | Obligatoriu | Descriere                              |
| ----------- | ---------------- | ----------- | -------------------------------------- |
| `qrId`      | string (guid)    | Da          | Identificatorul unic al codului QR     |
| `amount`    | number (decimal) | Da          | Suma plății                            |
| `iban`      | string(100)      | Da          | IBAN-ul plătitorului                   |
| `currency`  | string (enum)    | Da          | Moneda plății (valori posibile: `MDL`) |
| `payerName` | string(200)      | Da          | Numele abreviat al plătitorului        |

#### Request example

```json
{
  "qrId": "123e4567-e89b-12d3-a456-426614174000",
  "amount": 10,
  "iban": "MD88AG000000011621810140",
  "currency": "MDL",
  "payerName": "John D."
}
```

***

#### Parametri de răspuns (Response parameters)

#### `result`

**Tip:** `object`\
Obiectul care conține rezultatul răspunsului.

***

#### Câmpuri ale obiectului `result`

| Câmp           | Tip              | Descriere                                                                                                                      |
| -------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `qrId`         | string(guid)     | Identificatorul unic al codului QR.                                                                                            |
| `qrStatus`     | string(enum)     | Starea codului QR. Valori posibile: `Active`, `Inactive`, `Expired`, `Paid`, `Cancelled`.                                      |
|                |                  | - **Active** – Stare pentru un cod QR activ.                                                                                   |
|                |                  | - **Inactive** – Stare pentru QR Static sau Hibrid dacă nu a fost efectuată nicio plată în ultimele 30 de zile.                |
|                |                  | - **Expired** – Stare pentru QR Dinamic sau Hibrid dacă perioada de valabilitate a expirat și nu a fost efectuată nicio plată. |
|                |                  | - **Paid** – Stare pentru QR Dinamic sau Hibrid după ce o plată a fost efectuată.                                              |
|                |                  | - **Cancelled** – Stare după solicitarea de anulare (`POST /v2/mia/qr/{qrId}/cancel`).                                         |
| `orderId`      | string(100)      | Identificatorul comenzii de pe partea comerciantului.                                                                          |
| `payId`        | string(guid)     | Identificatorul unic al plății.                                                                                                |
| `amount`       | number(decimal)  | Suma plății.                                                                                                                   |
| `commission`   | number(decimal)  | Comisionul perceput pentru plată.                                                                                              |
| `currency`     | string(enum)     | Moneda în care a fost efectuată plata. Valori posibile: `MDL`. Format: ISO 4217.                                               |
| `payerName`    | string(200)      | Numele prescurtat al plătitorului.                                                                                             |
| `payerIban`    | string(100)      | IBAN-ul plătitorului (International Bank Account Number).                                                                      |
| `executedAt`   | string(datetime) | Data și ora la care a fost executată plata. Format: ISO 8601-1:2019.                                                           |
| `signatureKey` | string           | Cheia semnăturii de validare a notificării.                                                                                    |

***

#### Alte câmpuri de răspuns

| Câmp     | Tip     | Descriere                                                                                            |
| -------- | ------- | ---------------------------------------------------------------------------------------------------- |
| `ok`     | boolean | Statusul procesării cererii. `true` – fără erori; `false` – a apărut o eroare (detalii în `errors`). |
| `errors` | array   | Lista erorilor întâmpinate în procesarea cererii.                                                    |

**Obiecte în `errors`**

| Câmp           | Tip    | Descriere          |
| -------------- | ------ | ------------------ |
| `errorCode`    | string | Codul erorii.      |
| `errorMessage` | string | Descrierea erorii. |

#### Response example

```json
{
  "result": {
    "qrId": "123e4567-e89b-12d3-a456-426614174000",
    "qrStatus": "Active",
    "orderId": "123",
    "payId": "6d24e4a5-c6bf-4d3e-bf7a-8d2123faf4e9",
    "amount": 10,
    "commission": 2.50,
    "currency": "MDL",
    "payerName": "John D.",
    "payerIban": "MD88AG000000011621810140",
    "executedAt": "2024-11-29T10:56:52.1380956+00:00",
    "signatureKey": "592b6999-fdd0-4fd3-9708-5cb9df590dee"
  },
  "ok": true
}
```

***

#### Note&#x20;

* Endpoint-ul este disponibil doar în mediul sandbox pentru testare.
* În cazul în care `ok` este `false`, câmpul `errors` va conține detalii despre erori.
* Valoarea `qrStatus` reflectă starea actuală a codului QR după simularea plății.
* Verificarea cheii semnăturii din câmpul `result.signatureKey` trebuie făcută conform algoritmului definit în documentația de notificări (callback).
