-
Total de ítens
729 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Antonio Gomes postou
-
tem documentação? voce pode pegar uma unit e ir adaptando.
-
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
termina o tempo timeout, mas é tipo o indy faz, o certo, por isso sugeri aumentar o tempo- 13 replies
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
Se sua internet for pereba tipo a nossa aqui do interior, revise o timeout, esse banco demora o retorno as vezes e o acbr corta a conexão. daí vc envia de novo, e começa dar que ja tem um boleto lá registrado com o seu numero.- 13 replies
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
é sob vpn nao sei o comportamento, é 443 a porta ne...
-
Depois dele, tirando o C6 que tem um timeout complexado, vai ser suave.
-
Então, a V1 deles, era top, na V2 que apareceu isso. Não é igual alguns outros bancos, que bate e registra, parece que o sistema deles lá é meio lezado tá. E tem dias que não autoriza, cai, pq eu tenho um agendamento no cliente todo dia de consultar e dar baixa, e tem dias que o cliente chama, que nao rodou baixa do financeiro, dai eu rastreio, e está com erro 400 ou 500. E´ raro, mas acontece. Uma boa pedida, é sempre dar uma sondada naquele arquivo de particularidades, mas os problemas a gente vai pegando quando o programa vai para linha de produção.
-
Na verdade, existe um ciclo que eu tive que programar no meu sistema, por conta do inter, ele nao bate de cara e devolve tudo. Repara meu código: TBoletoAPI = record CodigoSolicitacao: string; NossoNumeroFormatado: string; CodigoBarras: string; LinhaDigitavel: string; TxPIX: string; UrlPIX: string; NumeroBoleto: string; DVBoleto: string; procedure Limpar; end; FBoletoApi: TBoletoAPI; // tem os dados do boleto que uso para salvar no meu banco e carrego quando começo processar, abaixo o codigo do inter gravado na primeira passada. FBoletoApi.CodigoSolicitacao := AFDReceber.FieldByName('COD_SOLICITACAO_BOL_REC').AsString; // Anterior LCodigoSolicitacaoTmp := FBoletoApi.CodigoSolicitacao; AMsgErro := ''; LFlagEnviar := True; // bloco tratar, se gravou apenas o numero correspondente: if (FDSServBanc.FieldByName('API_CONS_APOS_INCLUIR_SER').AsString = 'S') and (FBoletoApi.CodigoSolicitacao <> '') and (FBoletoApi.NumeroBoleto = '') then 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, FBoletoApi); LFlagEnviar := False; // não enviar de novo if FBoletoApi.CodigoSolicitacao <> '' then LCodigoSolicitacaoTmp := FBoletoApi.CodigoSolicitacao; 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, FBoletoApi); if FBoletoApi.CodigoSolicitacao <> '' then LCodigoSolicitacaoTmp := FBoletoApi.CodigoSolicitacao; 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) and (FBoletoApi.NumeroBoleto = '') 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 // c6, vem o retorno sem precisar consultar, se tem o boleto, nao pode consultar, dá erro if (AMsgErro = '') and (FDSServBanc.FieldByName('API_CONS_APOS_INCLUIR_SER').AsString = 'S') and // inter v3 (LCodigoSolicitacaoTmp = '') and (FBoletoApi.CodigoSolicitacao <> '') and (FBoletoApi.NumeroBoleto = '') then begin Boleto.Configuracoes.WebService.Operacao := TOperacao.tpConsultaDetalhe; Boleto.Enviar; AMsgErro := LerRetornoDeAPI(Boleto, FBoletoApi); if (LCodigoSolicitacaoTmp = '') and (FBoletoApi.CodigoSolicitacao <> '') then LCodigoSolicitacaoTmp := FBoletoApi.CodigoSolicitacao; if (LCodigoSolicitacaoTmp = '') and (FBoletoApi.CodigoSolicitacao <> '') then LCodigoSolicitacaoTmp := FBoletoApi.CodigoSolicitacao; end; E aumente seu timeout, o padrao do componente tem dias que bixa tudo, eu coloquei 10000 no meu, mas tem cliente que ja botei 15000. Padrão do ACBr: 5000
-
Mano, tenta depurar com esse retorno: IDBoleto if ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.IDBoleto <> '' then ABoletoApi.CodigoSolicitacao := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.IDBoleto; ABoletoApi.NossoNumeroFormatado := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.NossoNum; ABoletoApi.CodigoBarras := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.CodBarras; ABoletoApi.LinhaDigitavel := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.LinhaDig; ABoletoApi.TxPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.TxId; ABoletoApi.UrlPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.EMV; // inter está vindo aqui if ABoletoApi.UrlPIX = '' then ABoletoApi.UrlPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.UrlPIX; if ABoletoApi.CodigoSolicitacao = '' then ABoletoApi.CodigoSolicitacao := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.NossoNumeroCorrespondente; // separar dados - inter vem junto ABoletoApi.NumeroBoleto := Copy(ABoletoApi.NossoNumeroFormatado, 1, ABoletoApi.NossoNumeroFormatado.Length - 1); ABoletoApi.DVBoleto := Copy(ABoletoApi.NossoNumeroFormatado, ABoletoApi.NossoNumeroFormatado.Length, 1);
-
Tá doido... Posta como voce grava, os campos que voce pega do acbr e coloca se está atualizado seu projeto acbr.
-
Correção da unit ACBrBoletoWS no ACBrBoleto para o c6Bank
Antonio Gomes replied to Jhonlenon Ribeiro's tópico in ACBrBoleto
Estamos quase lá então, uma ideia poderia ser salvar essa lista, e retornar para impressão? Das enviadas e que nao precisam mais ser transmitidas... Carece eu testar, se remover da lista as enviadas com sucesso se imprime certo as 50 parcelas colocadas, se limpa so a parte de envio, se sim qual comando é? Hoje precisa limpar o ListaDeBoletos, que penso que esteja atrelado o retorno em TBoleto.TotalListaRetornoWeb ou seja o titulo esta dentro da lista né? Ex: Boleto.ListadeBoletos.Clear; // tem nao fazer isso, mas limpar so lista de envio ? -
Correção da unit ACBrBoletoWS no ACBrBoleto para o c6Bank
Antonio Gomes replied to Jhonlenon Ribeiro's tópico in ACBrBoleto
Não sei, eu não envio monte de NFe, sempre foi uma a uma, justamente para evitar esses problemas, mas o boleto, te dizer a verdade eu vi esse problema, pq estou sempre trocando ideias com quem mexe com as integrações de bancos, ainda mais o C6... Logo, eu não tenho o habito de usar o componente para enviar o pacote de carnes como vocês tem nos demos. Lembre-se, esse problema é com carnê. Mesmo eu com carnê eu processo um boleto por vez, nem impressão eu uso do objeto, pois se mexer nessa mesma lista que vc falou para limpar a impressão cai por terra. De novo, pense fora da caixa, com a mente do lado de cá. Obs: está propicio a data erro na parcela, mesmo sendo o mesmo cliente na lista, api falhar no final do envio.... -
Correção da unit ACBrBoletoWS no ACBrBoleto para o c6Bank
Antonio Gomes replied to Jhonlenon Ribeiro's tópico in ACBrBoleto
Se der erro no envio da api sim, isso acontece. Pense fora da caixa. -
entao, a parte do retorno do log voce removeu ? Pergunta: A dll de comunicação no cliente voce colocou igual a sua?
-
Correção da unit ACBrBoletoWS no ACBrBoleto para o c6Bank
Antonio Gomes replied to Jhonlenon Ribeiro's tópico in ACBrBoleto
analisando, para que nao seja acionado o mesmo processo se algum boleto da lista estiver processado, ignorar: Analisando o retorno de cada unit Ret, no caso o C6 ele preenche isso: ARetornoWS.DadosRet.IDBoleto.CodBarras := OnlyNumber(LJsonObject.AsString['bar_code']); ARetornoWS.DadosRet.IDBoleto.LinhaDig := OnlyNumber(LJsonObject.AsString['digitable_line']); ARetornoWS.DadosRet.IDBoleto.NossoNum := LJsonObject.AsString['our_number'];//LinhaDigitavelExplodeInfo(ARetornoWS.DadosRet.IDBoleto.LinhaDig,TLDNossoNumero);//LJsonObject.AsString['internal_id']; ARetornoWS.DadosRet.IDBoleto.IDBoleto := LJsonObject.AsString['id']; ARetornoWS.DadosRet.TituloRet.NossoNumeroCorrespondente := ARetornoWS.DadosRet.IDBoleto.IDBoleto; ARetornoWS.DadosRet.TituloRet.CodBarras := ARetornoWS.DadosRet.IDBoleto.CodBarras; ARetornoWS.DadosRet.TituloRet.LinhaDig := ARetornoWS.DadosRet.IDBoleto.LinhaDig; ARetornoWS.DadosRet.TituloRet.NossoNumero := ARetornoWS.DadosRet.IDBoleto.NossoNum; ARetornoWS.DadosRet.TituloRet.Carteira := LJsonObject.AsString['billing_scheme']; ARetornoWS.DadosRet.TituloRet.Vencimento := DateToDateTime(LJsonObject.AsString['due_date']); Logo, penso que talvez criar um rotina virtual, de cada unit, ainda tem poucos para mexer, com uma coisa tipo; Hipotese, em cada banco: function TRetornoEnvio_C6.BoletoFoiEnviado(const ARetornoWS: TACBrBoletoRetornoWS): Boolean; begin // analisar se o boleto na fila está ja com dado que a api retorna, precisa ser cada banco, pois cada um manda de uma forma, precisa ser a informacao vital da existencia do boleto na api ou o retorno do sucesso do registro Result:= (ARetornoWS.DadosRet.IDBoleto.CodBarras <> '') and (ARetornoWS.DadosRet.IDBoleto.LinhaDig <> ''); end; -
Correção da unit ACBrBoletoWS no ACBrBoleto para o c6Bank
Antonio Gomes replied to Jhonlenon Ribeiro's tópico in ACBrBoleto
@panda Então Jhoni, conforme conversamos, uma sugestão, é avaliar, se o boleto a ser enviado, já tem o dado que o retorno da API preenche, no caso, nosso numero é um caso. Tipo, colocar um continue, para nao mandar de novo, se tem ele já veja: try if FBoleto.ListadeBoletos.Count > 0 then begin for indice := 0 to Pred(FBoleto.ListadeBoletos.Count) do begin if NumeroDoBoletoAPI <> '' then // precisa pegar o campo que grava o retorno do numero do boleto Continue; -
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
- 13 replies
-
- 1
-
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
Mano, isso if (ARetornoWS.ListaRejeicao.Count = 0) then vem zerado no seu ?- 13 replies
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
tente aumentar o time out comigo o padrao do acbr nao deu bom, pelo menos nesse banco, nao volta retorno as vezes, e voce tenta mandar de novo, avisa que ja tem um boleto gerado- 13 replies
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
Boleto C6 Não retorna nosso número na resposta da geração.
Antonio Gomes replied to Diego Bastos's tópico in ACBrBoleto
o retorno desse banco é no tpConsultaDetalhe ou tpInclui Qual voce usou?- 13 replies
-
- bug report
- boletos
-
(e 1 mais)
Tags:
-
Isso, o meu eu mudei também de sandbox paa homologacao e deu certo... Eu pensava que ja tinha testado isso antes em modo sandbox kkk o case ali
-
a falta da url descobri pq, se pusermos em sandbox nao entra nisso, nao tem como colocar o sandbox ali no homogacao ?
-
dead_line deles tem pegadinha tá: O deles é carencia de juros, nao dias apos vencido para calcular juros, eu pasava no meu que o juros era um dia apos o vencimento, mandaram eu colocar zero no dead_line O retorno prepara que tem outra pegadinha, o nosso numero vem com zero a menos no retorno txt, e nao tem comando ainda na api para pegar extrato dos boletos pagos. 29/05/25 09:27:35:873 -03:00 - Comando Enviar: {"external_reference_id":"MN00001","amount":100, "due_date":"2025-06-29","instructions":["Teste MSG!"], "discount":{"discount_type":"P", "first":{"value":10,"dead_line":10}}, "interest":{"type":"P","value":0.1,"dead_line":5}, "fine":{"type":"P","value":5,"dead_line":5}, "payer":{"name":"Teste de Nome Sacado","tax_id":"50146335015", "address":{"street":"Teste de Endereco","number":1,"complement":"","city":"Teste Cidade","state":"SP","zip_code":"01014000"}}} Por hora atualizei o acbr ontem, deu erro de falta de url de sandbox... devem ter mexido algo mesmo
-
A solução por hora nao foi no componente. Mas no programa mesmo. A do meu ponto de vista, o retorno vindo no txt eles tilham que nivelar os campos ao retorno quando é carteira 20,gerado via boleto cliente emite. Mas como disse, a api pede pouca coisa.
-
Como não vi evolução por parte do C6, para colocar o valor correto, eu fiz uma gambia no meu sistema, acrescentando o zero para achar o nosso numero, e vida que segue. Fecha o tópico, se puder ate deletar, pois nao tem relevancia.
-
Alexandre, ali a gente pode mexer, para atender uma carteira né ? Pois a api está vindo como carteira 15, logo o retorno se vc analisar, nao tem de fato os dados tudo. Embora eles tenha devolvido meu dado unico no campo da posicao do "numero do documento", acho que é so inverter a leitura, ou ainda assim, aguardar se o c6 ajuste o retorno de liquidações de boletos oriundos da api.