Pré-requisitos
X-APP-KEY: <APP_KEY_FIXA_DO_APP_UTG>
X-DEVICE-TOKEN: <DEVICE_TOKEN_DA_UTG>Endpoint base:
POST https://institutog10bio.com.br/router/action.php
action=apiG10bio_utgSQLite — carrinho da entrega
O carrinho deve existir localmente para não perder as leituras se a tela for fechada ou houver instabilidade.
CREATE TABLE app_entregas_rascunho (
id INTEGER PRIMARY KEY AUTOINCREMENT,
client_event_id TEXT UNIQUE,
id_utg_produtor INTEGER,
nome_produtor TEXT,
status TEXT NOT NULL DEFAULT 'RASCUNHO',
data_hora_utg TEXT,
latitude_utg REAL,
longitude_utg REAL,
accuracy_utg REAL,
id_entrega_erp INTEGER,
token_confirmacao TEXT,
expira_em TEXT,
criado_em TEXT NOT NULL,
atualizado_em TEXT
);
CREATE TABLE app_entregas_volumes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_rascunho INTEGER NOT NULL,
id_volume INTEGER NOT NULL,
codigo_qr TEXT NOT NULL,
tipo_volume TEXT NOT NULL,
descricao TEXT,
quantidade REAL NOT NULL,
lote TEXT,
validade TEXT,
payload_json TEXT NOT NULL,
criado_em TEXT NOT NULL,
UNIQUE(id_rascunho, id_volume)
);1. Listar produtores
f=listar_produtores_entrega
action=apiG10bio_utg
f=listar_produtores_entregaUsar o campo id_utg_produtor na criação da entrega. Não usar diretamente o id_cliente.
2. Consultar QR Code do volume
f=consultar_volume_qrcode
action=apiG10bio_utg
f=consultar_volume_qrcode
codigo_qr=G10-VOL-8F7A2C91Comportamento do app
- Mostrar carregamento durante a consulta.
- Não adicionar o mesmo
id_volumeduas vezes. - Exibir kit, produto, lote, validade e quantidade retornados.
- Em erro
volume_unavailable, mostrar o status recebido. - Em erro
volume_from_another_utg, bloquear a inclusão.
3. Montar e revisar o carrinho
A tela deve apresentar:
- nome do produtor;
- quantidade total de volumes;
- tipo de cada volume: KIT ou PRODUTO;
- descrição;
- lote e validade;
- botão para remover um volume antes do envio;
- botão Concluir entrega.
4. Criar a entrega
f=criar_entrega
action=apiG10bio_utg
f=criar_entrega
id_utg_produtor=4
client_event_id=550e8400-e29b-41d4-a716-446655440000
data_hora_utg=2026-08-03 13:00:00
latitude_utg=-21.8532000
longitude_utg=-47.4795000
accuracy_utg=8.50
volumes=[101,102,103]O campo volumes contém os IDs retornados por consultar_volume_qrcode.
Resposta esperada
{
"success": true,
"data": {
"id_entrega": 12,
"status": "AGUARDANDO_CONFIRMACAO",
"id_utg_produtor": 4,
"nome_produtor": "José da Silva",
"quantidade_volumes": 3,
"token_confirmacao": "ent_xxxxxxxxx",
"qr_content": "ent_xxxxxxxxx",
"expira_em": "2026-08-03 13:30:00",
"already_registered": false
}
}5. Exibir o QR Code da entrega
Depois de criar a entrega, transformar somente o valor de qr_content em QR Code.
Conteúdo do QR:
ent_36f9...token...Não incluir nome do produtor, JSON ou URL junto ao token.
Tela
- Nome do produtor
- Número da entrega
- Quantidade de volumes
- QR Code em tamanho grande
- Contagem regressiva até
expira_em
Ações
- Atualizar status
- Gerar novo QR quando expirado
- Voltar ao histórico
6. Listar entregas
f=listar_entregas_utg
action=apiG10bio_utg
f=listar_entregas_utg
status=AGUARDANDO_CONFIRMACAOO filtro status é opcional. A tela pode ter abas:
Aguardando | Confirmadas | Canceladas | Todas7. Abrir detalhes
f=detalhes_entrega_utg
action=apiG10bio_utg
f=detalhes_entrega_utg
id_entrega=12Usar pode_exibir_qr e qr_expirado para controlar a interface. O token não será retornado quando não puder mais ser exibido.
8. Renovar QR Code
f=renovar_qr_entrega
action=apiG10bio_utg
f=renovar_qr_entrega
id_entrega=12Mostrar o botão somente quando a entrega estiver em AGUARDANDO_CONFIRMACAO e o QR tiver expirado. O token anterior deixa de funcionar.
Bibliotecas previstas no React Native com Expo
expo-camerapara leitura dos QR Codes.expo-locationpara latitude, longitude e precisão.expo-cryptopara gerar o UUID doclient_event_id.expo-sqlitepara carrinho, histórico e fila local.expo-secure-storepara oDEVICE_TOKEN.- Biblioteca de QR Code compatível com React Native para exibir
qr_content.
Checklist para considerar a tela pronta
- Produtores carregados pela API.
- Leitor bloqueia QR duplicado no carrinho.
- Carrinho permanece salvo ao fechar o app.
- Localização validada antes da conclusão.
client_event_idsalvo antes do envio.- Timeout reaproveita o mesmo evento.
- QR temporário exibido após sucesso.
- Histórico e detalhes funcionando.
- Renovação disponível após expiração.
- Nenhuma baixa definitiva feita pelo app UTG.