Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    644
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. 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.
  2. 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:
  3. Mano, como vc coloca os dados no componente? parece falta de DV Me preocupa essa msg... parar clientes. kkk
  4. Lembrando que é apenas PJ, aquele site azul.. quem é laranja, MEI, não ainda. aff
  5. 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
  6. 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
  7. 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.
  8. @Daniel InfoCotidiano tinha ligação com a altura? Parecia mais com a espessura das barras. O zoom.
  9. 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
  10. 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 ...
  11. 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;
  12. 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.
  13. 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 ?
  14. no que eu tenho aqui, é preciso vincular um certificado e colocar a conta no header, fez isso? e o codigo do retorno, salvo engano, é 200, teve qual numero de retorno ?
  15. respondi no privado, para não me encherem o saco aqui ... prints. Esqueci de mencionar, mesmo com emissao via acbr dá para montar, no meu caso, é boleto via api. Nem sei por onde passa essa de mandar retorno desse banco, coloquei o cliente usar via api, é mais prático.
  16. fi, eu montei o boleto aqui, pelo que eles retornam. Linha digitavel e codigo de barras. o resto a gente tem para colocar na impressao.
  17. ou fi, isso dai, é quando vc envia remessa, quitado, vem como 06 se nao me engano, vem como liquidacao normal. o banco manda isso, se caso vc quiser processar algo no seu bordero de retorno bancario... tem casos, que quando é banco emite, vc precisa gravar o campo nosso numero, pois é o banco quem gera, dá uma olhada nos codigos de retornos, para entender legal isso.
  18. da versão 1 tenho, mas, falando com um amigo, segundo me informou, a v2, tem pouca diferença.
  19. sim, vc muda a url. Acontece que eu não sou de mandar isso, para evitar fadiga, mas, ja vou criar uma rotina para deletar ele da pasta, quando o programa for atualizado com a versao certa.
  20. MG: Produção: Até dia 21/09, a url de consulta estava URL-ConsultaNFCe_2.00=http://nfce.fazenda.mg.gov.br/portalnfce A partir desse dia, está gerando a rejeição, a url foi alterada para <urlChave>https://portalsped.fazenda.mg.gov.br/portalnfce</urlChave> Isso vai ser mudado mesmo ou trocaram por engano, a do QR code está correta. Até dia 21/09 <infNFeSupl> <qrCode>https://portalsped.fazenda.mg.gov.br/portalnfce/sistema/qrcode.xhtml?p=</qrCode> <urlChave>http://nfce.fazenda.mg.gov.br/portalnfce</urlChave> </infNFeSupl> Apos 21/09 <infNFeSupl> <qrCode>https://portalsped.fazenda.mg.gov.br/portalnfce/sistema/qrcode.xhtml?p=</qrCode> <urlChave>https://portalsped.fazenda.mg.gov.br/portalnfce</urlChave> </infNFeSupl>
  21. Dica: Vai pela API, é muito prático, o boleto sai na hora.
×
×
  • 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.