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
eventActivationdo arquivoactivation.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"
}