2 - Ativação

É necessário requisitar a ativação para recuperar as credenciais. Com elas disponíveis, então se poderá requisitar pagamentos, estornos e outros serviços.

Exemplo de ativação

Requisitando ao servidor

A ativação é feita enviando uma requisição em JSON:

{
  "type": "activation",
  "downloadTheme": true // Baixar o tema durante a ativação | Booleano. Opcional
}

Isso deve ser feito por meio de WebSocket, como no exemplo abaixo, em JavaScript.

let activationRequest = {
  type: "activation"
}

// Onde `socket` é um objeto de `WebSocket`.
socket.send(JSON.stringify(activationRequest))
socket.onmessage = (event) => {
  let response = JSON.parse(event.data)

  if (response == null) {
    return
  }

  if (response.type == "activation") {
    if (response.status == "started") {
      // O fluxo de ativação foi iniciado.
      // ...

      return
    }

    if (response.status == "token") {
      // O token de ativação foi recebido e pode ser obtido do campo `token`.
      // ...

      return
    }

    if (response.status == "success") {
      /* Ativação bem-sucedida, e as credenciais podem ser obtidas dos campos da
         resposta. */
      // ...

      return
    }

    if (response.status == "failed") {
      // Falha na ativação.
      // ...

      return
    }

    if (response.status == "theme") {
      /* As configurações do tema do seller podem ser obtidas dos campos da 
         resposta. */
      // ...

      return
    }
  }

  // ...
}

O campo downloadTheme é opcional, podendo ser omitido. Quando omitido, assume-se seu valor como true.

Um exemplo mais completo pode ser encontrado no aplicativo de exemplo, na função eventActivation do arquivo activation.js.

Respostas

O Desktop Server responderá em JSON, indicando em status:

  • started: o início da ativação;
  • token: o recebimento do token de ativação;
  • success: o sucesso da ativação;
  • failed: a falha da ativação e a causa;
  • theme: ou o tema do seller.

Início da ativação

Esta resposta sinaliza o início do processo de ativação. Logo em seguida, o token para ativação será enviado pelo Desktop Server.

{
  "type": "activation",
  "status": "started",
  "message": "Iniciando requisição de token"
}

Recebimento do token

Logo após a confirmação da requisição de ativação, o token começa a ser gerado. Um novo token será recebido a cada 15 minutos.

{
  "type": "activation",
  "status": "token",
  "token": "00000000" // Token de ativação | String numérica.
}

Processo de ativação

A ativação é feita pelo seu dashboard para recuperar as credenciais, usando o token gerado com a requisição de ativação, conforme exemplo a seguir:

Cada dispositivo só precisa fazer essa ativação uma única vez para que seja criado na nossa base de dados, associando-o ao estabelecimento. Depois disso, é possível inicializar o plugin diretamente com as credenciais recebidas.

Confirmação da ativação

Confirmada e bem-sucedida a ativação, a resposta a seguir é recebida:

{
  "type": "activation",
  "status": "success",
  "marketplace": "MKTPLACE_ID", // ID do marketplace           | String numérica hexadecimal.
  "seller": "SELLER_ID",        // ID do seller                | String numérica hexadecimal.
  "accessKey": "KEY",           // Chave de acesso             | String numérica, no padrão UUID.
  "terminal": "SERIAL_NUMBER",  // Número de série do terminal | String alfanumérica.
  "sellerName": "SELLER_NAME"   // Nome do seller              | String alfanumérica.
}

Falha durante a ativação

Caso ocorra alguma falha durante o processo, a resposta será similar a esta:

{
  "type": "activation",
  "status": "failed",
  "message": "unable to get token status",
  "statusCode": -1
}

O valor de statusCode será o código do erro que ocasionou a falha, sendo -1 caso não haja um código para a causa.

Download do tema do seller

O download do tema será realizado ao final da ativação com sucesso e, caso seja bem-sucedido, a resposta será como a seguir:

{
  "type": "activation",
  "status": "theme",
  "message": "Tema baixado com sucesso",
  "color": {
      "screen": "#000000",       // Cor de fundo da tela   | String hexadecimal.
      "font": "#000000",         // Cor da fonte           | String hexadecimal.
      "button": "#000000",       // Cor do botão           | String hexadecimal.
      "buttonText": "#000000",   // Cor do texto do botão  | String hexadecimal.
      "window": "#000000",       // Cor da janela          | String hexadecimal.
      "windowText": "#000000",   // Cor do texto da janela | String hexadecimal.
      "windowButton": "#000000", // Cor do botão da janela | String hexadecimal.
      "default": "#000000"       // Cor padrão             | String hexadecimal.
  },
  "logo": {
      "coloredBase64": "data:image/png;base64,...",    // Logo colorido      | String base64.
      "monochromeBase64": "data:image/png;base64,...", // Logo monocromático | String base64.
      "paxBase64": "data:image/png;base64,..."         // Logo Pax           | String base64.
  },
  "updatedAt": "2020-01-01T00:00:00.000Z", // Data de atualização | String no padrão ISO 8601.
  "createdAt": "2020-01-01T00:00:00.000Z"  // Data de criação     | String no padrão ISO 8601.
}

Caso ocorra alguma falha durante o processo de download, a resposta será como a seguir:

{
  "type": "activation",
  "status": "failed",
  "message": "Falha ao baixar tema",
  "statusCode": -1
}

Conclusão

Ao receber a confirmação de ativação, você estará apto a utilizar o serviços de pagamento, estorno e outros.

Cancelamento assíncrono

A operação de ativação pode ser cancelada a qualquer momento enviando a requisição a seguir:

{
  "type": "abort"
}