Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    729
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. posta como voce repassou os dados para o componente, nao tem falha nesse banco, uso ele.... Sugestão: Pastinha do ACBr: ...ACBr2wc\Fontes\ACBrBoleto Particularidades.html ou Particularidades.odt ou Particularidades.pdf Pode ajudar voce na empreitada
  2. esta atribuindo coisa alem de numero nos parametros, olha o erro, olha se esta colocando espacos tambem, na conta, cedente.. A agencia e beneficiario sua, tá repetido o numero 3886, pode ser um indicio de algo anormal.
  3. tem manual esse banco ?
  4. tem manual ? Como funciona a carteira de cobrança desse banco? api/cnab?
  5. Mano: Explore o componente... linha digitável DVBoleto := ACBrBoleto.Banco.CalcularDigitoVerificador(ACBrTitulo); CodigoBarras := ACBrBoleto.Banco.MontarCodigoBarras(ACBrTitulo); LinhaDigitavel := ACBrBoleto.Banco.MontarLinhaDigitavel(CodigoBarras, ACBrTitulo); NossoNumeroFormatado := ACBrBoleto.Banco.BancoClass.MontarCampoNossoNumero(ACBrTitulo);
  6. dá uma lida em particularidades, de fato, tem que ser 01 mesmo, e sicoob está ok no projeto, nao tem erro, usando aqui. olha onde vc salva os componentes: ACBr2wc\Fontes\ACBrBoleto\Particularidades.pdf
  7. não tem problema no banco caixa, voce deve ter enviado é as coisas errada, esse banco é nojentinho... igual BB sugiro, ler isso: Na sua pasta do componente: \ACBr2wc\Fontes\ACBrBoleto\Particularidades.pdf Posta como vc colocou os dados no componente.
  8. Alem disso, tem a autenticação oauth, se não quiser fazer tudo isso. Nisso, seu aplicativo ficará como fica o thunderbird Exemplo: https://github.com/geoffsmith82/GmailAuthSMTP
  9. posta seu codigo fonte no privado? ajudo vc...
  10. Como voce coloca o nosso numero no componente? tem umas mandingas que precisam ser olhadas, como nao ser com DV na hora de gerar, não colocar ele com zeros formatado, pq o componente faz copy do que vc informa, coloca aqui como vc manda para dentro do objeto titulonalista.
  11. Até onde sei, isso não tem, é bem especifico, sugestão que te dou, é criar sua impressão. Se vc usa fast report, é fácil contornar.
  12. uma dica que te dou, salva ele sem formatar, para vc evitar esse mesmo problema, se for o campo nosso número,quando voce pegar o nosso numero da caixa, vai entender a bubiça que é, aquele 24 ou 14 no começo do numero. repara:
  13. Mano, como vc coloca os dados no componente? parece falta de DV Me preocupa essa msg... parar clientes. kkk
  14. Lembrando que é apenas PJ, aquele site azul.. quem é laranja, MEI, não ainda. aff
  15. Uai, suspeito que seja pelo tempo que ele pede, vc nao pode gerar outro token, se o anterior tiver valido, mas apenas usar, contar o tempo em minutos. Senao eles poem a gente na geladeira: olha: Obter token oAuth POSThttps://cdpj.partners.bancointer.com.br/oauth/v2/token A autenticação OAuth é a mais recente forma de autenticar os novos serviços disponibilizados pelo Inter. O Token gerado será necessário para consumir as APIs do Inter. O tempo de vida de um token gerado é de uma hora. Com isso, é possível realizar um número determinado de requisições nas apis, de acordo com o rate limit de cada api, utilizando um único token. Rate limit: 5 chamadas por minuto fonte: https://developers.bancointer.com.br/reference/token-1
  16. voce quer carregar essas opções? toRemessaRegistrar, toRemessaBaixar etc. case ARem_Ocorrencia_Remban of 0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar; 1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar; 2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento; 3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento; 4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento; 5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle; 6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar; 7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa; 8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto; 9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes; else Raise Exception.Create('Código de ocorrência: ' + aRem_Ocorrencia_Remban.ToString + ' inválida.'); end; Essa lista vc pega ela assim Acbrboleto1.GetOcorrenciasRemessa() : TACBrOcorrenciasRemessa; A ocorrencia varia de acordo com o banco sim, voce deve tomar uma atitude/ação, de acordo com o codigo do retorno que vem, no caso, para baixar, vem 05 ou 06 vem em ListadeBoletos[X].OcorrenciaOriginal.Tipo
  17. Campo livre do santander: O erro parece ser o codigo do cedente... tem banco que não é o numero da conta, mas o cedente na cip Result := '9' + PadLeft(trim(Cedente.CodigoCedente),7,'0') + PadLeft(ACBrTitulo.NossoNumero + CalcularDigitoVerificador(ACBrTitulo), 13,'0') + '0' + PadLeft(trim(Cedente.Modalidade),3,'0'); E para voce fazer a impressao do mesmo boleto, é preciso ter o mesmo numero do campo nosso numero.
  18. @Daniel InfoCotidiano tinha ligação com a altura? Parecia mais com a espessura das barras. O zoom.
  19. Eu salvo o meu no banco de dados, e se caso o operador sair do sistema, fica gravado os dados do token, para nao precisar processar de novo, a cada boleto, é verificado o tempo. Pois ele é fixo, o retorno do inter ja vem com o tempo somado, bom, era assim... Tipo, entra o comando no endpoint as 15hs, vem que ele vale ate 16hs
  20. o meu tem uma falha ali, ao salvar o valor do tokentime. a proposito, no acbr, é aqui que valida o token function TBoletoW_Inter_API.GerarTokenAutenticacao: string; begin OAuth.Payload := True; Result := inherited GerarTokenAutenticacao; end; Na funcao: GerarTokenAutenticacao chama a funcao da boletaws base dessa derivacao: TBoletoW_Inter_API = class(TBoletoWSREST) o tempo de validade, vem no retorno do if OAuth.GerarToken then Result := OAuth.Token para mim, o tempo deve ser aqui: property Expire : TDateTime read FExpire; na unit ACBrBoletoWS.Rest.OAuth Sempre que posso ajudo ...
  21. tem que colocar no cadastro da sua conta corrente, um campo campo com data e hora Ex: pega no cadastro de conta: Clear; Add('select '); Add(' CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CLIENT_ID_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CLIENT_SECRET_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_DATA_HORA_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_VALIDADE_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_CRT_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.CRT_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_KEY_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.KEY_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.NOME_PFX_SER'); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.PFX_SER'); // SENHA_CRT_KEY_SER Add('from CONTA_CORRENTE_SERV_BANCARIO'); Add('where CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER = ' + AServicoBancario.ToString); TFuncoesBancoDeDados.ExecuteReaderFD(Text, ATransacao, FDS); finally DisposeOf; end; AToken := FDS.FieldByName('SESSAO_TOKEN_SER').AsString; ATokenTime := FDS.FieldByName('SESSAO_TOKEN_VALIDADE_SER').AsDateTime; ClientId := FDS.FieldByName('CLIENT_ID_SER').AsString; ClientSecret := FDS.FieldByName('CLIENT_SECRET_SER').AsString; // venceu ou nao tem if (AToken = '') or (ATokenTime <= Now) then begin HoraTmp := Now; Inter := TBancoInter.Create(nil); try Inter.ClientId := ClientId; Inter.ClientSecret := ClientSecret; Inter.CertFile := CrtTmp; Inter.KeyFile := KeyTmp; Inter.GetToken; AToken := Inter.Token; ATokenTime := Inter.TokenTime; if AToken <> '' then begin with TStringList.Create do try Clear; Add('update CONTA_CORRENTE_SERV_BANCARIO set'); Add(' CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_SER = ' + QuotedStr(AToken)); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_DATA_HORA_SER = ' + TFuncoesSQL.DataHoraSQL(HoraTmp)); Add(' ,CONTA_CORRENTE_SERV_BANCARIO.SESSAO_TOKEN_VALIDADE_SER = ' + TFuncoesSQL.DataHoraSQL(HoraTmp)); Add('where CONTA_CORRENTE_SERV_BANCARIO.CODIGO_SER = ' + AServicoBancario.ToString); TFuncoesBancoDeDados.ExecuteCommand(Text, ATransacao); finally DisposeOf; end; end; finally Inter.DisposeOf; end; end;
  22. Então: Tem um caso, que vc precisa limpar e tem um caso que precisa colocar dados do cedente no objeto, olha onde é isso function TACBrBancoClass.ValidarDadosRetorno(const AAgencia, AContaCedente: String; const ACNPJCPF: String= ''; const AValidaCodCedente: Boolean= False Boolean; begin try With ACBrBanco.ACBrBoleto do begin if NaoEstaVazio(ACNPJCPF) then if (not LeCedenteRetorno) and (ACNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then raise Exception.CreateFmt(ACBrStr('CNPJ\CPF: %s do arquivo não corresponde aos dados do Cedente!'), [ACNPJCPF]); Logo que começa ler o retorno, é feito isso: rCNPJCPF := DefinerCnpjCPFRetorno240(ARetorno[0]); // primeira linha do retorno function TACBrBancoClass.DefinerCnpjCPFRetorno240(const ALinha: String): String; begin Result := OnlyNumber( copy(ALinha, 19, 14) ); end; ValidarDadosRetorno('', '', rCNPJCPF); Quando LeCedenteRetorno for false, é comparado com os dados que voce colocou no cedente do componente, isso ja tem bastante tempo que é assim. Sugestão, colocar ele True, se vc nao quer alimentar antes o objeto acbrboleto Ex: como eu uso: FuncBoleto.ACBrBoleto.LeCedenteRetorno := true; // problema do sicoob 756 FuncBoleto.ACBrBoleto.Cedente.Conta := '0'; // Ocultar erro do ACBr FuncBoleto.ACBrBoleto.LerRetorno(ArquivoDeRetorno); Porem, eu uso o objeto para ler, e eu acho a conta no meu sistema, tem casos, que a pessoa lê, com a conta ja selecionada na tela, ou seja, o erro ali, pode ser isso, vc passou uma informacao, e leu outra.
  23. clientid e clientsecret, informou?
  24. ah: me peguei confuso com esse buscar hoje, da api nova... quando é filtrado por situacao pago, o filtro do campo datainicial e datafinal, é a data de pagamento... Logo, tive que ajustar hoje em um cliente, para pegar data inicial - 7 e datafinal = date. ou o seu ai, é caso de erro mesmo ?
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...