Árvore de páginas

APRIMORAMENTOS NO GERENCIAMENTO DE EXPIRAÇÃO DE PAGAMENTOS PIX

   
Produto: Automação da Força de Vendas
Linha de Produto: TOTVS CRM
Segmento: Cross Segmentos
Módulo: Venda/PIX
Aplicação: Web/Mobile
Identificador: TSFAFSWE-3540

    VISÃO GERAL

A melhoria recente no módulo de pagamento via PIX no TOTVS SFA introduz configurações avançadas para gerenciar a expiração de QR Codes PIX e ações automáticas para pedidos não pagos dentro do prazo estipulado. Este recurso garante que os pagamentos sejam efetuados de maneira segura e dentro do tempo adequado, evitando atrasos e gerenciando de forma eficiente as expectativas dos clientes.


    OBJETIVO

O objetivo desta implementação é otimizar o processo de pagamentos via PIX, proporcionando aos usuários maior controle sobre os prazos de validade dos QR Codes e automação nas ações de follow-up para pedidos expirados. A funcionalidade visa minimizar riscos financeiros e melhorar a experiência de pagamento, assegurando que todas as transações sejam concluídas ou adequadamente gerenciadas.

  DETALHES FUNCIONAIS


    • Interface de Configuração: Essa configuração é acessível na tela de configuração do plugin de pagamento PIX, onde os usuários podem inserir o tempo desejado de expiração para os QR Codes.
  1. Ações Automáticas após Expiração:

    • Opções de Ação Pós-Expiração: Os usuários têm a opção de configurar automaticamente ações específicas que o sistema deve executar quando o QR Code expira sem recebimento do pagamento. As ações disponíveis incluem:
      • Reabrir o Pedido: Esta opção permite que o pedido seja reaberto para edição ou para a geração de um novo QR Code, mantendo o pedido ativo.
      • Cancelar o Pedido: Com esta configuração, o pedido é automaticamente cancelado, o que pode ser útil em situações onde a intenção é não prosseguir com a venda sem o pagamento confirmado.
  2. Exibição do Tempo de Expiração:

    • Visibilidade do Prazo de Expiração: Uma vez que o QR Code é gerado, o sistema exibe a data e a hora exatas de expiração em uma nova coluna dentro da interface de listagem de pedidos. Isso proporciona transparência e ajuda os usuários a gerenciar melhor o tempo de pagamento esperado.
Visualização Android

  COMO USAR?

  1. Acesse as Configurações do Plugin de Pagamento PIX:

    • Vá até Configuração > Integração > Plugins de Integração.
    • Encontre e selecione o plugin relacionado ao Pagamento PIX.
  2. Defina o Tempo de Expiração:

    • Na tela de configuração do plugin, localize o campo para "Duração máxima da transação PIX antes de expirar".
    • Insira o tempo desejado para a validade do QR Code, em minutos ou horas.
  3. Configure Ações Automáticas:

    • Determine o que acontecerá quando o QR Code expirar:
      • Reabrir o Pedido: para permitir edições ou nova geração de QR Code.
      • Cancelar o Pedido: para cancelar automaticamente o pedido expirado.
    • Selecione a opção adequada e salve as configurações.
  4. Teste as Configurações:

    • Após salvar, faça um teste para garantir que tudo está configurado corretamente.


 EXEMPLO PRÁTICO


Desafio Antigo:

Gerenciamento ineficiente de pedidos com pagamento via PIX, onde os QR Codes expiravam sem ações claras para resolução, resultando em pedidos pendentes.


Solução Atualizada:

Com as novas configurações, os pedidos com QR Codes expirados são automaticamente gerenciados conforme as regras estabelecidas—reabrindo para nova ação do cliente ou cancelando—eliminando a incerteza e otimizando o fluxo de vendas.


  DETALHES TÉCNICOS

  • Alterar via Tools opção 3, a tabela PEDIDOPAGAMENTO:

    Alter Table PEDIDOPAGAMENTO
    alter table pedidopagamento add column dataexpiracao timestamp;
  • Adicionar na tela do plugin de Pagamento PIX, os campos conforme protótipo abaixo:



