Ir para o conteúdo principal

Middleware de Pagamento

Processo intermediador (middleware) de pagamento, baseado no fluxo da biblioteca CliSitef, para integração com sistemas terceiros durante o processo de intermediação e finalização de pagamento.

Durante o processo, apresentado no arquivo em anexo, o fluxo deverá ser compreendido da seguinte forma:

IniciaFuncao() > ContinuaFuncao() > [... FICA EM LOOPING ATÉ INDICAR CONCLUIDO ...] > FinalizaFuncao()

O processo deverá executar antes das transações, no início do processo da forma de pagamento com o método

IniciaFuncao()

e finalizar após o registro da venda.

Caso o processo seja interrompido entre o processo de pagamento e o registro de venda, deve ser enviado ao fluxo através do método

 InterrompeFuncao().

Layout das Funções

Endpoint: 

IniciaFuncao()

Parâmetros a ser passado ao endpoint:

{
    "data": {
        "cliente": {
            "id": 1,
            "nome": "Cliente Padrão",
            "documento": "000.000.000-33",
            "uf": "RJ"
        },
        "tabelaVenda": "0",
        "tabelaAtacado": "0",
        "vendedor": {
            "id": 1,
            "nome": "Vendedor Padrão",
        },
        "documento": "",
        "observacao": "",
        "conta": {
            "id": 1,
            "nome": "Conta Caixa",
        },
        "quantidadeVenda": 1,
        "totalVenda": 29.9,
        "totalDesconto": 0.00,
        "totalPagamento": 29.9,
        "totalTroco": 0.00,
        "itens": [
            {
                "id": 1,
                "id_produto_grade": 129447,
                "id_produto": 129447,
                "codigo": "925818196",
                "descricao": "TOP SUPLEX SUPLEX BICOLOR TRANCADO COSTA  ",
                "unidade": "UND",
                "quantidade": 1,
                "valor": 29.9,
                "valor_venda": 29.9,
                "valor_custo": 15.77,
                "valor_atacado": 29.9,
                "oculta_custo": "",
                "idPreco": 0,
                "valor_pago": 29.9,
                "valor_total": 29.9,
                "qtdeAtacado": 0,
                "ncm": "61044900-00-0000000",
                "codigo_ean": "",
                "id_codigobarra": "",
                "limite_desconto": 0,
                "promocao": [],
                "produto_grade_imagem": false,
                "situacao": "ATIVO"
            }
        ],
        "cancelados": [],
        "pagamento": {
            "prazo": 6,
            "condicao": 11
        },
        "nfce": "1",
        "operador": {
            "id": 1,
            "nome": "Operador Caixa",
        },
        "tokenVenda": "7e7b5cab-1ddd-6472-0b0f-a3ff2a583b55",
        "dataEmissao": "2021-11-24 10:03:17"
    }
}


Retorno do endpoint

{
    "success": true,
    "message": "Iniciado com Sucesso",
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
    }
}

Endpoint: ContinuaFuncao

Parâmetros a ser passado ao endpoint

{
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
        "comando": 1,
        "valor": false,
        "voltar": false,
        "interromper": false,
        "tokenVenda": "7e7b5cab-1ddd-6472-0b0f-a3ff2a583b55",
        "dataEmissao": "2021-11-24 10:03:17",
    }
}

Se o parâmetro "voltar" for informado Sim [true], o processo está indicando que volte o fluxo.

Se o parâmetro "interromper" for informado Sim [true], o processo está indicando que interrompa o fluxo.

Retorno do endpoint

{
    "success": true,
    "continue": true,
    "message": "Executado com Sucesso",
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
        "comando": 1,
        "tipoCampo": 0,
        "tamanhoCampo": {
            "minimo": 0,
            "maximo": 255,
            "decimais": 2,
            "truncar": false,
        },
        "titulo": "Título a Exibir Quando Houver",
        "buffer": "",
    }
}

Segue as tabelas de comando e tipo de campo.

Tabela com os códigos de Comando



Comando

Descrição

1

Mensagem para o visor do operador

2

Mensagem para o visor do cliente

11

Deve remover a mensagem apresentada no visor do operador

12

