Documentações Grupo Eko´s

1) Primeiro acesso — Solicitação e liberação do aparelho

Documentação exclusiva do aplicativo G10 Bio Produtor.

Offline-first Leitura de QR Code Aprovação da franqueadora DEVICE_TOKEN

Resumo do fluxo

O produtor lê o QR Code apresentado pelo franqueado. A leitura é salva primeiro no SQLite.

Havendo internet, o aplicativo tenta enviar a solicitação imediatamente. Sem internet ou em caso de falha, o registro permanece em uma fila local para nova tentativa.

O acesso somente será liberado depois da aprovação da franqueadora.

MANTER do G10 Cytrus

  • Leitura de QR Code.
  • Funcionamento offline com SQLite.
  • client_event_id para evitar duplicidade.
  • Captura de data, hora e geolocalização.
  • Fila local com tentativas de reenvio.
  • Armazenamento seguro do device_token.

ALTERAR em relação ao G10 Cytrus

  • A leitura do QR Code não libera o aplicativo imediatamente.
  • O registro deve ser salvo primeiro no SQLite.
  • O primeiro envio não utiliza f=sincronizacao_offline.
  • A sincronização offline normal somente será usada após a geração do device_token.
  • O aplicativo deve aguardar a aprovação da franqueadora.

Fluxo no aplicativo

  1. Informar o nome do aparelho.
  2. Ler o QR Code apresentado pelo franqueado.
  3. Gerar um client_event_id.
  4. Salvar a leitura no SQLite.
  5. Tentar enviar a solicitação caso exista internet.
  6. Manter na fila local caso o envio não seja concluído.
  7. Exibir o status Aguardando aprovação.
  8. Consultar a situação sempre que o aplicativo for aberto.
  9. Quando aprovado, salvar o device_token e liberar o acesso.

Dados salvos no SQLite

client_event_id
pairing_code
device_name
data_leitura
hora_leitura
latitude
longitude
status_envio
status_solicitacao
tentativas_envio
ultima_tentativa_em
ultima_consulta_em
motivo_rejeicao

Endpoint 1: enviar solicitação de vínculo

POST https://agroecologia.grupoekos.com.br/router/action.php

Headers

X-APP-KEY: <APP_KEY_FIXA_DO_APP_PRODUTOR>

Body

action=apiG10bio_produtor
f=enviar_solicitacao_vinculo
pairing_code=
device_name=
client_event_id=
data_leitura=
hora_leitura=
latitude=
longitude=

Este endpoint não exige X-DEVICE-TOKEN, pois o aparelho ainda não foi pareado.

Resposta do envio — HTTP 200

{
"success": true,
"msg": "Solicitação recebida e aguardando aprovação.",
"data": {
"status": "PENDENTE",
"client_event_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}

Após essa resposta, remover o registro da fila de envio, mas manter a solicitação salva no SQLite como PENDENTE.

Endpoint 2: consultar situação da solicitação

POST https://agroecologia.grupoekos.com.br/router/action.php

Headers

X-APP-KEY: <APP_KEY_FIXA_DO_APP_PRODUTOR>

Body

action=apiG10bio_produtor
f=consultar_status_vinculo
pairing_code=
client_event_id=

O aplicativo deve consultar este endpoint sempre que for aberto enquanto ainda não possuir device_token.

Resposta: aprovado — HTTP 200

{
"success": true,
"msg": "Dispositivo aprovado e liberado com sucesso.",
"data": {
"status": "APROVADO",
"device_token": "dev_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"device_id": 123,
"account_type": "produtor",
"pairing_burned": true
}
}
  • status: situação atual da solicitação.
  • device_token: token permanente do aparelho.
  • device_id: identificador do aparelho na API.
  • account_type: perfil liberado para o aplicativo.
  • pairing_burned: informa se o código temporário foi consumido.

Depois da aprovação, salvar o device_token em armazenamento seguro e liberar o aplicativo.

Resposta: aguardando aprovação — HTTP 200

{
"success": true,
"msg": "Solicitação aguardando aprovação da franqueadora.",
"data": {
"status": "PENDENTE",
"device_token": null
}
}

Manter o usuário na tela de espera e consultar novamente na próxima abertura do aplicativo.

Resposta: rejeitado — HTTP 200

{
"success": true,
"msg": "Solicitação rejeitada.",
"data": {
"status": "REJEITADO",
"device_token": null,
"motivo_rejeicao": "Dados cadastrais divergentes."
}
}

Exibir o motivo e permitir que o produtor faça uma nova leitura de QR Code.

Erros comuns

Em caso de falha no envio, manter o registro na fila do SQLite e tentar novamente quando houver internet.

Regra ao abrir o aplicativo

SE já existir device_token


→ validar o token
→ abrir o aplicativo normalmente

SE existir solicitação ainda não enviada
→ verificar internet
→ chamar enviar_solicitacao_vinculo
→ se falhar, manter na fila local

SE existir solicitação pendente já enviada
→ verificar internet
→ chamar consultar_status_vinculo
→ PENDENTE: manter tela de espera
→ REJEITADO: mostrar o motivo
→ APROVADO: salvar device_token e liberar o acesso

SE estiver sem internet e não existir device_token
→ mostrar o último status salvo no SQLite

Após a aprovação

Somente depois de receber o device_token, o aplicativo poderá utilizar endpoints protegidos, incluindo:

action=apiG10bio_produtor
f=sincronizacao_offline

Headers:
X-APP-KEY: 
X-DEVICE-TOKEN: 

NÃO IMPLEMENTAR no app produtor

  • Cadastro do produtor pelo franqueado.
  • Geração do QR Code.
  • Aprovação ou rejeição da solicitação.
  • Cadastro direto na tabela clientes.
  • Criação ou transferência do vínculo com o franqueado.
  • Chamadas ao controlador apiG10bio_franqueado.
  • Uso de sincronizacao_offline antes do pareamento.