Git Product home page Git Product logo

clisitef's People

Contributors

adeniltonbs avatar adrbarros avatar andrebts avatar joanvitor avatar valmir-cunha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

clisitef's Issues

Problema conversão

Bom dia tudo bem.
Eu converti o codigo do C# para o vb.net ele funciona tudo ok , abre os parâmetros passa no cartao finaliza no debito e no credito so que estou tendo dificuldade na seguinte parte segue codigo.

Nessa Sub "Continuarequisicao" ele da problema nessa parte do codigo ele fica lendo o Stats e passando o valor "tipocampo"
mas quando ele termina chega ali com um erro " -9 " e nao sai fica num loop eterno alguem sabe oque pode ser ?

Private Function ContinuarRequisicao() As Integer
Dim valorBuffer As Byte() = New Byte(19999) {}
Dim result As Integer
Dim continua As Integer = 0
Dim taxas As Integer = 1
Dim captionMenu As String = ""
Dim captionCarteiraDigital As String = ""
Dim interromper As Boolean = False
Dim Proximocomando As Integer
Dim tipoCampo As Long
Dim tamanhoMinimo As Short
Dim tamanhoMaximo As Short
Do
result = ContinuaFuncaoSiTefInterativo(Proximocomando, tipoCampo, tamanhoMinimo, tamanhoMaximo, valorBuffer, valorBuffer.Length, continua)
continua = 0
Dim mensagem As String = Encoding.UTF8.GetString(valorBuffer).Replace(ControlChars.NullChar, "").Trim()
Dim respostaSitef As String = ""
Dim voltar As Boolean = False
Dim digitado As Boolean = True

            If result = 10000 Then
                Select Case Proximocomando
                    Case 0 ' Está devolvendo um valor para, se desejado, ser armazenado pela automação
                        If tipoCampo = 0 Then
                            Dim obj1 As New TefRetorno(1, 0, mensagem)
                            TefRetornoAdicionar(obj1, mTefTransacao)
                        ElseIf tipoCampo = 100 Then
                            Dim obj11 As New TefRetorno(11, 0, mensagem)
                            TefRetornoAdicionar(obj11, mTefTransacao)

                            Dim msgAut As String = mensagem.PadRight(4, "0"c)
                            Dim obj731 As New TefRetorno(731, 0, msgAut.Substring(0, 2))
                            TefRetornoAdicionar(obj731, mTefTransacao)
                            Dim grupo As ModalidadePagamentoGrupoConst = ModalidadePagamentoGrupo.RetornarModalidadePagamentoGrupo(msgAut.Substring(0, 2))

                            If grupo IsNot Nothing Then
                                Dim obj731_1 As New TefRetorno(731, 1, grupo.Nome)
                                TefRetornoAdicionar(obj731_1, mTefTransacao)
                            End If

                            Dim obj732 As New TefRetorno(732, 0, msgAut.Substring(2, 2))
                            TefRetornoAdicionar(obj732, mTefTransacao)
                            Dim subgrupo As ModalidadePagamentoSubGrupoConst = ModalidadePagamentoSubGrupo.RetornarModalidadePagamentoSubGrupo(msgAut.Substring(2, 2))

                            If subgrupo IsNot Nothing Then
                                Dim obj732_1 As New TefRetorno(732, 1, subgrupo.Nome)
                                TefRetornoAdicionar(obj732_1, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 105 Then
                            Dim msgData As String = mensagem.Substring(6, 2) & mensagem.Substring(4, 2) & mensagem.Substring(0, 4)
                            Dim obj22 As New TefRetorno(22, 0, msgData)
                            TefRetornoAdicionar(obj22, mTefTransacao)

                            Dim msgHora As String = mensagem.Substring(8)
                            Dim obj23 As New TefRetorno(23, 0, msgHora)
                            TefRetornoAdicionar(obj23, mTefTransacao)
                        ElseIf tipoCampo = 106 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj748_1 As New TefRetorno(748, 1, mensagem)
                                TefRetornoAdicionar(obj748_1, mTefTransacao)
                                Dim obj As BandeiraPadraoConst = BandeiraPadrao.RetornarBandeiraPadrao(Convert.ToInt32(mensagem))

                                If obj IsNot Nothing Then
                                    Dim obj748_2 As New TefRetorno(748, 2, obj.NomeTipoCodigo)
                                    TefRetornoAdicionar(obj748_2, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 107 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                captionCarteiraDigital = mensagem
                                Dim obj748 As New TefRetorno(748, 0, mensagem)
                                TefRetornoAdicionar(obj748, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 108 Then ' Verificar Carteira Digital
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                ' Operação não realizada
                                captionCarteiraDigital = mensagem 'Adicionado
                            End If
                        ElseIf tipoCampo = 111 Then
                            Dim tefFuncaoInterativa As New TefFuncaoInterativa() ' Substitua por sua instância real de TefFuncaoInterativa
                            RaiseEvent OnMessageClient(mensagem, 100, tefFuncaoInterativa)
                        ElseIf tipoCampo = 121 Then
                            Dim viaCliente As String() = mensagem.Split(ControlChars.Lf, ControlChars.Cr)
                            Dim obj712 As New TefRetorno(712, 0, viaCliente.Length.ToString())
                            TefRetornoAdicionar(obj712, mTefTransacao)

                            For i As Integer = 0 To viaCliente.Length - 1
                                Dim obj713 As New TefRetorno(713, i, """" & viaCliente(i) & """")
                                TefRetornoAdicionar(obj713, mTefTransacao)
                            Next
                        ElseIf tipoCampo = 122 Then
                            Dim viaEstab As String() = mensagem.Split(ControlChars.Lf, ControlChars.Cr)
                            Dim obj714 As New TefRetorno(714, 0, viaEstab.Length.ToString())
                            TefRetornoAdicionar(obj714, mTefTransacao)

                            For i As Integer = 0 To viaEstab.Length - 1
                                Dim obj715 As New TefRetorno(715, i, """" & viaEstab(i) & """")
                                TefRetornoAdicionar(obj715, mTefTransacao)
                            Next
                        ElseIf tipoCampo = 123 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj As ComprovanteTipoConst = ComprovanteTipo.RetornarComprovanteTipo(mensagem)

                                If obj IsNot Nothing Then
                                    Dim obj712_1 As New TefRetorno(712, 1, obj.CodigoNome)
                                    TefRetornoAdicionar(obj712_1, mTefTransacao)

                                    Dim obj714_1 As New TefRetorno(714, 1, obj.CodigoNome)
                                    TefRetornoAdicionar(obj714_1, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 131 Then
                            Dim obj10 As New TefRetorno(10, 0, mensagem)
                            TefRetornoAdicionar(obj10, mTefTransacao)

                            Dim obj As RedeAutorizadoraConst = RedeAutorizadora.RetornarAutorizadora(obj10.Valor)

                            If obj IsNot Nothing Then
                                Dim obj10_1 As New TefRetorno(10, 1, obj.Nome)
                                TefRetornoAdicionar(obj10_1, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 132 Then
                            Dim obj748_1 As New TefRetorno(748, 1, mensagem)
                            TefRetornoAdicionar(obj748_1, mTefTransacao)
                            Dim obj As BandeiraPadraoConst = BandeiraPadrao.RetornarBandeiraPadrao(Convert.ToInt32(mensagem))

                            If obj IsNot Nothing Then
                                Dim obj748_2 As New TefRetorno(748, 2, obj.NomeTipoCodigo)
                                TefRetornoAdicionar(obj748_2, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 133 Then
                            Dim obj13 As New TefRetorno(13, 0, mensagem)
                            TefRetornoAdicionar(obj13, mTefTransacao)
                        ElseIf tipoCampo = 134 Then
                            Dim obj12 As New TefRetorno(12, 0, mensagem)
                            TefRetornoAdicionar(obj12, mTefTransacao)
                        ElseIf tipoCampo = 156 Then
                            Dim obj748 As New TefRetorno(748, 0, mensagem)
                            TefRetornoAdicionar(obj748, mTefTransacao)
                        ElseIf tipoCampo = 158 Then
                            Dim obj739 As New TefRetorno(739, 0, mensagem)
                            TefRetornoAdicionar(obj739, mTefTransacao)
                        ElseIf tipoCampo = 545 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj749 As New TefRetorno(749, 0, mensagem)
                                TefRetornoAdicionar(obj749, mTefTransacao)

                                Dim obj As CarteiraDigitalTipoPagamentoConst = CarteiraDigitalTipoPagamento.RetornarTipoPagamento(Convert.ToInt32(mensagem))

                                If obj IsNot Nothing Then
                                    Dim obj749_1 As New TefRetorno(749, 1, obj.CodigoNome)
                                    TefRetornoAdicionar(obj749_1, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 546 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj750 As New TefRetorno(750, 0, mensagem)
                                TefRetornoAdicionar(obj750, mTefTransacao)

                                Dim obj As CarteiraDigitalTipoVoucherConst = CarteiraDigitalTipoVoucher.RetornarTipoVoucher(Convert.ToInt32(mensagem))

                                If obj IsNot Nothing Then
                                    Dim obj750_1 As New TefRetorno(750, 1, obj.CodigoNome)
                                    TefRetornoAdicionar(obj750_1, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 590 Then
                            Dim obj742 As New TefRetorno(742, 0, mensagem)
                            TefRetornoAdicionar(obj742, mTefTransacao)
                        ElseIf tipoCampo = 591 Then
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim valorRecarga As Decimal = Convert.ToDecimal(mensagem) / 100D
                                Dim obj742_1 As New TefRetorno(742, 1, valorRecarga.ToString("N2"))
                                TefRetornoAdicionar(obj742_1, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 800 Then
                            Dim obj27 As New TefRetorno(27, 0, mensagem)
                            TefRetornoAdicionar(obj27, mTefTransacao)
                        ElseIf tipoCampo = 950 Then ' Para Modulo SAT_NFCe INSTALADO - CNPJ da fonte pagadora (autorizador do cartão)
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj600 As New TefRetorno(600, 0, mensagem)
                                TefRetornoAdicionar(obj600, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 951 Then ' Para Modulo SAT_NFCe INSTALADO - Bandeira NFCE
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj601 As New TefRetorno(601, 0, mensagem)
                                TefRetornoAdicionar(obj601, mTefTransacao)

                                Dim obj As SatNfceBandeiraConst = SatNfceBandeira.RetornarSatNfceBandeira(Convert.ToInt32(mensagem))

                                If obj IsNot Nothing Then
                                    Dim obj601_1 As New TefRetorno(601, 1, obj.CodigoNome)
                                    TefRetornoAdicionar(obj601_1, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 952 Then ' Para Modulo SAT_NFCe INSTALADO - Número de autorização NFCE
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj602 As New TefRetorno(602, 0, mensagem)
                                TefRetornoAdicionar(obj602, mTefTransacao)
                            End If
                        ElseIf tipoCampo = 953 Then ' Para Modulo SAT_NFCe INSTALADO - Código da credenciadora
                            If Not String.IsNullOrWhiteSpace(mensagem) Then
                                Dim obj603 As New TefRetorno(603, 0, mensagem)
                                TefRetornoAdicionar(obj603, mTefTransacao)

                                Dim obj As SatNfceCredenciadoraConst = SatNfceCredenciadora.RetornarSatNfceCredenciadora(Convert.ToInt32(mensagem))

                                If obj IsNot Nothing Then
                                    Dim obj603_1 As New TefRetorno(603, 1, obj.CodigoNomeCnpj)
                                    TefRetornoAdicionar(obj603_1, mTefTransacao)
                                End If
                            End If
                        ElseIf tipoCampo = 2021 Then
                            Dim obj740 As New TefRetorno(740, 0, mensagem)
                            TefRetornoAdicionar(obj740, mTefTransacao)
                        ElseIf tipoCampo = 2022 Then
                            Dim msgAut As String = mensagem.PadRight(4, "0"c)
                            Dim obj747 As New TefRetorno(747, 0, msgAut.Substring(2, 2) & msgAut.Substring(0, 2))
                            TefRetornoAdicionar(obj747, mTefTransacao)
                        ElseIf tipoCampo = 2023 Then
                            Dim obj741 As New TefRetorno(741, 0, mensagem)
                            TefRetornoAdicionar(obj741, mTefTransacao)
                        End If
                    Case 1 'Mensagem para o visor do operador
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 100, tefFuncaoInterativa)
                        Exit Select
                    Case 2 'Mensagem para o visor do cliente
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 100, tefFuncaoInterativa)
                        Exit Select
                    Case 3 'Mensagem para os dois visores
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 100, tefFuncaoInterativa)
                        Exit Select
                    Case 4 'Texto que deverá ser utilizado como cabeçalho na apresentação do menu (Comando 21)
                        captionMenu = mensagem
                        Exit Select
                    Case 11 'Deve remover a mensagem apresentada no visor do operador
                        mensagem = ""
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 0, tefFuncaoInterativa)
                        Exit Select
                    Case 12 'Deve remover a mensagem apresentada no visor do cliente
                        mensagem = ""
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 0, tefFuncaoInterativa)
                        Exit Select
                    Case 13 'Deve remover mensagem apresentada no visor do operador e do cliente
                        mensagem = ""
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 0, tefFuncaoInterativa)
                        Exit Select
                    Case 14 'Deve limpar o texto utilizado como cabeçalho na apresentação do menu
                        captionMenu = ""
                        Exit Select
                    Case 15 'Cabeçalho a ser apresentado pela aplicação
                        Exit Select
                    Case 16 'Deve remover o cabeçalho
                        captionMenu = ""
                        Exit Select
                    Case 20 'Deve obter uma resposta do tipo SIM/NÃO.
                        If String.IsNullOrWhiteSpace(mensagem) Then
                            mensagem = "Confirma?"
                        End If
                        Dim objForm20 As New TefFuncaoInterativa With {
                            .DataType = DataTypeEnum.Confirmation,
                            .TipoCampo = tipoCampo,
                            .RespostaSitef = "1",
                            .Mensagem = mensagem
                        }
                        RaiseEvent OnCallForm(objForm20)
                        respostaSitef = objForm20.RespostaSitef
                        interromper = objForm20.Interromper
                        Exit Select
                    Case 21 '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 1:texto;2:texto;...i:Texto;...A rotina da aplicação deve apresentar As opções da forma que ela desejar (não sendo necessário incluir os índices 1, 2, ...) e após a seleção feita pelo usuário, retornar em Buffer o índice i escolhido pelo operador (em ASCII)
                        Dim objForm21 As New TefFuncaoInterativa With {
                            .DataType = DataTypeEnum.Menu,
                            .Titulo = captionMenu,
                            .ItensMenu = mensagem.Split(";"c)
                        }
                        RaiseEvent OnCallForm(objForm21)
                        respostaSitef = objForm21.RespostaSitef
                        interromper = objForm21.Interromper
                        Exit Select
                    Case 22 'Deve aguardar uma tecla do operador. É utilizada quando se deseja que o operador seja avisado de alguma mensagem apresentada na tela
                        If String.IsNullOrWhiteSpace(mensagem) Then
                            mensagem = "Aguarde ....."
                        End If
                        Dim objForm22 As New TefFuncaoInterativa With {.DataType = DataTypeEnum.Await, .Mensagem = mensagem}
                        RaiseEvent OnCallForm(objForm22)
                        respostaSitef = ""
                        Exit Select
                    Case 23 'Este comando indica que a rotina está perguntando para a aplicação se ele deseja interromper o processo de coleta de dados ou não. Esse código ocorre quando a CliSiTef está acessando algum periférico e permite que a automação interrompa esse acesso (por exemplo: aguardando a passagem de um cartão pela leitora ou a digitação de senha pelo cliente)
                        Exit Select
                    Case 29 'Deve ser fornecido um campo, sem captura, cujo tamanho está entre TamMinimo e TamMaximo. O campo deve ser devolvido em Buffer
                        Exit Select
                    Case 30 'Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo. O campo lido deve ser devolvido em Buffer
                        Dim objForm30 As New TefFuncaoInterativa With {
        .DataType = DataTypeEnum.Numeric,
        .TipoCampo = tipoCampo,
        .TamanhoMinimo = tamanhoMinimo,
        .TamanhoMaximo = tamanhoMaximo,
        .Titulo = mensagem
    }
                        RaiseEvent OnCallForm(objForm30)
                        respostaSitef = objForm30.RespostaSitef
                        interromper = objForm30.Interromper
                        If Not interromper Then
                            If tipoCampo = 505 Then
                                Dim obj505 As New TefRetorno(505, 0, respostaSitef)
                                TefRetornoAdicionar(obj505, mTefTransacao)
                            End If
                        End If
                        Exit Select
                    Case 31 'Deve ser lido o número de um cheque. A coleta pode ser feita via leitura de CMC-7 ou pela digitação da primeira linha do cheque. No retorno deve ser devolvido em Buffer “0:” ou “1:” seguido do número coletado manualmente ou pela leitura do CMC-7, respectivamente. Quando o número for coletado manualmente o formato é o seguinte: Compensação(3), Banco (3), Agencia (4), C1 (1), ContaCorrente (10), C2 (1), Numero Do Cheque (6) e C3 (1), nesta ordem. Notar que estes campos são os que estão na parte superior de um cheque e na ordem apresentada. Sugerimos que na coleta seja apresentada uma Interface que permita ao operador identificar e digitar adequadamente estas informações de forma que a consulta não seja feita com dados errados, retornando como bom um cheque com problemas
                        Exit Select
                    Case 34 'Deve ser lido um campo monetário ou seja, aceita o delimitador de centavos e devolvido no parâmetro Buffer
                        Dim objForm34 As New TefFuncaoInterativa With {
        .DataType = DataTypeEnum.Currency,
        .TipoCampo = tipoCampo,
        .TamanhoMinimo = tamanhoMinimo,
        .TamanhoMaximo = tamanhoMaximo,
        .Titulo = mensagem
    }
                        RaiseEvent OnCallForm(objForm34)
                        respostaSitef = objForm34.RespostaSitef
                        interromper = objForm34.Interromper
                        If tipoCampo = 504 OrElse tipoCampo = 130 Then
                            If Not String.IsNullOrWhiteSpace(respostaSitef) AndAlso Convert.ToDecimal(respostaSitef) > 0 Then
                                Dim valor As String = Convert.ToDecimal(respostaSitef).ToString("N2")
                                Dim obj3 As New TefRetorno(3, taxas, $"{valor}|{RemoverQuebraDeLinhas(mensagem)}")
                                TefRetornoAdicionar(obj3, mTefTransacao)
                                taxas += 1
                            End If
                        End If
                        Exit Select
                    Case 35 ' Deve ser lido um código em barras ou coletado manualmente
                        Exit Select
                    Case 41 ' Análogo ao Comando 30, mas o campo deve ser coletado de forma mascarada (senha)
                        Exit Select
                    Case 42 ' Deve apresentar um menu de opções e permitir que o usuário selecione uma delas
                        Exit Select
                    Case 50 ' A automação comercial deve exibir o QRCode na tela
                        mObjForm50 = New TefFuncaoInterativa With {
        .DataType = DataTypeEnum.QrCode,
        .TipoCampo = tipoCampo,
        .Titulo = captionCarteiraDigital,
        .Mensagem = mensagem
    }
                        RaiseEvent OnCallPanelQrCode(mObjForm50)
                    Case 51 'A automação comercial deve remover da tela o QRCode exibido anteriormente, pois o SiTef já devolveu uma resposta à CliSiTef.
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 1000, tefFuncaoInterativa)

                        If mObjForm50 IsNot Nothing AndAlso mObjForm50.FormAberto Then
                            mObjForm50.FormFechar = True
                            RaiseEvent OnClosePanelQrCode(mObjForm50)
                            respostaSitef = mObjForm50.RespostaSitef
                            interromper = mObjForm50.Interromper
                        End If
                        mObjForm50 = Nothing
                        captionCarteiraDigital = ""
                        Exit Select
                    Case 52 'Mensagem de rodapé, opcional para o caso haja um espaço para ela ser exibida, no caso em que o QRCode foi exibido e está aguardando que o cliente faça a sua leitura.
                        Dim tefFuncaoInterativa As New TefFuncaoInterativa()
                        RaiseEvent OnMessageClient(mensagem, 200, tefFuncaoInterativa)
                        If mObjForm50 IsNot Nothing AndAlso mObjForm50.FormAberto AndAlso mObjForm50.Interromper Then
                            mObjForm50.FormFechar = True
                            RaiseEvent OnClosePanelQrCode(mObjForm50)
                            interromper = mObjForm50.Interromper
                            respostaSitef = mObjForm50.RespostaSitef
                        End If
                    Case 99
                        Exit Select
                    Case Else
                        Exit Select
                End Select
            End If
            If voltar Then
                continua = 1
            ElseIf Not digitado OrElse interromper Then
                continua = -1
            End If
            valorBuffer = Encoding.ASCII.GetBytes(respostaSitef & New String(ControlChars.NullChar, 20000 - respostaSitef.Length))
        Loop
        Return result
    End Function   

Como faço para resgatar o NSU da transação?

Boa tarde
Primeiramente agradecer novamente pelo ótimo projeto.
Gostaria de saber como faço para pegar o NSU para conseguir gravar em um banco de dados e utilizar para emitir a NFCe
Poderia me ajudar?

Sobre o QRCODE

Boa noite sobre o codigo do QRCODE quando gera no botao CRT CD ele da erro -27 isso acontece porque esta em modo homologado ? nao funciona o modo carteira digital qual modo qrcode ?

TipoCampo 147 Valor a ser cancelado

Recentemente a a SiTef implementou essa Valor a ser Cancelado em situações onde pode existir cancelamento parcial do valor pago, gostaria de saber onde devo implementar na solução essa situação ?

Atualmente o log da aplicação aponta esse comando e tipo de campo travando o sistema e aumentando o tamanho do log:

-> Cmd: 34 -> Tc: 147 -> Buffer: Valor do cancelamento

Como colocar imagem na tela do pinpad

Boa tarde!

A lib tem alguma função de apresentar imagem na telinha do pinpad?
verifiquei que é possível, mas gostaria de saber se já existe algo desenvolvido nessa lib.

Coletar Cpf do consumidor pinpad

Olá,

Estou executando esse projeto a função de obter o cpf do consumidor no pinpad, e estou obtenho um erro. Estou usando um pinpad da gertec ppc920, as outras funções de vender com cartao de credito/debito esta sendo executado perfeitamente.

A minha duvida se tem algo a mais para ser configurado no sitef demo ou no clisitef.ini, ou se é presciso de alguma outra dll para que eu possa obter o cpf pelo pinpad.

Desde já agradeço.

Documentaçao DLL

Existe alguma documentaçao sobre essa DLL eo programa cli-sitef converti ele do C# para o vb.net mas queria saber se tem algo relacionado a explicar melhor o codigo.

Qual o fluxo correto de uma venda?

esses dias baixei seu projeto para tentar fazer essa implementação em C# com WPF até ai tudo bem, mas percebir que ele só pede as parcelas ou se é avista o cartão depois de ter passado o cartão no pinpad!
isso esta certo ?

não deveria ter que informar essas coisas antes e quando passar o cartão já ser somente para finalizar ?

[OFF-TOPIC ]Integracao

Ola, tenho um pequeno projeto de PDV em c# e preciso fazer a integração com a dll do sitef, alguem por acaso teria disponibilidade para esse servico de freelancer?

Problema na conexao Com maquina API CRedito

Estou com um problema com a maquina da GERTEC PPC930 quando em homologação na função debito passa de boas
agora na função credito quando uso ela e pede a senha ele diz opçao recusada pelo cartao ?
Tem alguma configuração pra fazer na maquina ou e assim mesmo ?

Problema com Carteira Digital - Trn. nao habilitada

Olá, Adriano Barros

Meu nome é Joan Vitor, sou desenvolvedor C# Júnior, estou trabalhando em uma implementação de carteiras digitais (pix) na automação comercial através da sua biblioteca, juntamente com o andrebts.

Seguimos os seguintes passos:

  • Instalado o SitDemo e o CardSE enviados pelo próprio suporte da Software Express.

  • Seguidos os passos descritos no arquivo: 8-CardSE_PIX_Guia de Instalação.pdf

    • Configurador Sitef -> Bin -> Estabelecimento

    image

    • Configurador Sitef -> Bin -> Comunicação

    image

    • Carga de tabela do Bin

    image

    • Configurador Sitef -> CardSE -> Estabelecimento

    image

    • Configurador Sitef -> CardSE -> Comunicação

    image

    • Carga de tabela do CardSE

    image

    • No visualizador de tabela mostra que o pix está habilitado, como visto na imagem:

    image

    • Versão do simcomu-s.exe

    image

    • Versão da DLL do CliSiTef

    image

    • Conteúdo do arquivo CliSiTef.ini

    image

Com o conhecimento atual da utilização de carteiras digitais no SiTef, acreditamos que executamos todos os passos de configuração necessários, entretanto ao selecionar "CRT CD" ou "CRT" -> "Carteira digital" na aplicação da biblioteca, é retornada a mensagem "Carteira Digital - Trn. nao habilitada", conforme imagem abaixo:

  • Erro

image

Ao depurar percebemos que o último resultado das chamadas ao metódo ContinuaFuncaoSiTefInterativo retorna o valor -24 como visto no gif abaixo:

DemoErroCarteiraDigital-24

Não entendemos qual o problema para podermos solucioná-lo. Você já passou por essa situação? Há alguma outra configuração necessária além das mencionadas nesse issue?

Captura dados do pinpad

Tem exemplo de como faz a captura do CPF do cliente por exemplo? vi que precisa iniciar uma requisição mandando 789, mas não consegui entender exatamente o fluxo das chamadas

Não encontra DLL

Bom dia pessoal, tudo bem?

No momento que roda o projeto, ele diz não encontrar a DLL. Ela vai na raiz do DEBUG certo?

Obrigado,

Att

Necessito de auxilio para iniciar

Bom dia,
Ao executar o programa, está com o seguinte retorno "PinPad não encontrado".
Entretanto, estou com o SitDemo executando.

Migração .net 6

Bom dia.

Posso tentar migrar o projeto para .net 6 lts.

Para podermos aumentar a longevidade do projeto.

Alterar valor da venda

Boa tarde, estou precisando implementar uma rotina que altere o valor da venda após a leitura e identificação do cartão, no caso uma determinada bandeira poderia conceder desconto na venda;

Eu uso a sua aplicação como base para o meu TEF, seria possível fazer esse tratamento? Vi que o comando 154 seria para alterar o valor da venda, mas sempre que altero o valor da venda ele me retorna erro no PIN PAD;

Tratamento de desconto do Tipocampo == 4029

  • Esta transação deverá ser de
    R$ 80,00

  • Para esta transação utilizar cartões Visa Electron e Visa

  • Aplicação deve tratar que é retornado no TipoCampo=4029, seja exibido com a Finalizadora desconto antes da totalização da venda.

  • A aplicação deverá somar os valores dos descontos recebidos e lança-los no cupom fiscal (valor inicial –valores dos descontos =valor da venda

Alguem ja implemento essa parte em C# sobre o desconto em cartao caso houver ?

Pinpad não responde

Boa tarde!

Como faço para "reiniciar" o pinpad quando ele não responde?

Estou tentando fazer a coleta de dados utilizando a Função de leitura de campo aberto.
O fluxo está assim:
1.Inicia leitura de campo aberto no pinpad
2. Caso deseje cancelar a coleta de dados utilizo o parâmetro "interromper" = true (campo 23)
3. Se eu inicio novamente uma nova coleta de dados muito rápido(sem esperar o pinpad apagar a tela) então ele trava e não responde mais.

Tem alguma forma de quando o pinpad não responder, eu mandar uma reinicialização?

QR Code no Pin Pad

Bom dia, estava estudando o Projecto para implementar integração com outra linguagem de programação.
Estou com dificuldade para testar Qr Code para pagamento com carteira digital no 'Pin Pad Gertec PPC930'.
Em pesquisa pela web ele suporta QR-Code no visor do Pin Pad.
Fonte pesquisa QR-Code Pin Pad PPC930: https://loja.gertec.com.br/produto/ppc930/#

No Projeto está sendo passado o ParamAdic = ”DevolveStringQRCode=1” na rotina IniciaFuncaoSiTefInterativo.
No arquivo CliSiTef.ini [PinPadCompartilhado] Porta=AUTO_USB.
Está tudo certo com o meu ambiente, tanto que funciona o pagamento com cartão de crédito no Pin Pad. O que eu estou fazendo de errado. Tem alguma dica?

Sobre o botao cancelamento eo de verificaçao de pendente

@adrbarros BOm dia tudo bem espero que esteje tudo certo.

Estou com duvidas na chamada do pendente eu vi o codigo ontem mas nao consigo fazer a chamada pra autorizar o pendente novamente como faço tal ? consegue me mandar via C# .

O Outro e do cancelamento o botao pra voltar atraz coloquei o codigo mas tanbem nao cosegui fazer a chamada consegue me ajudar pode ser em C# mesmo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.