Deve remover a mensagem apresentada no visor do cliente

2000-2999

Deve apresentar o texto em buffer, e obter uma resposta do tipo SIM [true] / NÃO [false].

3000-3999

Deve apresentar um menu de opções e permitir que o usuário selecione uma delas. Na chamada o parâmetro buffer contém as opções no formato JSON (anexo abaixo).

4000-4999

Deve apresentar a mensagem em buffer, e aguardar uma tecla do operador. É utilizada quando se deseja que o operador seja avisado de alguma mensagem apresentada na tela.

5000-5999

Deve ser lido um campo cujo tamanho está entre tamanho.minimo e tamanho.maximo.

50

Está devolvendo o valor de documento a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

51

Está devolvendo o valor de cliente a ser definido pela aplicação, na chamada o parâmetro buffer contém as opções no formato JSON (anexo abaixo).

52

Está devolvendo o valor de desconto a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

53

Está devolvendo o valor de observacao a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

54

Está devolvendo o valor de acréscimo a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

55

Está devolvendo o valor de delivery a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

56

Está devolvendo o valor de emissão de NF-e a ser definido pela aplicação, na chamada o parâmetro buffer contém o valor.

60

Informa a aplicação a interromper o processo.

7000-7999

Deve ser armazenado as informações em buffer para ser apresentado após ser executado o FinalizaFuncao() e aguardar uma tecla do operador, é utilizada quando se deseja que o operador seja avisado de alguma mensagem apresentada na tela no processo de finalização da venda.

100

Informa a aplicação que o processo foi concluído.


Anexo 1 - Formato de Lista do Comando = 21 retornado pelo buffer
{
    "titulo": "Título",
    "itens": [
        { id: 1, label: "texto 1" },
        { id: 2, label: "texto 2" },
        { id: 3, label: "texto 3" },
    ]
}
Anexo 2 - Retorno do Comando = 51 retornado pelo buffer
{
    "id": 1, 
    "nome": "Cliente Padrão", 
    "documento": "000.000.000-33", 
    "uf": "RJ" 
}

Tabela com os códigos de Tipo de Campo (tipoCampo)


tipoCampo

Descrição

1

Alfa-numérico (string)

2

Inteiro

3

Valor com ponto flutuante (double), neste caso é possível informar a quantidade de casas decimais e se irá truncar

4

Monetário, sendo valor com ponto flutuante (double), neste caso é possível informar a quantidade de casas decimais e se irá truncar

5

Lista (array, de valor único)

6

Data (AAAA-MM-DD)

7

Data e Hora (AAAA-MM-DD HH:MM:SS)


Endpoint: InterrompeFuncao
Parâmetros a ser passado ao endpoint

{
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
        "tokenVenda": "7e7b5cab-1ddd-6472-0b0f-a3ff2a583b55",
        "dataEmissao": "2021-11-24 10:03:17"
    }
}
Retorno do endpoint

{
    "success": true,
    "message": "Interropido com Sucesso",
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
    }
}

Endpoint: FinalizaFuncao
Parâmetros a ser passado ao endpoint
{
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
        "totalVenda": 29.9,
        "totalDesconto": 0.00,
        "totalPagamento": 29.9,
        "totalTroco": 0.00,
        "pagamento": [
            {
                "id": 1,
                "valor": 29.9,
                "codigo": "TEF",
                "prazo": 14,
                "prazo_descricao": "REDE DEBITO",
                "condicao": false,
                "condicao_descricao": false,
                "descricao": "REDE DEBITO",
                "flag_pdv_pagamento": 3,
                "numero": "008018358",
                "complemento": {
                    "numero": "008018358",
                    "tef": ["..."],
                    "raw": ["..."]
                },
                "troca": false,
                "vale": false
            }
        ],
        "tokenVenda": "7e7b5cab-1ddd-6472-0b0f-a3ff2a583b55",
        "dataEmissao": "2021-11-24 10:03:17"
    }
}

Retorno do endpoint

{
    "success": true,
    "message": "Finalizado com Sucesso",
    "data": {
        "token": "cbb97b94-4dfd-11ec-8be9-000c291f9967",
        ["..."]
    }
}