- Cadastro de plugin de integração "TOTVS Pagamento Instantâneo"
- Pelo tools, opção 5, deverá ser inserido um registro na tabela "pluginintegracao" com código "receitaws".
- O sistema deverá criar um novo card de plugin de integração de nome "TOTVS Pagamento Instantâneo". Ao clicar no botão "Configurar", será aberta a tela de configurações.
- Título "TOTVS Pagamento Instantâneo"
- "Manual de utilização": hiperlink para a página Plugin de integração TOTVS Pagamento Instantâneo
- Grupo de elementos "Configurações do Pentaho", com os campos:
- URL: campo de texto para receber a URL da API do Pentaho.(http://host:port)
- Usuário: campo de texto para o usuário da autenticação básica do Pentaho.
- Senha: campo de texto, com máscara de password, para a senha da autenticação básica do Pentaho.
- Grupo de elementos "Configurações do TPI"
- Tenant URL: campo de texto para a URL da API do TOTVS Pagamento Instantâneo (TPI) (TPI) estará sendo servida (Ex: https://produtosfa.rac.staging.totvs.app).
- Usuário: campo de texto para o usuário da autenticação básica do TPI.
- Senha: campo de texto, com máscara de password, para a senha da autenticação básica do TPI.
- Client ID: campo de texto para o identificador do sistema solicitante da requisição.
- Client secret: campo de texto, com máscara de password, para a senha do sistema solicitante da requisição.
- Carteira: campo de texto para o código da carteira digital, identificador "pix".
- Business Unit ID: campo de texto para o identificador da unidade de negócio geradora de transações de pagamento.
- POS ID: campo de texto para o identificador do ponto de venda cadastrado.
- Grupo de elementos "Configurações do SFA"
- Tipos de Cobrança: Campo pesquisa multipla escolha, buscando todos os tipos de cobrança ativos.
- Timeout ao gerar transação: Campo numérico para determinar o tempo de espera para a criação da transação.
- Timeout consulta pagamento: Campo numérico para determinar o tempo de espera para a consulta de pagamento.
- Configuração de envio de e-mail para contexto "Plugin TOTVS Pagamento Instantâneo"
- As configurações são acessadas somente por usuários administradores e estão localizadas em: Menu principal > Configuração > Email > Configuração de envio.
- As configurações detalhadas incluem ajustes e novos campos para suportar a funcionalidade.
- Contexto [Ajuste]
- Adição de um novo contexto chamado “Plugin TOTVS Pagamento instantâneo”.
- Este contexto é apresentado apenas quando a configuração do plugin TOTVS Pagamento Instantâneo está ativa.
- Condição para envio [Ajuste]
- Novo registro para "Envio de QR Code PIX - sob demanda".
- O envio de e-mail é realizado conforme a solicitação do usuário responsável pelo pedido.
- Arquivo do relatório [Novo campo]
- Campo para anexar um modelo de relatório nos e-mails enviados.
- Enviar para (Contexto) [Ajuste]
- Adição de registros para diferentes destinatários, incluindo cliente, profissional logado, entre outros.
- Opção de "Exibir tela de confirmação/edição de e-mail" com configurações relacionadas.
- Assunto [Novo campo]
- Permite configurar um assunto padrão de envio para os e-mails.
- Possibilidade de incluir uma TAG relacionada ao número do pedido.
- CONFIGURAÇÃO DO CORPO DO E-MAIL
- Permite a configuração de um corpo de e-mail personalizado.
- Inclusão de tags no corpo, como "NÚMERO DO PEDIDO", "IMAGEM QR CODE", e "PIX COPIA E COLA".
- Acompanhamento / Operações de pagamento após a finalização do pedido
- Após a finalização do pedido, o sistema disponibilizará ícone de label "Pagamento" na listagem de pedidos e no "Roda teto" do pedido, exibindo o status do último registro de pagamento vinculado ao pedido.
- O ícone utilizado para acesso será o arquivo presente neste link.
- Os status possíveis são:
- PENDENTE: com ícone de "dinheiro preto", representa o pagamento gerado mas ainda pendente de aprovação.
- APROVADO: com ícone de "check verde", representa o pagamento já validado como aprovado.
- CANCELADO: com ícone "X vermelho", representa o pagamento cancelado pelo operador.
- EXPIRADO: com ícone de "ampulheta" , representa o pagamento não pago a tempo e expirado.
- REEMBOLSADO: com ícone de "dinheiro amarelo", representa o pagamento que foi reembolsado.
- Ao clicar no ícone de "status de pagamento" relacionado a um pedido, o sistema exibirá tela conforme o protótipo.
- No Android, a consulta dos registros será online, para garantir que os dados estejam sempre atualizados.
- Os campos disponíveis serão:
- Identificador transação.
- Status pagamento.
- Data criação.
- Data última atualização.
- Histórico do pagamento.
- Exibir QR Code.
- Consultar pagamento.
- Cancelar pagamento.
- Haverá botão "Novo pagamento" que deverá ser exibido sob certas condições.
/* select case when count(
select pp.idpedidopagamento from pedidopagamento pp
inner join tiposituacaopagamento tsp on tsp.idpedidopagamento = pp.idpedidopagamento
inner join pedido p on p.idpedido = pp.idpedido
inner join tiposituacaopedido tsped on tsped.idtiposituacaopedido = p.idtiposituacaopedido
where pp.idpedido = ?
and tsp.sgltiposituacaopagamento in ('APR','PEND')
and tsped.sgltiposituacaopedido = 'PP'
and p.sglorigempedido in ('SIM3GAND','SIM3GWEB')
and p.numeropedidoerp is null
)=0 then 'Sim' end as exibebotao */
- Na listagem de pedidos, o sistema deverá possuir filtro avançado de status de pagamento.
/* select descricao from tiposituacaopagamento where idnativo = 1 */
- Fluxo de pagamento quando há aprovações de pedidos
- Ao finalizar um pedido com tipos de cobrança vinculados ao plugin de integração TPI, e que o pedido seja encaminhado para aprovação, o sistema não criará o pagamento. Em vez disso, informará o usuário com a mensagem: "A geração do pagamento do pedido deverá ser gerada após a aprovação do pedido, para que seja devidamente encaminhado para faturamento."
- Nesse cenário, o pedido passará pelo fluxo de aprovação padrão, com os possíveis status de:
- PENDENTE
- APROVADO
- REPROVADO
- CONTESTADO
- CANCELADO
- Um pedido é declarado totalmente aprovado quando apenas possui aprovações nos status de APROVADO ou CANCELADO.
- Além dos filtros definidos anteriormente, o botão "Novo pagamento" na tela de "Pagamento do pedido" só deve ser exibido para pedidos nas situações acima mencionadas, ou que não contenham aprovações vinculadas.
- Isso permite que, após a aprovação, o usuário precise clicar no botão "Novo pagamento" para gerar um QR Code, compartilhar com o cliente e, posteriormente, consultar o pagamento pelo ícone "Consultar pagamento".
- Na notificação gerada pela aplicação quando o pedido é aprovado, o sistema deve verificar se o plugin "TOTVS Pagamento instantâneo" está ativo e se o pedido está vinculado com um dos tipos de cobrança configurados no plugin. Se positivo, o sistema deverá adicionar a mensagem "Será necessário gerar um pagamento para o pedido X através da tela de 'Pagamentos do pedido'".
- Consulta de status de pagamento de maneira agendada
Para evitar que pedidos fiquem travados no fluxo de integração com o ERP por falta de consulta do usuário, o serviço de integração consultará os status dos pagamentos de transações com status de PENDENTE.
Esta consulta será realizada com frequência definida baseada no recurso infraestrutural do servidor.
Ao identificar um pagamento aprovado, o sistema atualizará os status dos pagamentos de maneira ativa e notificará o usuário via notificação PUSH.
O sistema de integração deve consultar pagamentos pendentes utilizando a consulta:
/* CONSULTA_PAGAMENTOS_PENDENTES select pp.tokentransacao from pedido p inner join pedidopagamento pp on pp.idpedido = p.idpedido inner join tiposituacaopagamento tsp on tsp.idstiposituacaopagamento = pp.idstiposituacaopagamento where tsp.sgltiposituacaopagamento = 'PEND' */
Com os tokens retornados, o sistema de integração consultará na API da transformação COMMONS_Bloco_TPIGETSTATUS para verificar o status atualizado do pagamento.
Com o status do pagamento em memória, o sistema de integração atualizará a coluna pedidopagamento.idstiposituacaopagamento, conforme o de-para especificado.
Status do retorno |
Código |
pending |
PEND |
approved |
APR |
expired |
EXP |
refunded |
REEMB |
cancelled |
CAN |
Se houve alteração de status, o sistema de integração deverá inserir novo registro na tabela observacaopagamento, segundo o seguinte de-para:
Campo |
Valor/Descrição |
PARADE idobservacaopagamento |
nextval('seqpkobservacaopagamento') |
observacao |
"O status do pagamento foi atualizado para ${retorno.status > tiposituacaopagamento.descricao}" |
idpedidopagamento |
CONSULTA_PAGAMENTOS_PENDENTES.tokentransacao |
idtiposituacaopagamento |
retorno.status > tiposituacaopagamento.idtiposituacaopagamento |
idusuario |
lookup para tabela usuario where login = 'admin' |
datahora |
current_timestamp |
- Persistência e integração de dados de pagamento
A presente documentação apenas define que os tokens de pagamento serão armazenados em banco de dados do SFA, vinculados com os pedidos de venda.
A integração de dados de pagamento com o ERP deverá ocorrer sob demanda, de maneira configurável ou customizada, mediante identificação dos campos de destino pelo cliente que utiliza o plugin de integração.
- Sincronização de pedido instantaneamente durante operações de pagamento
Para evitar que um pedido já pago permaneça sem sincronização no Android, o sistema implementará a função de "Sincronização instantânea" via função de "envio de dados" da Sincronização para processos online como a geração de pagamento.
O envio de dados acontecerá de maneira síncrona nos seguintes gatilhos, enviando apenas os dados (DATS) de pedido e suas dependências:
- Inicio do processo de finalização, enviando o pedido gravado antes da criação do pagamento.
- Após recebimento do QR Code, enviando o registro da tabela de pagamentos do pedido.
- Após recebimento da atualização do status de pagamento, enviando o registro da tabela de pagamentos do pedido.
- Após recebimento da confirmação do cancelamento do pedido, enviando o registro da tabela de pagamentos do pedido.
- Após a finalização do pedido, seja ele pago ou selecionado para cobrança posterior, atualizando o registro de status do pedido para PENDENTE.
- Geração de novo pagamento, enviando o registro da tabela de pagamentos do pedido.
Com isso, o pedido devidamente pago será atualizado pela integração, de maneira agendada ou instantaneamente via consulta de pagamentos, permitindo que o pedido esteja em condições de ser exportado na próxima execução da integração.
Observação: Anteriormente, no Android, pedidos finalizados ainda eram editáveis até a sincronização. Agora, esses pedidos que já foram transmitidos ao servidor não serão mais editáveis, como ocorre na Web.