Ir para conteúdo
  • Cadastre-se

Filippe Maymone

Membros
  • Total de ítens

    78
  • Registro em

  • Última visita

Tudo que Filippe Maymone postou

  1. isso .. o meu foi o seguinte .. eu estava enviando na versão 2.0 que esta sendo descontinuada .. mesmo no campo de versão se voce colocar 3.0 ele entra o 2.0 O que determina a versão no acbr é o indicadorPIX .. se voce colcoar ele como true, ele envia para o endereço do webservice 3.0 se colocar false envia no 2.0
  2. Boa tarde. Não estou conseguindo gerar múltiplos na API banco Inter. Envia o primeiro e da OK Certinho .. .ai no segundo da "06/03/26 14:36:37:276 -03:00 - Código do Envio: 429 1.1 Too Many Requests" ja tentei mandar 1 por um em um loop e colocar uns sleep e nada .. minha rotina esta assim procedure Tfrprincipal.EnviarBoletos; var SLRemessa: TStringList; i, j: Integer; MinhaQueryUpdate: TFDQuery; xSeuNumeroRaw, xFiltro, xRef, xParcela, sMsgErro: string; Partes: TArray<string>; begin if FACBrBoleto.ListadeBoletos.Count <= 0 then Exit; if not ConfirmMessage('Deseja enviar ' + FACBrBoleto.ListadeBoletos.Count.ToString + ' Boleto(s)?', True) then Abort; SLRemessa := TStringList.Create; try MostraEspera('Enviando boletos...'); // Envia tudo de uma vez, igual ao exemplo do ACBr FACBrBoleto.Configuracoes.WebService.Operacao := tpInclui; FACBrBoleto.Enviar; SLRemessa.Add('=== ENVIO: ' + FormatDateTime('dd/mm/yyyy hh:nn:ss', Now) + ' | Boletos: ' + FACBrBoleto.ListadeBoletos.Count.ToString + ' | Retornos: ' + FACBrBoleto.TotalListaRetornoWeb.ToString + ' ==='); if FACBrBoleto.TotalListaRetornoWeb <= 0 then begin SLRemessa.Add('NENHUM retorno recebido da API.'); Exit; end; MinhaQueryUpdate := TFDQuery.Create(nil); try MinhaQueryUpdate.Connection := frdm.FDConn; for i := 0 to Pred(FACBrBoleto.TotalListaRetornoWeb) do begin SLRemessa.Add('---'); SLRemessa.Add('HTTP=' + IntToStr(FACBrBoleto.ListaRetornoWeb[i].HTTPResultCode)); SLRemessa.Add('Msg=' + FACBrBoleto.ListaRetornoWeb[i].MsgRetorno); SLRemessa.Add('JSON=' + FACBrBoleto.ListaRetornoWeb[i].JSON); // Só grava no banco se foi sucesso (200 ou 201) if FACBrBoleto.ListaRetornoWeb[i].HTTPResultCode in [200, 201] then begin xSeuNumeroRaw := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero; // Se vier vazio no retorno, pega do boleto enviado pelo índice if (xSeuNumeroRaw = '') and (FACBrBoleto.ListadeBoletos.Count > i) then xSeuNumeroRaw := FACBrBoleto.ListadeBoletos[i].SeuNumero; SLRemessa.Add('SeuNumero=' + xSeuNumeroRaw); SLRemessa.Add('NossoNumero=' + FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.NossoNumero); SLRemessa.Add('CodBarras=' + FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras); SLRemessa.Add('LinhaDig=' + FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.LinhaDig); if xSeuNumeroRaw = '' then begin SLRemessa.Add('ERRO: SeuNumero vazio, não foi possível localizar no banco.'); Continue; end; Partes := xSeuNumeroRaw.Split(['-']); if Length(Partes) < 2 then begin SLRemessa.Add('ERRO: formato de SeuNumero inválido: ' + xSeuNumeroRaw); Continue; end; xRef := Partes[0].Trim; xParcela := Partes[Length(Partes)-1].Trim; if Pos('P', UpperCase(xRef)) = 1 then begin xRef := StringReplace(UpperCase(xRef), 'P', '', [rfReplaceAll]).Trim; xFiltro := Format(' and idpedido = %s and nparcela = %s', [xRef, QuotedStr(xParcela)]); end else xFiltro := Format(' and numnf = %s and nparcela = %s', [xRef, QuotedStr(xParcela)]); try MinhaQueryUpdate.SQL.Text := 'UPDATE TBCTAREC SET ' + ' NOSSONUMERO = :NOSSONUMERO, ' + ' CODIGOBARRAS = :CODIGOBARRAS, ' + ' IDCONTA = :IDCONTA, ' + ' LINHADIGITAVEL = :LINHADIGITAVEL, ' + ' STATUS_API = :STATUS_API, ' + ' QRCODE = :QRCODE, ' + ' STSBOLETO = ''T'' ' + 'WHERE 1=1 ' + xFiltro; MinhaQueryUpdate.ParamByName('IDCONTA').AsInteger := cbSelConta.Value; MinhaQueryUpdate.ParamByName('NOSSONUMERO').AsString := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.NossoNumero; MinhaQueryUpdate.ParamByName('CODIGOBARRAS').AsString := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras; MinhaQueryUpdate.ParamByName('LINHADIGITAVEL').AsString := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.LinhaDig; MinhaQueryUpdate.ParamByName('STATUS_API').AsString := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.EstadoTituloCobranca; MinhaQueryUpdate.ParamByName('QRCODE').AsString := FACBrBoleto.ListaRetornoWeb[i].DadosRet.TituloRet.EMV; MinhaQueryUpdate.ExecSQL; SLRemessa.Add('SUCESSO gravado no banco: ' + xSeuNumeroRaw); except on E: Exception do SLRemessa.Add('ERRO ao gravar banco ' + xSeuNumeroRaw + ': ' + E.Message); end; end else begin // Loga erros e rejeições sMsgErro := FACBrBoleto.ListaRetornoWeb[i].MsgRetorno; for j := 0 to Pred(FACBrBoleto.ListaRetornoWeb[i].ListaRejeicao.Count) do sMsgErro := sMsgErro + ' | ' + FACBrBoleto.ListaRetornoWeb[i].ListaRejeicao[j].Mensagem; SLRemessa.Add('FALHA HTTP ' + IntToStr(FACBrBoleto.ListaRetornoWeb[i].HTTPResultCode) + ': ' + sMsgErro); end; end; finally MinhaQueryUpdate.Free; end; imprimirBoleto; finally SLRemessa.SaveToFile(arqRetorno + 'Log_Final_' + FormatDateTime('hhmmss', Now) + '.txt'); SLRemessa.Free; FechaEspera; end; end; Coloquei o retorno .. so dei uma bagunçada nos dados sensíveis ... mas o retorno é esse .. vai o primeiro e os demais não .. retorno.txt
  3. Ola pessoal blz .. No banco do brasil CNAB 400 a informação que "INDICADOR DE RECEBIMENTO PARCIAL" no acbr na linha 1190 tem um Ifthen que so permite 22 Opções (S,N) Porem no manual aparecem 3 (S,N,'') Que o vazio vai ser oq eu vem do branco. Ai no ACBR fiz a seguinte alteração . . ACBrBancoBrasil.pas lPermitePagamentoParcial := ' '; if TamConvenioMaior6 then begin wLinha := '7'; //Alteração padrão Banco permite parcial Filippe Maymone 09/02/2026 if TipoPagamento = tpNao_Aceita_Valor_Divergente then lPermitePagamentoParcial := 'N' else if TipoPagamento = tpPadrao_Banco then lPermitePagamentoParcial := ' ' else lPermitePagamentoParcial := 'S'; end else wLinha := '1'; e criei o tipo no acbrConversao.pas Tinha passado com 'S' e não ia e o banco solicitou para passar em branco .. Posições 394 a 394: Preencher com brancos Se puderem atualizar no ACBR .. Doc2627CBR641Pos7.pdf ACBrBancoBrasil.pas ACBrBoletoConversao.pas
  4. Bom dia. Estou com problema quando emito Boleto via API no banco inter. Faço a geração, envio e o retorno não traz os dados do boleto .. Primeiro e rotina do incluir boleto, eu uso o idctarec que chave primária no campo seunumero para identificar mais facil o titulo... function Tfrprincipal.IncluiBoletos(idctarec : integer) : integer; var Titulo : TACBrTitulo; VQtdeCarcA, VQtdeCarcB, VQtdeCarcC :Integer; VLinha, logo : string; i, j, Numero: Integer; begin MostraEspera(' Gerando lista de boletos'); try Result := 0; frdm.qrEmpresa.Locate('idempresa',frdm.qrCtarecIDEMPRESA.AsInteger,[]); frdm.FiltraConta(' ORDER BY NOMECONTA '); if idctarec > 0 then begin if not frdm.qrConta.Locate('idconta', frdm.qrCtarecIDCONTA.AsInteger,[]) Then ShowExceptionDialog('Conta Corrente não localizada'); end else if not frdm.qrConta.Locate('idconta',cbSelConta.Value,[]) Then ShowExceptionDialog('Conta Corrente não localizada'); grdBoletos.SelectedRows.CurrentRowSelected := True; cbempresa.KeyValue := frdm.qrEmpresaIDEMPRESA.AsInteger; AplicarConfiguracoesAoComponente; frdm.qrCtarec.DisableControls; if frdm.qrCtarec.RecordCount > 0 then begin for i := 0 to grdBoletos.SelectedRows.Count-1 do begin Titulo := FACBrBoleto.CriarTituloNaLista; frdm.qrCtarec.Bookmark := grdBoletos.SelectedRows[i]; Titulo.Vencimento := frdm.qrCtarecDATAVCTO.AsDateTime; Titulo.DataDocumento := now; Titulo.EspecieDoc := 'DM'; Titulo.Aceite := atNao; Titulo.DataProcessamento := Now; Titulo.EspecieMod := '$'; Titulo.Carteira := frdm.qrContaCARTEIRA.AsString; if frdm.qrCtaRecNUMNF.AsInteger > 0 then Titulo.NumeroDocumento := frdm.qrCtaRecNUMNF.AsString+'-'+frdm.qrCtaRecNPARCELA.AsString else Titulo.NumeroDocumento :='P- '+frdm.qrctarecidPEDIDO.AsString+'-'+frdm.qrctarecNPARCELA.AsString; Titulo.SeuNumero := frdm.qrCtarecIDCTAREC.AsString; if frdm.qrContaNNUMEROINI.AsString <> EmptyStr Then begin if frdm.qrCtaRecNOSSONUMERO.AsString = EmptyStr then begin numero := StrToInt(frdm.GetNossoNumero(frdm.qrContaIDCONTA.AsString)); Titulo.NossoNumero := FormatFloat(StringOfChar('0', TamanhoNossonumero), numero); frdm.qrCtaRec.Edit; frdm.qrCtaRecNOSSONUMERO.AsString := Titulo.NossoNumero; frdm.qrCtaRec.Post; end else begin Titulo.NossoNumero := frdm.qrCtaRecNOSSONUMERO.AsString; end; end else if frdm.qrCtaRecNOSSONUMERO.AsString <> EmptyStr Then Titulo.NossoNumero := frdm.qrCtaRecNOSSONUMERO.AsString; Titulo.NossoNumeroCorrespondente := frdm.qrCtarecCODIGOSOLICITACAO.AsString; //utilizado na Consulta, Alteração e Baixa da API Inter com QrCode Titulo.ValorDocumento := frdm.qrCtarecVLRREAL.AsFloat; Titulo.Sacado.NomeSacado := frdm.qrCtarecRAZAOCLI.AsString; Titulo.Sacado.CNPJCPF := OnlyNumber(frdm.qrCtarecCNPJCLI.AsString); Titulo.Sacado.Email := frdm.qrCtarecMAILCLI.AsString; if (frdm.qrCtarecCEP_COB.AsString <> '') and (Length(OnlyNumber(frdm.qrCtarecCEP_COB.AsString)) = 8) then begin Titulo.Sacado.Logradouro := frdm.qrCtarecENDERECO_COB.AsString; Titulo.Sacado.Numero := frdm.qrCtarecNUMERO_COB.AsString; Titulo.Sacado.Bairro := frdm.qrCtarecBAIRRO_COB.AsString; Titulo.Sacado.Cidade := frdm.qrCtarecCIDADE_COB.AsString; Titulo.Sacado.UF := frdm.qrCtarecESTADO_COB.AsString; Titulo.Sacado.CEP := OnlyNumber(frdm.qrCtarecCEP_COB.AsString); end else begin Titulo.Sacado.Logradouro := frdm.qrCtarecENDERECO.AsString; Titulo.Sacado.Numero := frdm.qrCtarecNUMERO.AsString; Titulo.Sacado.Bairro := frdm.qrCtarecBAIRRO.AsString; Titulo.Sacado.Cidade := frdm.qrCtarecCIDADE.AsString; Titulo.Sacado.UF := frdm.qrCtarecESTADO.AsString; Titulo.Sacado.CEP := OnlyNumber(frdm.qrCtarecCEP.AsString); end; Titulo.ValorAbatimento := 0; if frdm.xparametro.BoletosDiasProtesto > 0 then Titulo.DataProtesto := Titulo.Vencimento + frdm.xparametro.BoletosDiasProtesto; Titulo.DataLimitePagto := Titulo.Vencimento + 30; Titulo.ValorMoraJuros := StrToCurr(FormatFloat('0.00', frdm.xparametro.BoletoJuros)); Titulo.DataMoraJuros := frdm.qrCtarecDATAVCTO.AsDateTime + 1; Titulo.CodigoMoraJuros := cjValorDia; Titulo.PercentualMulta := StrToCurrDef(edtMulta.Text,0)/100; Titulo.CodigoMulta := cmPercentual; Titulo.Mensagem.Text := frdm.xparametro.BoletoMensagemPadrao; Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar; Titulo.Instrucao1 := frdm.qrContaINSTRUCAO1.AsString; Titulo.Instrucao2 := frdm.qrContaINSTRUCAO2.AsString; Titulo.QtdePagamentoParcial := 1; Titulo.TipoPagamento := tpNao_Aceita_Valor_Divergente; Titulo.PercentualMinPagamento := 0; Titulo.PercentualMaxPagamento := 0; Titulo.ValorMinPagamento := 0; Titulo.ValorMaxPagamento := 0; FACBrBoleto.AdicionarMensagensPadroes(Titulo,mmMensagem.Lines); if Titulo.ACBrBoleto.Configuracoes.WebService.Ambiente = tawsSandBox then Titulo.QrCode.emv := '00020101021226870014br.gov.bcb.pix2565qrcodepix-h.bb.com.br/pix/v2/22657e83-ecac-4631-a767-65e16fc56bff5204000053039865802BR5925EMPRORT AMBIENTAL 6008BRASILIA62070503***6304BD3D' else Titulo.QrCode.emv := frdm.qrCtarecQRCODE.AsString; end; end else begin ShowErrorMessage('Nenhum título Filtrado'); end; finally FechaEspera; frdm.qrCtarec.EnableControls; end; end; ai depois tenho o gerar que faz o envio.. procedure Tfrprincipal.EnviarBoletos; var SLRemessa: TStringList; i, j: Integer; Boleto : TACBrBoleto; xSeuNumero : string; begin Boleto := FACBrBoleto; if Boleto.ListadeBoletos.Count <= 0 then exit; if not ConfirmMessage('Deseja enviar '+Boleto.ListadeBoletos.Count.ToString + ' Boleto(s)', True) then Abort; SLRemessa := TStringList.Create; try MostraEspera('Enviando boletos'); Boleto.Configuracoes.WebService.Operacao := tpInclui; SLRemessa.Add('=== INICIANDO ENVIO ==='); SLRemessa.Add('Data/Hora: ' + FormatDateTime('dd/mm/yyyy hh:nn:ss', Now)); SLRemessa.Add('Quantidade de boletos: ' + IntToStr(Boleto.ListadeBoletos.Count)); try if Boleto.Enviar Then begin SLRemessa.Add('=== ENVIO REALIZADO ==='); imprimirBoleto; end else SLRemessa.Add('=== ENVIO RETORNOU FALSE ==='); SLRemessa.Add('Total de retornos: ' + IntToStr(Boleto.TotalListaRetornoWeb)); finally FechaEspera; end; if Boleto.TotalListaRetornoWeb > 0 then begin for i := 0 to Pred(Boleto.TotalListaRetornoWeb) do begin SLRemessa.Add(''); SLRemessa.Add('========== RETORNO ' + IntToStr(i+1) + ' =========='); // Logs detalhados do retorno SLRemessa.Add('Cod_Retorno='+ Boleto.ListaRetornoWeb[i].CodRetorno); SLRemessa.Add('Msg_Retorno='+ Boleto.ListaRetornoWeb[i].MsgRetorno); SLRemessa.Add('Ori_Retorno='+ Boleto.ListaRetornoWeb[i].OriRetorno); SLRemessa.Add('HTTP_Result='+ IntToStr(Boleto.ListaRetornoWeb[i].HTTPResultCode)); // Rejeições if Boleto.ListaRetornoWeb[i].ListaRejeicao.Count > 0 then begin SLRemessa.Add('*** ATENÇÃO: Título com rejeições ***'); for j := 0 to Pred(Boleto.ListaRetornoWeb[i].ListaRejeicao.Count) do begin SLRemessa.Add('[Rejeicao ' + IntToStr(j+1) + ']'); SLRemessa.Add(' Campo: ' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Campo); SLRemessa.Add(' Codigo: ' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Codigo); SLRemessa.Add(' Mensagem: ' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Mensagem); end; end; // Dados do título retornado SLRemessa.Add('SeuNumero (ID) retornado: ' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero); SLRemessa.Add('NossoNumero: ' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.NossoNumero); SLRemessa.Add('CodBarras: ' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras); // Processamento e gravação if NaoEstaVazio(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras) or NaoEstaVazio(Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto.NossoNum) then begin if Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero <> EmptyStr then begin // Busca direta pelo ID xSeuNumero := ' and idctarec = ' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero; SLRemessa.Add('Filtro: ' + xSeuNumero); if frdm.Filtractarec(xSeuNumero) > 0 Then begin SLRemessa.Add('*** Título localizado! Gravando dados... ***'); with Boleto.ListaRetornoWeb[i].DadosRet.TituloRet do begin try frdm.qrctarec.Edit; frdm.qrCtarecIDCONTA.AsInteger := cbSelConta.Value; frdm.qrCtarecNOSSONUMERO.AsString := NossoNumero; frdm.qrCtarecCODIGOSOLICITACAO.AsString := NossoNumeroCorrespondente; frdm.qrCtarecCODIGOBARRAS.AsString := CodBarras; frdm.qrCtarecLINHADIGITAVEL.AsString := LinhaDig; frdm.qrCtarecSTATUS_API.AsString := EstadoTituloCobranca; frdm.qrCtarecSTSBOLETO.AsString := 'T'; frdm.qrCtarecQRCODE.AsString := EMV; frdm.qrCtarecTXID.AsString := TxId; frdm.SalvaDataSet(frdm.qrctarec); SLRemessa.Add('*** Gravado com sucesso! ***'); except on E: Exception do begin SLRemessa.Add('*** ERRO ao gravar: ' + E.Message); SLRemessa.Add('ID: ' + SeuNumero); end; end; end; end else SLRemessa.Add('*** AVISO: Título não localizado com ID=' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero); end else begin SLRemessa.Add('*** AVISO: SeuNumero vazio no retorno ***'); Continue; // Vai para o próximo título end; end; end; end else SLRemessa.Add('*** NENHUM RETORNO RECEBIDO DA API ***'); finally try SLRemessa.SaveToFile(arqRetorno + 'RetornoRegistro.txt'); SLRemessa.Add('Log salvo em: ' + arqRetorno + 'RetornoRegistro.txt'); except on E: Exception do ShowErrorMessage('Erro ao salvar log: ' + E.Message); end; SLRemessa.Free; end; end; Ai não traz o retorno .. o cliente olha la no campo o boleto esta la .. certinho conforme enviado... agora . o que estou fazendo errado. Ahh em teste aqui vai certinho, em produção com o cliente que não vai ..
  5. Boa tarde. Atualizei meu acbr hoje .. e começou a dar esse erro para enviar NFce e Homologação Rejeição: falha no schema xml do lote de NFe deu primeiro o erro IBS .. ai eu informei os campos so para homologação .. if NFE.Configuracoes.WebServices.Ambiente = taHomologacao then begin //Ide.cMunFGIBS := fdEmpresaIBGE_COD_CIDADE.AsInteger; Ide.tpNFDebito := tdNenhum; Ide.tpNFCredito := tcNenhum; Ide.gCompraGov.tpEnteGov := tcgEstados; Ide.gCompraGov.pRedutor := 0; end; if NFE.Configuracoes.WebServices.Ambiente = taHomologacao then begin ISel.CSTIS := cstis000; ISel.cClassTribIS := '100000'; ISel.vBCIS := 100; ISel.pIS := 5; ISel.pISEspec := 5; ISel.uTrib := 'UNIDAD'; ISel.qTrib := 10; ISel.vIS := 100; IBSCBS.CST := cst000; IBSCBS.cClassTrib := '100000'; IBSCBS.gIBSCBS.vBC := 100; IBSCBS.gIBSCBS.gIBSUF.pIBSUF := 5; IBSCBS.gIBSCBS.gIBSUF.vIBSUF := 100; IBSCBS.gIBSCBS.gIBSUF.gDif.pDif := 5; IBSCBS.gIBSCBS.gIBSUF.gDif.vDif := 100; IBSCBS.gIBSCBS.gIBSUF.gDevTrib.vDevTrib := 100; IBSCBS.gIBSCBS.gIBSUF.gRed.pRedAliq := 0; IBSCBS.gIBSCBS.gIBSUF.gRed.pAliqEfet := 0; IBSCBS.gIBSCBS.gIBSMun.pIBSMun := 5; IBSCBS.gIBSCBS.gIBSMun.vIBSMun := 100; IBSCBS.gIBSCBS.gIBSMun.gDif.pDif := 5; // IBSCBS.gIBSCBS.gIBSMun.gDif.vCBSOp := 100; IBSCBS.gIBSCBS.gIBSMun.gDif.vDif := 100; IBSCBS.gIBSCBS.gIBSMun.gDevTrib.vDevTrib := 100; IBSCBS.gIBSCBS.gIBSMun.gRed.pRedAliq := 5; IBSCBS.gIBSCBS.gIBSMun.gRed.pAliqEfet := 5; IBSCBS.gIBSCBS.gCBS.pCBS := 5; IBSCBS.gIBSCBS.gCBS.vCBS := 100; IBSCBS.gIBSCBS.gCBS.gDif.pDif := 5; // IBSCBS.gIBSCBS.gCBS.gDif.vCBSOp := 100; IBSCBS.gIBSCBS.gCBS.gDif.vDif := 100; IBSCBS.gIBSCBS.gCBS.gDevTrib.vDevTrib := 100; IBSCBS.gIBSCBS.gCBS.gRed.pRedAliq := 5; IBSCBS.gIBSCBS.gCBS.gRed.pAliqEfet := 5; IBSCBS.gIBSCBS.gTribRegular.CSTReg := cst000; IBSCBS.gIBSCBS.gTribRegular.cClassTribReg := '100000'; IBSCBS.gIBSCBS.gTribRegular.pAliqEfetRegIBSUF := 5; IBSCBS.gIBSCBS.gTribRegular.vTribRegIBSUF := 50; IBSCBS.gIBSCBS.gTribRegular.pAliqEfetRegIBSMun := 5; IBSCBS.gIBSCBS.gTribRegular.vTribRegIBSMun := 50; IBSCBS.gIBSCBS.gTribRegular.pAliqEfetRegCBS := 5; IBSCBS.gIBSCBS.gTribRegular.vTribRegCBS := 50; IBSCBS.gIBSCBS.gIBSCredPres.cCredPres := cp01; IBSCBS.gIBSCBS.gIBSCredPres.pCredPres := 5; IBSCBS.gIBSCBS.gIBSCredPres.vCredPres := 100; IBSCBS.gIBSCBS.gIBSCredPres.vCredPresCondSus := 100; IBSCBS.gIBSCBSMono.gMonoPadrao.qBCMono := 1; IBSCBS.gIBSCBSMono.gMonoPadrao.adRemIBS := 5; IBSCBS.gIBSCBSMono.gMonoPadrao.adRemCBS := 5; IBSCBS.gIBSCBSMono.gMonoPadrao.vIBSMono := 100; IBSCBS.gIBSCBSMono.gMonoPadrao.vCBSMono := 100; IBSCBS.gIBSCBSMono.gMonoReten.qBCMonoReten := 1; IBSCBS.gIBSCBSMono.gMonoReten.adRemIBSReten := 5; IBSCBS.gIBSCBSMono.gMonoReten.vIBSMonoReten := 100; IBSCBS.gIBSCBSMono.gMonoReten.vCBSMonoReten := 100; IBSCBS.gIBSCBSMono.gMonoRet.qBCMonoRet := 1; IBSCBS.gIBSCBSMono.gMonoRet.adRemIBSRet := 5; IBSCBS.gIBSCBSMono.gMonoRet.vIBSMonoRet := 100; IBSCBS.gIBSCBSMono.gMonoRet.vCBSMonoRet := 100; IBSCBS.gIBSCBSMono.gMonoDif.pDifIBS := 5; IBSCBS.gIBSCBSMono.gMonoDif.vIBSMonoDif := 100; IBSCBS.gIBSCBSMono.gMonoDif.pDifCBS := 5; IBSCBS.gIBSCBSMono.gMonoDif.vCBSMonoDif := 100; IBSCBS.gIBSCBSMono.vTotIBSMonoItem := 100; IBSCBS.gIBSCBSMono.vTotCBSMonoItem := 100; end end; ja atualizei os Schemas .. e nada ..
  6. Descobri .. estava passando Banco := Boleto.Banco; Banco.TipoCobranca := Boleto.GetTipoCobranca(frdm.qrContaBANCOCONTA.AsInteger,frdm.qrContaCARTEIRA.AsString); Depois dos dados da conta .. tem que vir antes para setar os tamanhos maximos correto do banco. Podem fechar o topic .. Abraços,
  7. Estou fazendo o envio para api do ITAU. Quando gerou 1 boleto mando a primeira vez .. da erro .. Result={ "codigo" : "400", "mensagem" : "Erro na validação de Campos", "campos" : [ { "campo" : "data.beneficiario.id_beneficiario", "mensagem" : "Conjunto agencia/conta/dac invalido", "valor" : "777400000219" } ] } Ai notei que o conjunto esta errado .. quando ja tento de novo na sequencia ele monta correto .. quando passo numero da conta Beneficiario.Conta := RemoverZerosEsquerda(frdm.qrContaNUMCONTA.AsString) O acbr complete automatico com os zeros a esquerda .. ai na hora de montar o Conjunto agencia/conta/dac invalido ele pega os 7 primeiros.. O engraçado .. que qunado passo e tento mandar de novo na sequencia ele vai certo .. acho que estou fazendo alguma sequencia errada .. Alguem consegue me dar uma ajuda...
  8. Filippe Maymone

    API ITAU

    Bom dia Agora estou tentando Gerar o boleto no ITAU; Gerei os certificados conforme o site Developer do Itaú. S:\Projects\GeCobranca\BIN\Certificado\Itau\certificado.crt S:\Projects\GeCobranca\BIN\Certificado\Itau\ARQUIVO_CHAVE_PRIVADA.key na hora do envio da erro de autenticação. Achei que o Itau seria mais simples que o Inter. .auhahua Alguem pode me dar uma luz .. 1.log
  9. esta gerando o PIX dinâmico ?? eu não uso essa parte de pix dinamico ..
  10. @Anadilson o qrcod é bem onde esta comentado ai ACBrBoletoPIXQRCode.emv E ele sta em Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.EMV Tem que receber algo parecido com isso .. Titulo.QrCode.emv := '00020101021226870014br.gov.bcb.pix2565qrcodepix-h.bb.com.br/pix/v2/22657e83-ecac-4631-a767-65e16fc56bff5204000053039865802BR5925EMPRORT AMBIENTAL 6008BRASILIA62070503***6304BD3D'; @Anadilson o qrcod é bem onde esta comentado ai ACBrBoletoPIXQRCode.emv E ele sta em Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.EMV Tem que receber algo parecido com isso .. Titulo.QrCode.emv := '00020101021226870014br.gov.bcb.pix2565qrcodepix-h.bb.com.br/pix/v2/22657e83-ecac-4631-a767-65e16fc56bff5204000053039865802BR5925EMPRORT AMBIENTAL 6008BRASILIA62070503***6304BD3D';
  11. Voces não vão acreditar .. Esse cliente eles trabalhando em Home office. E acessão via VPN uma maquina windows 10 via Terminal service. ai fui tirar a duvida, instalei o sistema na maquina local, fora da VPN... e pra surpresa de 0 pessoas, gerou bonitinho sem problema nenhuma...
  12. é então .. eu rodando aqui nenhum caiu em processamento . .vai tudo certinho .. Ai rodei aqui em produção, peguei com o cliente os boletos do dia ... e gerei 10 boletos em produção na minha maquina e foi que uma beleza .. auuhahua ai não consigo simular essa situação de "em processamento" complicado.. e fui iniciar meu desenvolvimento logo pelo banco Inter .. auhuahuhauhauhhua
  13. @Antonio Gomes agora acho que deu uma clareada .. O Inter tem esse problema de ficar em processamento e não retorno as informações do boleto .. ai voce voce pega e faz uma consulta detalhada do titulo... So ficou uma duvida .. quando ele fica em processamento, onde voce consegue pegar o CodigoSolicitacao ? Vi que a quando fica em processamento consigo as informações do boleto em Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto que não tem o codigo da solicitação...
  14. Código que eu estava falando era o codigoCorrespondente que eu utilizo pra fazer a consulta detalhada .. Agora entendi.. que ele esta em processamento . . Ai consigo pegar o retorno em Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto NossoNum codigo de barras ... so que no Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto .. não tenho por exemplo o seunumero . .ele não retorna ... ai não consigo identificar esse titulo dentro da minha base .... para poder gravar o nossonumero no banco .. .
  15. @Juliomar Marchettideixei pra ir vendo o que esta ocorrendo por enquanto que esta com problema.. mas agora gerei um boleto do meu computador e comparei os logs. E notei no log que gero no cliente esta ficando em "situacao":"EM_PROCESSAMENTO" Acho que é a o problema... mas por que no cliente esta ficando em processamento... Eu li que quando oesta e processamento, temos que fazer uma consulta detalhada, mas como entrou em processamento não pego o codigo ai não consigo consultar ...
  16. procedure EnviarBoletos; var SLRemessa: TStringList; i, j: Integer; Boleto : TACBrBoleto; begin Boleto := FACBrBoleto; if not ConfirmMessage('Deseja enviar '+Boleto.ListadeBoletos.Count.ToString + ' Boleto(s)', True ) then Abort; try //Função de Envio MostraEspera('Enviando boletos'); Boleto.Configuracoes.WebService.Operacao := tpInclui; Boleto.Enviar; // <<< retorna como false se o httpresult code for diferente de 200,201,202 //Verifica Lista com os retornos finally fechaespera; end; if Boleto.TotalListaRetornoWeb > 0 then begin SLRemessa := TStringList.Create; try for i:= 0 to Pred(Boleto.TotalListaRetornoWeb) do begin //Ler todos os campos da classe Retorno SLRemessa.Add('Cod_Retorno='+ Boleto.ListaRetornoWeb[i].CodRetorno + sLineBreak + 'Msg_Retorno='+ Boleto.ListaRetornoWeb[i].MsgRetorno + sLineBreak + 'Ori_Retorno='+ Boleto.ListaRetornoWeb[i].OriRetorno + sLineBreak + 'HTTP_Result='+ IntToStr(Boleto.ListaRetornoWeb[i].HTTPResultCode) + sLineBreak + 'JSON='+ Boleto.ListaRetornoWeb[i].JSON); if Boleto.ListaRetornoWeb[i].ListaRejeicao.Count > 0 then begin for j:= 0 to Pred(Boleto.ListaRetornoWeb[i].ListaRejeicao.Count) do begin SLRemessa.Add('[Rejeicao' +IntToStr(j)+']' + sLineBreak + 'Campo=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Campo + sLineBreak + 'Codigo=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Codigo + sLineBreak + 'Versao=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Versao + sLineBreak + 'Mensagem=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Mensagem + sLineBreak + 'Ocorrencia=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Ocorrencia + sLineBreak + 'Valor=' + Boleto.ListaRetornoWeb[i].ListaRejeicao[j].Valor + sLineBreak ); end; end; SLRemessa.Add('HEADER' + sLineBreak + 'Versao=' + Boleto.ListaRetornoWeb[i].Header.Versao + sLineBreak + 'Autenticacao=' + Boleto.ListaRetornoWeb[i].Header.Autenticacao + sLineBreak + 'Usuario_Servico=' + Boleto.ListaRetornoWeb[i].Header.Usuario_Servico + sLineBreak + 'Usuario=' + Boleto.ListaRetornoWeb[i].Header.Usuario + sLineBreak + 'Operacao=' + TipoOperacaoToStr(Boleto.ListaRetornoWeb[i].Header.Operacao) + sLineBreak + 'Indice=' + IntToStr(Boleto.ListaRetornoWeb[i].Header.Indice) + sLineBreak + 'Sistema_Origem=' + Boleto.ListaRetornoWeb[i].Header.Sistema_Origem + sLineBreak + 'Agencia=' + Boleto.ListaRetornoWeb[i].Header.Agencia + sLineBreak + 'ID_Origem=' + Boleto.ListaRetornoWeb[i].Header.Id_Origem + sLineBreak + 'Data_Hora=' +FormatDateTime('dd/mm/yyyy hh:nn:ss',Boleto.ListaRetornoWeb[i].Header.Data_Hora) + sLineBreak + 'ID_Processo=' + Boleto.ListaRetornoWeb[i].Header.Id_Processo + sLineBreak + 'DADOS' + sLineBreak + 'Excessao=' +Boleto.ListaRetornoWeb[i].DadosRet.Excecao + sLineBreak + 'CONTROLE_NEGOCIAL' + sLineBreak + 'Origem_Retorno=' + Boleto.ListaRetornoWeb[i].DadosRet.ControleNegocial.OriRetorno + sLineBreak + 'NSU=' + Boleto.ListaRetornoWeb[i].DadosRet.ControleNegocial.NSU + sLineBreak + 'Cod_Retorno=' + Boleto.ListaRetornoWeb[i].DadosRet.ControleNegocial.CodRetorno + sLineBreak + 'Msg_Retorno=' + Boleto.ListaRetornoWeb[i].DadosRet.ControleNegocial.Retorno + sLineBreak + 'COMPROVANTE' + sLineBreak + 'Data=' + FormatDateTime('dd/mm/yyyy', Boleto.ListaRetornoWeb[i].DadosRet.Comprovante.Data) + sLineBreak + 'Hora=' + Boleto.ListaRetornoWeb[i].DadosRet.Comprovante.Hora + sLineBreak + 'ID_BOLETO' + sLineBreak + 'Codigo_Barras=' + Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto.CodBarras + sLineBreak + 'Linha_Digitavel=' + Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto.LinhaDig + sLineBreak + 'Nosso_Numero=' + Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto.NossoNum + sLineBreak + 'URL=' + Boleto.ListaRetornoWeb[i].DadosRet.IDBoleto.URL + sLineBreak + 'CONSULTA_BOLETO' + sLineBreak + 'Numero_Documento=' + Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.NumeroDocumento + sLineBreak + 'Data_Vencimento=' + FormatDateTime('dd/mm/yyyy',Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.Vencimento) + sLineBreak + 'Valor=' + CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorDocumento) + sLineBreak ); if NaoEstaVazio(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras) then begin SLRemessa.Add('TITULO_RETORNO' + sLineBreak + 'vencimento_titulo=' +FormatDateTime('dd/mm/yyyy',Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.Vencimento)+ sLineBreak + 'data_processamento=' +FormatDateTime('dd/mm/yyyy',Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.DataProcessamento)+ sLineBreak + 'data_emissao=' +FormatDateTime('dd/mm/yyyy',Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.DataDocumento)+ sLineBreak + 'tipo_carteira_titulo=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.Carteira+ sLineBreak + 'nosso_numero=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.NossoNumero+ sLineBreak + 'NossoNumeroCorrespondente=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.NossoNumeroCorrespondente+ sLineBreak + 'seu_numero=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero+ sLineBreak + 'especie=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.EspecieDoc+ sLineBreak + 'codigo_barras=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras+ sLineBreak + 'numero_linha_digitavel=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.LinhaDig+ sLineBreak + 'local_pagamento=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.Mensagem.Text+ sLineBreak + 'uso_banco=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.UsoBanco+ sLineBreak + 'valor_titulo=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorDocumento)+ sLineBreak + 'valor_desconto=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorDesconto)+ sLineBreak + 'valor_outra_deducao=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorDespesaCobranca)+ sLineBreak + 'valor_juro_multa=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorMoraJuros)+ sLineBreak + 'valor_outro_acrescimo=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorOutrosCreditos)+ sLineBreak + 'valor_total_cobrado=' +CurrToStr(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.ValorPago) + sLineBreak + 'EMV (QrCode) =' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.EMV + sLineBreak + 'texto_informacao_cliente_beneficiario=' +Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.Informativo.Text ); if frdm.Filtractarec(' and Numnf||''-''||nparcela ='+Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.SeuNumero.QuotedString) > 0 Then Begin with Boleto.ListaRetornoWeb[i].DadosRet.TituloRet do begin frdm.qrctarec.Edit; frdm.qrCtarecIDCONTA.AsInteger := frdm.qrContaIDCONTA.AsInteger; frdm.qrCtarecNOSSONUMERO.AsString := NossoNumero; frdm.qrCtarecCODIGOSOLICITACAO.AsString := NossoNumeroCorrespondente; frdm.qrCtarecCODIGOBARRAS.AsString := CodBarras; frdm.qrCtarecLINHADIGITAVEL.AsString := LinhaDig; frdm.qrCtarecSTATUS_API.asstring := EstadoTituloCobranca; frdm.qrCtarecSTSBOLETO.AsString := 'T'; frdm.qrCtarecQRCODE.AsString := EMV; frdm.qrCtarecTXID.AsString := TxId; frdm.SalvaDataSet(frdm.qrctarec); end; End; end; end; SLRemessa.SaveToFile( arqRetorno+'RetornoRegistro.txt' ); finally SLRemessa.Free; end; // ShowMessage('Retorno Envio gerado em: '+ arqRetorno+'RetornoRegistro.txt' ); end; end; essa a parte que eu faço o envio .. Eu acho que é algo nesta parte if NaoEstaVazio(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras) then
  17. atualizei todas as Dll e nada .. Alguem com alguma ajuda .. ja não sei o que pode ser .. uahua
  18. é conferi .. ja estou usando a 1.1.1.10
  19. Vou conferir . mas provavelmente superior .. por que emito Nfe nesse computador. .. e esta indo certinho .. inferior da erro na NFe tb ..
  20. boa pergunta .. . qual dll é essa ??
  21. Bom dia Fiz o boleto pela API do banco inter, aqui na minha OK ... Emiti Sandbox, homologação e inclusive um em produção, foi tudo OK. Em produção na maquina do cliente envia certinho, mas não pega o retorno do banco com os dados do envio. Verificando o Log, esta correto o envio, inclusive o cliente esta entrando dentro do banco e imprimindo por la .. Agora analisando o log meu fonte pude notar uma coisa que pode ser o problema. após o envio eu faço o seguinte if NaoEstaVazio(Boleto.ListaRetornoWeb[i].DadosRet.TituloRet.CodBarras) then e ai eu atualizo o retorno no meu banco de dados .. e imprimo os boletos... so que note que não esta vindo a codbarras... Agora por que na minha mauqina vem o Codbarras e no cliente não vem ? alguem tem ideia do que estou fazendo errado . . vou anexar o log, So coloquei xxxxxxxxxxxxxxx nos cnpj do log logInter.txt
  22. Consegui resolver fazendo as consultas seguindo o post abaixo..
  23. Olá pessoal blz .. Estou com um problema na consulta do boleto do banco inter .. o Retorno é esse JSON={"title":"Falha durante a execução da request.","detail":"Verifique se os dados informados estão de acordo com a documentação disponibilizada e tente novamente","timestamp":"2025-05-28T10:19:36.518301494-03:00","violacoes":[{"razao":"Required QueryValue [dataInicial] not specified"}]} So que estou passando a data inicial .. AplicarConfiguracoesAoComponente; Boleto := FACBrBoleto; FiltrosAPI := Boleto.Configuracoes.WebService.Filtro; FiltrosAPI.Clear; FiltrosAPI.indicadorSituacao := isbNenhum; if datainicial = 0 then FiltrosAPI.dataMovimento.DataInicio := Date-1 else FiltrosAPI.dataMovimento.DataInicio := datainicial; if DataFinal = 0 then FiltrosAPI.dataMovimento.DataFinal := Date else FiltrosAPI.dataMovimento.DataFinal := DataFinal; FiltrosAPI.indiceContinuidade := 0; Boleto.Configuracoes.WebService.Operacao := tpConsulta; Boleto.Enviar; as data corretas no campo o que estou fazendo de errado ?
  24. Achei ,.... o problema é o codigo cedente .. O cliente não tinha me passado e eu usei o numero da conta .. Debugando e comparando achei o que estava divergente ..
  25. Isso que estou na procura .. O que esta errado .. estou debugando a montagem do codigo de barras .. pra ver onde esta a diferença ..
×
×
  • 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.