# PROC003 – Registro de Pagamento em Cartão de Crédito

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/1ycimage-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/1ycimage-1762776253666.png)

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GERENCIAMENTO DE PROJETOS</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC003 – Registro de Pagamento em Cartão de Crédito</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Jalile Cornachioni</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">11/11/2025</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

Este documento tem como objetivo detalhar o comportamento da interface e as regras de negócio referentes ao processo de Recebimento via Cartão de Crédito dentro do fluxo de Pagamento Unificado detalhando, confirmação da transação e registro do recebimento.

##### <span style="color: #000000;">**2. Processo (adicionar fluxograma exemplo)**</span>

[![image-1762891289199.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762891289199.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762891289199.png)

\-- Fluxograma PROC003 – Registro de Pagamento em Cartão de Crédito --

1. Usuário acessa a tela Registrar Pagamento.
2. Seleciona Crédito como forma de pagamento.
3. O sistema renderiza os campos condicionais de Crédito.
4. Usuário preenche valor, parcelas, vencimento, bandeira, código de autorização (quando manual) e CNPJ da credenciadora.
5. Se o ambiente estiver integrado ao TEF:
    
    
    - O sistema envia a solicitação ao terminal.
    - Se aprovado, retorna dados da transação e pré-preenche o código de autorização.
    - Se recusado, o sistema bloqueia a inclusão.
    - Se falhar a comunicação, o sistema exibe o modal:  
        “Falha na comunicação com o terminal. Deseja registrar manualmente?”
    - Se o usuário optar por registro manual, segue para o passo 6.
6. Usuário confirma Adicionar Pagamento.
7. O sistema valida regras de negócio e gera uma linha por parcela em “Pagamentos Adicionados”.
8. Usuário pode editar ou excluir parcelas individualmente.
9. Se houver pagamento em Dinheiro, o sistema renderiza o campo Troco, permitindo sua edição e atualização conforme diferença.
10. Usuário pode repetir o processo para adicionar outros cartões ou demais formas de pagamento.
11. Ao finalizar, o sistema valida soma total e libera a conclusão da operação.

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" style="width: 100%;" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 19%;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black; width: 27%;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black; width: 27%;" width="27%">PROC001 - Aplicar desconto/acréscimo</td><td style="border-style: solid; border-color: black; width: 19%;" width="19%">Frente de caixa / API Pagamento Unificado

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">Valor total, tipo de ajuste, origem da ação

</td><td style="border-style: solid; border-color: black; width: 27%;" width="27%">Valor ajustado, log de alteração

</td></tr><tr><td style="width: 27%;">PROC010- Excluir pagamento já lançado</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Identificação do pagamento selecionado</td><td style="width: 27%;">Pagamento removido e saldo recalculado</td></tr><tr><td style="width: 27%;">PROC011 - Quitar Restante</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Saldo pendente e forma de pagamento selecionada</td><td style="width: 27%;">Campo preenchido automaticamente com o valor restante</td></tr><tr><td style="width: 27%;">PROC012 - Finalizar Pagamento</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Todos os pagamentos registrados e saldo zerado</td><td style="width: 27%;">Venda concluída e registros financeiros emitidos</td></tr><tr><td style="width: 27%;">PROC013 - Cancelar</td><td style="width: 19%;">Operador do caixa</td><td style="width: 27%;">Ação do usuário</td><td style="width: 27%;">Modal fechado sem registrar alterações</td></tr></tbody></table>

#### **Processos Relacionados** 

- - - - - -

- - [Pagamento Unificado](https://docs.softensistemas.com.br/books/financeiro/page/pagamento-unificado)
    - [PROC001 – Aplicar desconto/acréscimo](https://docs.softensistemas.com.br/books/financeiro/page/proc001-aplicar-descontoacrescimo)
    - [PROC002 – Registro de Pagamento em Dinheiro](https://docs.softensistemas.com.br/books/financeiro/page/proc002-registro-de-pagamento-em-dinheiro)
    - [PROC003 – Registro de Pagamento em Cartão de Crédito](https://docs.softensistemas.com.br/books/financeiro/page/proc003-registro-de-pagamento-em-cartao-de-credito)
    - [PROC004 – Registro de Pagamento em Cartão de Débito](https://docs.softensistemas.com.br/books/financeiro/page/proc004-registro-de-pagamento-em-cartao-de-debito)
    - [PROC005 – Registro de Pagamento em Boleto](https://docs.softensistemas.com.br/books/financeiro/page/proc005-registro-de-pagamento-em-boleto)
    - [PROC006 – Registro de Pagamento via PIX](https://docs.softensistemas.com.br/books/financeiro/page/proc006-registro-de-pagamento-via-pix)
    - [PROC007 – Registro de Pagamento em Outros Métodos](https://docs.softensistemas.com.br/books/financeiro/page/proc007-registro-de-pagamento-em-outros-metodos)
    - [PROC008 – Adicionar múltiplas formas de pagamento](https://docs.softensistemas.com.br/books/financeiro/page/proc008-adicionar-multiplas-formas-de-pagamento)
    - [PROC012 – Finalizar Pagamento](https://docs.softensistemas.com.br/books/financeiro/page/proc012-finalizar-pagamento)

#### **Especificação Funcional**

- - - - - -

#### **PROC001 EXEMPLO:**

##### ***Protótipo de Tela:***

[![image-1762883267585.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762883267585.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762883267585.png)

##### ***Descrição dos Campos:***

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 843px;"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 119px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 201px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr><td style="width: 168px;">Forma de Pagamento (personalizado)</td><td style="width: 102px;">Texto / Seleção</td><td style="width: 88px;"> - </td><td style="width: 165px;">Sim</td><td style="width: 119px;">—</td><td style="width: 201px;">Renderizado apenas quando “Crédito” é selecionado.</td></tr><tr><td style="width: 168px;">Valor</td><td style="width: 102px;">Numérico</td><td style="width: 88px;">- </td><td style="width: 165px;">Sim</td><td style="width: 119px;">R$ 0.000,00</td><td style="width: 201px;">&gt; 0. Aceita decimal. Pode vir pré-preenchido com saldo.</td></tr><tr><td style="width: 168px;">Parcelas</td><td style="width: 102px;">Inteiro</td><td style="width: 88px;">-</td><td style="width: 165px;">Sim</td><td style="width: 119px;">-</td><td style="width: 201px;">≥ 1. Sem limite, a menos que exista política global.</td></tr><tr><td style="width: 168px;">1º Vencimento</td><td style="width: 102px;">Data</td><td style="width: 88px;">-</td><td style="width: 165px;">Sim</td><td style="width: 119px;">DD/MM/AAAA</td><td style="width: 201px;">Default = hoje. Retroativo conforme configuração global.</td></tr><tr><td style="width: 168px;">Bandeira</td><td style="width: 102px;">Seleção</td><td style="width: 88px;">-</td><td style="width: 165px;">Sim</td><td style="width: 119px;">-</td><td style="width: 201px;">Lista carregada da tabela `bandeira_cartao`.</td></tr><tr><td style="width: 168px;">Código de Autorização</td><td style="width: 102px;">Texto</td><td style="width: 88px;">-</td><td style="width: 165px;">Sim (manual)</td><td style="width: 119px;">-</td><td style="width: 201px;">Obrigatório quando não houver TEF. Identificador da transação.</td></tr><tr><td style="width: 168px;">CNPJ Credenciadora</td><td style="width: 102px;">Texto</td><td style="width: 88px;">14</td><td style="width: 165px;">Sim</td><td style="width: 119px;">99.999.999/9999-99</td><td style="width: 201px;">Validação de CNPJ. Usado quando a captura exige conciliação/envio fiscal.</td></tr></tbody></table>

##### ***Regras de Interface:***

**O sistema deve:**

- Renderizar todos os campos condicionais ao selecionar Crédito, ou seja, parcelas, primeiro vencimento, bandeira, cod. autorização e CNPJ da credenciadora.
- O campo bandeira deve oferecer uma lista das bandeiras mais utilizadas no país.
- Habilitar o botão Adicionar Pagamento somente quando todos os campos obrigatórios estiverem preenchidos.
- Criar uma linha por parcela na seção “Pagamentos Adicionados”.
- Permitir edição e exclusão individual de cada parcela.
- Renderizar o campo Troco somente quando existir pelo menos um pagamento em Dinheiro adicionado.
- Permitir edição do valor de Troco apenas quando houver pagamento em Dinheiro.
- Atualizar o Troco conforme a diferença entre o valor pago em Dinheiro e o saldo da venda.
- Permitir inclusão de múltiplos cartões na mesma venda (multi-cartão).
- Aplicar máscaras de valor, data e CNPJ conforme o padrão da aplicação.
- Exibir aviso de duplicidade quando detectar combinação idêntica de valor + parcelas + vencimento + bandeira.
- Exibir modal de contingência em caso de falha TEF:  
    “Falha na comunicação com o terminal. Deseja registrar manualmente?”.

**O sistema não deve:**

- Permitir clique em Adicionar Pagamento com campos obrigatórios vazios.
- Exibir o campo Troco quando não existir pagamento em Dinheiro.
- Bloquear inclusão de múltiplos cartões em uma mesma venda.
- Permitir finalização caso a soma dos pagamentos ultrapasse o valor total da venda.

.

##### ***Regras de Negócio:***

- O sistema deve validar que o Valor informado seja numérico e maior que zero.
- Validar que Parcelas seja inteiro ≥ 1, respeitando limite configurado (se existir).
- Definir 1º Vencimento como a data atual por padrão.
- Permitir vencimento retroativo apenas se a configuração e permissões de usuário correspondente estiver ativa.
- Garantir que o somatório das parcelas feche exatamente o valor total calculado.
- O sistema deve recuperar o código da autorização da transação do TEF e vincular ao pedido quando o TEF retornar status Aprovado.
- Exigir Código de Autorização quando o pagamento for registrado manualmente (sem TEF).
- O sistema não deve aceitar pagamento manual sem Código de Autorização.
- Em caso de Recusado, o sistema não deve permitir o fechamento do caixa com aquele lançamento.
- Após confirmação, o botão Finalizar Pagamento deve ser exibido para conclusão do fluxo de pagamento.
- Validar formato do CNPJ da Credenciadora.
- O sistema não deve finalizar a venda quando houver inconsistências de soma, bandeira inválida ou CNPJ inválido
- Permitir múltiplas inclusões de pagamentos em crédito (multi-cartão).
- Bloquear finalização caso a soma dos pagamentos ultrapasse o valor da venda..

##### ***Questões Técnicas:***

1. Integração com módulo TEF (API externa).
2. Logar toda tentativa, inclusive timeouts de comunicação TEF.
3. Em ambiente offline, bloquear operação com TEF.
4. O sistema deve criar uma tabela para armazenar as bandeiras de cartão, contendo apenas os campos `id` e `descricao`, seguindo o modelo abaixo:

CREATE TABLE bandeira\_cartao (  
id INT PRIMARY KEY,  
descricao VARCHAR(60) NOT NULL  
);

INSERT INTO bandeira\_cartao (id, descricao) VALUES  
(1, 'Visa'),  
(2, 'Mastercard'),  
(3, 'American Express'),  
(4, 'Hipercard'),  
(5, 'Elo');

©SOFTEN SISTEMAS 2025