Novos Campos
                        Campo "Duração máxima transação PIX antes de expirar"
                          idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
                          codigoelemento: TPI,
                          agrupador: 0,
                          sglcampo: TPI_EXPIRATIONDATE
                          valor: {padrão 1440}
                        Campo "Ação automática sobre o pedido quando o serviço de atualização de status identificar que a transação expirou"
                          idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
                          codigoelemento: TPI,
                          agrupador: 0,
                          sglcampo: TPI_OPEN
                          valor: {0 ou 1, padrão 1}
                        
                        Campo "Ação automática sobre o pedido quando o serviço de atualização de status identificar que a transação expirou"
                          idpluginintegracao: select idpluginintegracao from pluginintegracao where codigo = 'TPI',
                          codigoelemento: TPI,
                          agrupador: 0,
                          sglcampo: TPI_CANCEL
                          valor: {0 ou 1, padrão 0}
                      


  • Para o campo referente à ação que deve ser executada, somente uma opção pode estar selecionada pelo usuário.

  • O valor retornado na tag DATAEXPIRACAO deve ser persistido em PEDIDOPAGAMENTO.DATAEXPIRACAO;

  • Alterar a tela Pagamentos do Pedido, para incluir a nova coluna referente à data para expirar da transação:



    • A informação para essa nova coluna virá de PEDIDOPAGAMENTO.DATAEXPIRACAO.

INTEGRAÇÃO

  • Alterar o Job TPIGENERATEPAYMENT para calcular a data e hora para obter a data para expirar da transação PIX;
    • Utilizar o script abaixo para obter a data e hora para expirar da transação:

      Busca Tempo
                                      SELECT current_timestamp +(SELECT cast(valor as integer) FROM pluginintconfig WHERE sglcampo = 'TPI_EXPIRATIONDATE' AND codigoelemento = 'TPI') * interval '1 minute' AS data_expirar;
                                    
    • Somar a data e hora do momento em que a transação é gerada com o tempo cadastrado pelo cliente, e incluir dentro do JSON de requisição:

      "expirationDate": "YYYY-MM-DD HH:MM:SS"

    • O retorno se a data e hora foi aceita pela TPI estará na tag "expiresAt" no JSON de RESPONSE;

  • Adicionar no Job TPIUPDATESTATUS, a validação da ação que deve ser tomada automaticamente quando a transação PIX tiver expirado sem a confirmação do pagamento;

    • Usar o script abaixo para obter qual ação foi cadastrada pelo usuário:

      Busca Ação
                                      select case when sglcampo ='TPI_OPEN' then valor end as REABRIR, case when sglcampo ='TPI_CANCEL' then valor end as CANCELAR from pluginintconfig p where sglcampo in('TPI_OPEN','TPI_CANCEL')
                                    


  • Se o plugin estiver configurado para REABRIR, pedido cuja transação tenha expirado devem ter a situação alterada para NÃO FINALIZADO - NF;

  • Se o plugin estiver configurado para CANCELAR, pedido cuja transação tenha expirado devem ter a situação alterada para CANCELADO - PC;

    • Utilizar a consulta abaixo para identificar os pedidos que devem ter a situação atualizada:

      Busca Ação
      SELECT p.idpedido
                          FROM   pedido p
                                 INNER JOIN pedidopagamento pp
                                         ON p.idpedido = pp.idpedido
                                 INNER JOIN tiposituacaopagamento t
                                         ON t.idtiposituacaopagamento = pp.idtiposituacaopagamento
                                 INNER JOIN tiposituacaopedido tp
                                         ON tp.idtiposituacaopedido = p.idtiposituacaopedido
                          WHERE  t.sgltiposituacaopagamento = 'EXP'
                                 AND (SELECT Count(idpedido)
                                      FROM   pedidopagamento p2
                                             INNER JOIN tiposituacaopagamento t2
                                                     ON
                                             t2.idtiposituacaopagamento = p2.idtiposituacaopagamento
                                      WHERE  t2.sgltiposituacaopagamento in ('PEND', 'APR')
                                             AND p2.idpedido = p.idpedido) = 0
                                 AND p.idnexportadoerp = 0
                                 AND tp.sgltiposituacaopedido = 'PP';
  • Se não houver uma configuração definida, o comportamento atual deve ser mantido e a situação do pedido não deve ser alterada.


  • PERGUNTAS FREQUENTES

    • question_answer O que acontece quando o tempo de expiração do QR Code é atingido sem o pagamento ser realizado?
      Dependendo da configuração escolhida, o pedido pode ser automaticamente reaberto para edição e nova tentativa de pagamento, ou cancelado, removendo-o da lista de pedidos ativos.