Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    735
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. Gostaria que conferissem por favor, sobre a falta da declaração {$I ACBr_jedi.inc} no topo da unit ACBrDFeXsLibXml2, onde a mesma, faz uso da chamada de uma diretiva, que está dentro dessa .inc Diretiva: DELPHILANGUAGE Isso ocorre o erro na validação da NF-e, onde fica aparecendo apenas o número do erro 1824, de erro de campo de inscricao estadual no caso. Erro que retorna: "Falha na validação dos dados da nota: 1232 --> 1824" função: function TDFeSSLXmlSignLibXml2.TentaPegarMensagemErroDetalhada(const MsgErroAtual: string): String; var prtUltimoErroXml: xmlErrorPtr; begin Result := ''; prtUltimoErroXml := xmlGetLastError(); if prtUltimoErroXml = nil then begin Result := MsgErroAtual; Exit; end; Result := MsgErroAtual + ' --> ' + IntToStr(prtUltimoErroXml^.code); {$IFDEF DELPHILANGUAGE} {$IFDEF WINDOWS} if (prtUltimoErroXml^.message <> nil) then Result := Result + ' - ' + prtUltimoErroXml^.message; {$ENDIF} {$ELSE} if (prtUltimoErroXml^.message <> nil) then Result := Result + ' - ' + prtUltimoErroXml^.message; {$ENDIF} end; Inclusive, está até estranho, o código é igual.
  2. Olha se pode ser usado dessa forma, sincronizei e alterei. ACBrBoletoRet_Inter_API.pas
  3. @Daniel InfoCotidiano Na tentativa de emitir um boleto, após ser cancelado, na property JSON do retorno, veio o seguinte texto: {"title":"Requisição inválida","detail":"Não será possível emitir o boleto. Pois, existe um boleto emitido há poucos minutos com os mesmos dados com a situação “em aberto” com nosso número: 01371641358.","timestamp":"2024-07-11T14:36:41.735762-03:00"}' Antes, com vencimento ontem, veio esse: '{"title":"Dados inválidos.","detail":"Verifique se os dados informados estão de acordo com a documentação disponibilizada e tente novamente.","timestamp":"2024-07-11T14:24:42.10409-03:00","violacoes":[{"razao":"O valor deve ser igual ou maior a data atual","propriedade":"incluirBoleto.body.dataVencimento","valor":"2024-07-10"}]}' ----- Porém, essa property JSON quando sucesso, vem prenchido com o json correto, com dados do boleto, logo, para mexer, penso que precisa ser dentro exclusivamente na unit do inter: onde vem essa msg de erro: if ABoleto.TotalListaRetornoWeb > 0 then for var I: Integer := 0 to Pred(ABoleto.TotalListaRetornoWeb) do begin ABoleto.ListaRetornoWeb[I].JSON ... end; Teria como alimentar a lista de rejeições? E eu posso mexer nisso ?
  4. Fecha por favor, é mosca comida + cansaço! Grato.
  5. Olá, @Daniel InfoCotidiano Uma coisa inusitada, que não consegui depurar, se emito o boleto no inter v2, no passado, agora com o novo componente, se aciono para cancelar, o mesmo não aciona a vinculação do certificado, faz algum sentido? Inter: 1 hora de token, se está fora do periodo, pede cancelamento, erro 400, no mesmo tempo, eu aciono a emissão da boleta, que regenera o token, nesse ato, consegue cancelar. é possivel eu saber, qual momento que o token é acionado? para eu debugar direto isso ? Pois preciso esperar 1 hr, para vencer o token. Modo que peço a baixa: Boleto.ListadeBoletos.Clear; ACBrTitulo := Boleto.CriarTituloNaLista; ACBrTitulo.NossoNumero := Fds.FieldByName('BOLETO_REC').AsString; ACBrTitulo.NossoNumeroCorrespondente := Fds.FieldByName('COD_SOLICITACAO_BOL_REC').AsString; Boleto.Configuracoes.WebService.Operacao := TOperacao.tpBaixa; // inter é baixa if not Boleto.Enviar then AMsgErro := Self.LerRetornoCancelamentoBoletoDeAPI(Boleto); procedure TFuncBoleto.ACBrBoleto_AntesAutenticar(var AToken: string; var AValidadeToken: TDateTime); begin // Carrega o token gravado na conta TFuncConta.GetTokenContaServicoBancario(fTransacao, Boleto, FDSServBanc.FieldByName('CODIGO_SER').AsInteger, FToken, FDataAtual, FDAtaHoraValidadeToken); AToken := FToken; AValidadeToken := FDAtaHoraValidadeToken; end;
  6. é, isso é um porre mesmo, eu botei tudo que o cliente ativou na epoca, e mandava em producao mesmo, o cliente cancelava o boleto depois. ou eu mesmo. Muitos em debug, se perderam, dai o cliente cancelava.
  7. aquele campo certificado ali, esta sendo passado? pois, olhando meu fonte aqui, so passa 2 arquivos, e é o que eles geram. assim: FACbrBoleto.Configuracoes.WebService.ArquivoCRT := FCertificadoCrt; FACbrBoleto.Configuracoes.WebService.ArquivoKEY := FCertificadoKey; AACBrBoleto.Configuracoes.WebService.Ambiente := TpcnTipoAmbiente.taProducao; AACBrBoleto.Configuracoes.WebService.Operacao := TOperacao.tpInclui; AACBrBoleto.Configuracoes.WebService.Certificado := ''; AACBrBoleto.Configuracoes.WebService.ChavePrivada := ''; AACBrBoleto.Configuracoes.WebService.VersaoDF := '1.2'; // TSSLCryptLib = (cryNone, cryOpenSSL, cryCapicom, cryWinCrypt); AACBrBoleto.Configuracoes.WebService.SSLHttpLib := TSSLHttpLib(ADSServico.FieldByName('API_SSLHTTPLIB_SER').AsInteger); AACBrBoleto.Configuracoes.WebService.SSLCryptLib := cryNone; AACBrBoleto.Configuracoes.WebService.SSLDgst := dgstSHA1; AACBrBoleto.Configuracoes.WebService.SSLHttpLib := httpOpenSSL; AACBrBoleto.Configuracoes.WebService.SSLType := LT_TLSv1_2; AACBrBoleto.Configuracoes.WebService.SSLType := LT_TLSv1_2; AACBrBoleto.Configuracoes.WebService.SSLXmlSignLib := xsNone; AACBrBoleto.Configuracoes.WebService.UseCertificateHTTP := True; AACBrBoleto.Cedente.CedenteWS.IndicadorPix := true; AACBrBoleto.Cedente.CedenteWS.ClientID := ADSServico.FieldByName('CLIENT_ID_SER').AsString; AACBrBoleto.Cedente.CedenteWS.ClientSecret := ADSServico.FieldByName('CLIENT_SECRET_SER').AsString; AACBrBoleto.Cedente.CedenteWS.KeyUser := ADSServico.FieldByName('KEY_USER_SER').AsString; AACBrBoleto.Cedente.CedenteWS.Scope := ADSServico.FieldByName('SCOPE_SER').AsString; confere com o seu
  8. Voce pode criar seu proprio boleto, basta pegar o fr3, essa do inter, voce pode criar o endpoint no seu app https://developers.inter.co/references/cobranca-bolepix#tag/Cobranca/operation/obterPdfCobranca ou adicionar no seu fr3 o campo pix.. copiar mesmo do inter....
  9. seu erro é certificado, vc baixou e ativou no portal da conta ?
  10. sim, mas compara o que foi impresso, no canto acima do campo valor, o que tiver ali, é o que tem na barra, se ambos forem iguais, ai precisa ser investigado. bate uma foto da boleta nova impressa e da antiga novamente.
  11. O vencimento continua igual ? Olha no boleto impresso, o nosso numero, do boleto origem, e naquele que voce está replicando.
  12. tente olhar. se o nosso numero é apenas 2580 no santander, se for, vc nao coloca o 8 no final, acbr calcula o DV. Logo, o dv deve ser o 3.. e não nosso numero, importante salientar, acbr hoje, eu gravo separado, pq isso sempre causa confusao, nosso numero é um campo, o boleto no caso, e o dv, outro, e por fim, eu tenho um completo. Pois há cortes, com padr e padl ao incluir um nosso numero. No meu sistema: ATitulo.NossoNumero := ANumeroSlip; // Não pode somar o DV aqui - campo boleto
  13. Ian, é cnab 400 mesmo, vc deve mudar, para 240 antes de gerar. O 400 não é segmentado. Aparenta ser um titulo de 29,97 venc 05/07/24 esse arquivo so tem o ID de registro 1 e 2.
  14. Ian, cadê o arquivo gerado, posta aqui, para gente tentar ajudar voce. Inclusive, para saber, a largura da linha, se é 240 ou 400. E seu CNAB no ini está 1. Avalia a remessa gerada e posta aqui. Ao ler o ini, tem isso: if ( wCNAB = 0 ) then LayoutRemessa := c240 else LayoutRemessa := c400; Ao gravar, isso if LayoutRemessa = c240 then IniRetorno.WriteInteger(CBanco,'CNAB',0) else IniRetorno.WriteInteger(CBanco,'CNAB',1);
  15. faltou catar piolho então.
  16. olá, parece que faltou voltar o comando anterior, ao inves de sempre ser tpIncluir. ACBrBoletoW_Inter_API.pas
  17. oi daniel, farei os testes. []s
  18. oi subiu?
  19. Pensei nisso, mas os tipos atrapalham, tem um if Self.Provedor <> cwsNenhum then Logo, caso possa, eu criaria um tipo para ReceitaViaHtml. Mas, por hora, copiei do fonte anterior, voltei o fonte, e peguei as funcoes LerCampo, pq pifou no cliente, para resolver de imediato. Pode fechar o topico.
  20. @Victor H. Gonzales - Panda [*]TK-5131 ACBrConsultaCNPJ Adicionado Proxy / #TMSFixInsight Removido Código Legado Tratamento de Erros HTTP > 299 por Victor H Gonzales / Daniel Moraes Com relação a essa remoção, é possivel expor a função ParserWS, para sessao public ? pelo menos para gente conseguir alimentar o objeto, com o html que antigamente existia, pois ate o evento de solicitacao externa, voces removeram, repara abaixo, o retorno dela, é um possivel entrada de dados para a funcao ParserWS procedure TFConsultaCnpjCpfReceitaFederal.ACBrConsultaCNPJ1SolicitarCaptcha(var AHtml: string); var CNPJ: string; Url : string; begin inherited; CNPJ := TFuncoesString.SoNumero(EditCNPJ_Cpf.Text); Url := 'https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp?cnpj=' + CNPJ; AHtml := TFNavegarEdge.NavegarEdge(Url); // << retorno para ParserWS end;
  21. Olá @Daniel InfoCotidiano Bão também... Conseguiu analisar o fonte ali em cima?
  22. a propósito, o modo de usar, implementei ao meu modo, nao automatizei o componente, segue como dica para quem for trocar: // Anterior LCodigoSolicitacaoTmp := PCodigoSolicitacao; AMsgErro := ''; LFlagEnviar := True; if (FDSServBanc.FieldByName('API_CONS_APOS_INCLUIR_SER').AsString = 'S') and (PCodigoSolicitacao <> '') then // inter v3 begin // Se deu erro anterior, mas gravou o recibo de solicitacao, consultar - inter tem isso = se ja foi enviado, nao pode mandar de novo Boleto.Configuracoes.WebService.Operacao := TOperacao.tpConsultaDetalhe; Boleto.Enviar; AMsgErro := LerRetornoDeAPI(Boleto); LFlagEnviar := False; // não enviar de novo end; // TODOS DEMAIS BANCOS, interv2 ou interv3, se nao tiver ainda o recibo if (AMsgErro = '') and LFlagEnviar then begin Boleto.Configuracoes.WebService.Operacao := TOperacao.tpInclui; Boleto.Enviar; AMsgErro := LerRetornoDeAPI(Boleto); end; // esperar entre transmissao if LFlagEnviar and (FDSServBanc.FieldByName('API_CONS_APOS_INCLUIR_SER').AsString = 'S') and (FDSServBanc.FieldByName('API_TEMPO_CONS_SER').AsInteger > 0) then begin Sleep(FDSServBanc.FieldByName('API_TEMPO_CONS_SER').AsInteger); end; // inter: Se antes nao tinha solicitacao, agora tem, e ainda nao pegou o retorno do boleto, pegar if (AMsgErro = '') and (FDSServBanc.FieldByName('API_CONS_APOS_INCLUIR_SER').AsString = 'S') and // inter v3 (LCodigoSolicitacaoTmp = '') and (PCodigoSolicitacao <> '') then begin Boleto.Configuracoes.WebService.Operacao := TOperacao.tpConsultaDetalhe; Boleto.Enviar; AMsgErro := LerRetornoDeAPI(Boleto); end; Aberto a sugestões de melhoras no codigo, a função LerRetornoDeAPI só avalia o vetor de erros e muda as variaveis de retorno, tipo "PCodigoSolicitacao" , se teve recusa, já deixei no meu sistema o modo sleep, tipo tem la na nfe, caso api comece a ficar lenta.
  23. Finalizado os ajustes: Notei que: a url do pix, existem 3 casos: property EMV: String read Femv write Femv; // inter está aqui property UrlPix: String read FurlPix write FurlPix; // nao carrega aqui c Achei confuso, pq tem os 2? Testado envio v2 e v3 ok Cancelamento: v2 e v3.ACBrBoletoRet_Inter_API.pasACBrBoletoW_Inter_API.pas baixa, será testado no cliente, não tenho como fazer no momento, mas, havendo divergência, e o fonte estiver ok, eu corrijo. Sobre o erro do parse que o json ficava vazio, era o create, e parse logo apos, é preciso dar o parse direto, sem o create... Segue fontes anexo
  24. Então Gabriel, ela não sendo sincrono, até daria, no modulo de NF-e, tem um negocio lá, do delay entre transmissão e pedido de retorno do lote. mas como não sabemos o comportamento dessa api do inter, estou mudando a logica minha, para fazer posterior, o chato, é ter que implementar no emissor de boleto, um "buscar retorno"... usuario pode cair no esquecimento, desse posterior, ou, a gente implantar isso via robô.
  25. Daniel, tem algo a mais que eu preciso olhar, no leitor de json base? olha isso: Nao acha o elemento
×
×
  • 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...