-
Total de ítens
78 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Filippe Maymone postou
-
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
-
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
-
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
-
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 ..
-
Rejeição: falha no schema xml do lote de NFe
um tópico no fórum postou Filippe Maymone NFC-e - Nota Fiscal do Consumidor Eletrônica
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 .. -
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,
-
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...
-
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
-
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
esta gerando o PIX dinâmico ?? eu não uso essa parte de pix dinamico .. -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
@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'; -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
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... -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
é 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 -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
@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... -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
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 .. . -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
@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 ... -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
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 -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
atualizei todas as Dll e nada .. Alguem com alguma ajuda .. ja não sei o que pode ser .. uahua -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
é conferi .. ja estou usando a 1.1.1.10 -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
Vou conferir . mas provavelmente superior .. por que emito Nfe nesse computador. .. e esta indo certinho .. inferior da erro na NFe tb .. -
Boleto API inter Retorno (Produção)
Filippe Maymone replied to Filippe Maymone's tópico in ACBrBoleto
boa pergunta .. . qual dll é essa ?? -
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
-
Consegui resolver fazendo as consultas seguindo o post abaixo..
-
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 ?
-
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 ..
-
Isso que estou na procura .. O que esta errado .. estou debugando a montagem do codigo de barras .. pra ver onde esta a diferença ..
