# Integrazione API (/it/in-store/integration/backend_integration)





Per consentire ai Suoi esercenti di usare il Tapaya Accept SDK, il Suo backend registra ogni esercente e richiede un
token di accesso di breve durata per ogni sessione dell'SDK. Entrambe le chiamate usano il Suo Server Secret Token; per
generarne uno, consulti [Autenticazione della Platform API](/platform-api#authentication).

L'onboarding degli esercenti e il recupero dei dati di pagamento funzionano allo stesso modo per tutti i prodotti Tapaya e sono descritti
nella sezione condivisa Panoramica: [API di onboarding degli esercenti](/platform-api/merchant_onboarding) e
[Reportistica e pagamenti](/platform-api/reporting).

<Callout title="Instradamento per ambiente" type="info">
  L'Accept SDK instrada automaticamente le richieste in base a come è stato inizializzato:

  * **Sandbox (predefinita):** si connette all'ambiente sandbox all'indirizzo `https://api.sandbox.tapaya.com`.
  * **Produzione:** si connette all'ambiente di produzione all'indirizzo `https://api.tapaya.com`.
</Callout>

## Autenticazione degli esercenti (integrazioni con l'Accept SDK) [#merchant-authentication-accept-sdk-integrations]

<Callout title="Solo per integrazioni con l'Accept SDK" type="info">
  Salti questa sezione se controlla direttamente l'app **Tapaya Terminal** (intent/deeplink, senza SDK incorporato);
  in tal caso il merchant of record è l'account che ha effettuato l'accesso a Tapaya Terminal, e il Suo backend non
  autentica mai una sessione dell'esercente. Consulti [Integrare senza l'SDK](./card_terminal#integrate-without-the-sdk).
</Callout>

Per consentire ai Suoi esercenti di usare il Tapaya Accept SDK, deve implementare i seguenti endpoint sul Suo backend.

<div className="fd-steps [&_h3]:fd-step">
  ### Registrare un nuovo esercente [#register-a-new-merchant]

  Prima di poter usare l'SDK, un esercente deve essere registrato nel sistema Tapaya. Di solito ciò avviene quando un utente
  si registra al Suo servizio. È sufficiente registrare l'esercente una sola volta. La registrazione può essere effettuata nella Tapaya Platform
  UI oppure tramite l'API.

  **Endpoint:** `POST /merchant/auth/register`

  <CodeBlockTabs defaultValue="curl" groupId="http-client">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="curl">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="curl">
      ```bash
      curl -X 'POST' 'https://api.tapaya.com/merchant/auth/register' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: REPLACE_ME' \
      -d '{
              "merchantToken": "unique_merchant_id_from_your_db",
              "merchantName": "Acme Corp",
              "email": "admin@acme.com"
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>

  **Parametri:**

  | Campo                                                               | Tipo     | Obbligatorio | Descrizione                                                                                         |
  | ------------------------------------------------------------------- | -------- | ------------ | --------------------------------------------------------------------------------------------------- |
  | `merchantToken`                                                     | `string` |              | Un identificatore univoco e stabile del Suo sistema (ad esempio l'ID nel database) che identifica   |
  | l'esercente. Se non viene fornito, viene generato un token casuale. |          |              |                                                                                                     |
  | `merchantName`                                                      | `string` |              | Nome leggibile con cui identificare l'esercente nella dashboard e nei report. Se non viene fornito, |
  | si usa `merchantToken`.                                             |          |              |                                                                                                     |
  | `email`                                                             | `string` | ✓            | E-mail dell'amministratore dell'esercente, usata per l'accesso e per le comunicazioni critiche.     |

  **Risposte:**

  | Codice | Descrizione                         |
  | ------ | ----------------------------------- |
  | `200`  | Esercente registrato correttamente  |
  | `400`  | Errore di convalida della richiesta |
  | `401`  | Non autorizzato                     |
  | `409`  | Conflitto: esercente già registrato |

  **Corpo della risposta:**

  ```json
  {
      "merchantToken": "unique_merchant_id_from_your_db"
  }
  ```

  ### Generare il token di accesso [#generate-login-token]

  Per consentire a un dispositivo mobile di inizializzare l'SDK per un determinato esercente, deve generare un token di accesso di breve durata.
  La Sua app mobile lo richiede al Suo backend, e il Suo backend lo richiede a Tapaya. Serve un token
  nuovo ogni volta che l'SDK viene [inizializzato](./sdk_integration#initialization).

  **Endpoint:** `POST /merchant/auth/login`

  <CodeBlockTabs defaultValue="curl" groupId="http-client">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="curl">
        cURL
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="curl">
      ```bash
      curl -X 'POST' 'https://api.tapaya.com/merchant/auth/login' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: REPLACE_ME' \
      -d '{
              "merchantToken": "unique_merchant_id_from_your_db",
              "allowOnboarding": true,
              "employeeEmail": "john@acme.com"
          }'
      ```
    </CodeBlockTab>
  </CodeBlockTabs>

  **Parametri:**

  | Campo                                                                                                                                  | Tipo      | Obbligatorio | Descrizione                                                                             |
  | -------------------------------------------------------------------------------------------------------------------------------------- | --------- | ------------ | --------------------------------------------------------------------------------------- |
  | `merchantToken`                                                                                                                        | `string`  | ✓            | Identificatore dell'esercente presso l'integratore, per il quale verrà                  |
  | emesso il token di autenticazione. Lo stesso usato in `/auth/register`.                                                                |           |              |                                                                                         |
  | `allowOnboarding`                                                                                                                      | `boolean` |              | `true` se l'utente può consultare e aggiornare i dati di onboarding/KYB, attivare nuovi |
  | metodi di pagamento e accettare i Termini e condizioni per conto dell'esercente. Deve essere `true` alla prima chiamata per consentire |           |              |                                                                                         |
  | all'esercente di attivare almeno un metodo di pagamento. `false` se all'utente è negato l'accesso all'onboarding e può usare solo      |           |              |                                                                                         |
  | i metodi di pagamento già configurati. Il valore predefinito è `true`.                                                                 |           |              |                                                                                         |
  | `employeeEmail`                                                                                                                        | `string`  |              | E-mail del dipendente che usa il terminale.                                             |

  **Risposte:**

  | Codice | Descrizione                                     |
  | ------ | ----------------------------------------------- |
  | `200`  | Accesso dell'esercente effettuato correttamente |
  | `400`  | Errore di convalida della richiesta             |
  | `401`  | Non autorizzato                                 |
  | `404`  | Non trovato                                     |

  **Corpo della risposta:**

  ```json
  {
      "token": "EesrFq4PUK1WxHUj93hkrKASDFp8GxJ0"
  }
  ```

  Passi questo `token` alla Sua app mobile per [inizializzare](./sdk_integration#initialization) l'SDK. Lo trasferisca
  all'app mobile in modo sicuro e lo elimini subito dopo l'uso. Il token è vincolato all'esercente identificato da
  `merchantToken`.

  <Callout title="Avviso di sicurezza" type="warn">
    Si assicuri di usare il `merchantToken` corretto quando richiede il token per l'SDK. Il Tapaya SDK usa questo token per accedere
    per conto dell'esercente, ottenendo l'accesso ai suoi dati e ai suoi fondi.
  </Callout>
</div>
