
marciamagall
Membros-
Total de ítens
43 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
marciamagall's Achievements
-
Existe o banco 197 - Stone configurado para impressão de boletos?
marciamagall replied to marciamagall's tópico in ACBrBoleto
Juliomar, bom dia. Mas como foi impresso utilizando o acbr, um boleto do banco stone, com logo e tudo? Eu também procurei e não encontrei nada nos fontes. Boleto.pdf -
Existe o banco 197 - Stone configurado para impressão de boletos?
um tópico no fórum postou marciamagall ACBrBoleto
Bom dia, É possível utilizar o banco 197 Stone na impressão de boletos hoje pelo componente ACBr? Não sei o que houve, mas aconteceu de imprimir um boleto com banco errado, e estou procurando nos fontes do acbr e não estou encontrando o banco 197. -
Ele volta sim, peguei a parte do log que retorna o valor correto pago com multa: 30/05/25 10:59:06:800 - Retorno Envio: TBoletoW_Santander_API 30/05/25 10:59:06:800 - C digo do Envio: 200 1.1 OK 30/05/25 10:59:06:801 - Retorno Envio: {"_pageable":{"_moreElements":false},"_content":[{"returnCode":"000 - Consulta realizada com sucesso","documentNumber":"05441657000108","beneficiaryCode":45485,"bankNumber":15290,"clientNumber":"00478162A","dueDate":"2025-05-20","nominalValue":483.01,"issueDate":"2025-04-22","participantCode":"","status":"Baixado","statusComplement":"Via Pagamento Pix","interestValue":0.00,"discountValue":0.00,"deductionValue":0.00,"paidValue":492.83}]}
-
Dúvida sobre método LerRetorno do Santander CnabAPi com boleto pago com pix
um tópico no fórum postou marciamagall ACBrBoleto
Boa tarde. Estou com uma dúvida no método LerRetorno da unit ACBrBoletoRet_Santander_API. Estou testando boletos pagos com MULTA, onde o valor pago é maior que o valor original do boleto. Nos testes com boletos pagos pelo código de barras, o retorno é processado corretamente e o valor pago vem correto. Nos boletos pagos com o qrcode, via pix, o valor pago, quando existe a multa, volta com o valor original do boleto, e não vem o valor pago com multa. Vou colocar um pedaço do json de retorno como exemplo. { "_pageable": { "_moreElements": false }, "_content": [ { "returnCode": "000 - Consulta realizada com sucesso", "documentNumber": "05441657000108", "beneficiaryCode": 45485, "bankNumber": 15290, "clientNumber": "00478162A", "dueDate": "2025-05-20", "nominalValue": 483.01, "issueDate": "2025-04-22", "participantCode": "", "status": "Baixado", "statusComplement": "Via Pagamento Pix", "interestValue": 0.0, "discountValue": 0.0, "deductionValue": 0.0, "paidValue": 492.83 } ] }, Essa é a parte que volta o valor com multa e esse bloco não está sendo lido na function LerRetorno. Abaixo a parte do código de deveria ser corretamente o paidValue mas não está lendo: ( debugando o LExisteBankSlip é true, e o nindiceobj fica com o valor 1, que é exatamente esse bloco acima q coloquei do json, mas o paidvalue está dentro de um _content e isso não está no bloco de código . if LExisteBankSlip then nIndiceOBJ := strtoint(IfThen(LTotalObjetos>1,'1','0')) else nIndiceOBJ := 0; LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ]; if nIndiceOBJ = 0 then begin ARetornoWS.DadosRet.TituloRet.NossoNumero := LJSONObject.AsString['bankNumber']; ARetornoWS.DadosRet.TituloRet.SeuNumero := LJSONObject.AsString['clientNumber']; if ARetornoWS.DadosRet.TituloRet.Vencimento = 0 then ARetornoWS.DadosRet.TituloRet.Vencimento := StringToDateTimeDef(LJSONObject.AsString['dueDate'], 0, 'yyyy-mm-dd'); if ARetornoWS.DadosRet.TituloRet.DataDocumento = 0 then ARetornoWS.DadosRet.TituloRet.DataDocumento := StringToDateTimeDef(LJSONObject.AsString['issueDate'], 0, 'yyyy-mm-dd'); if ARetornoWS.DadosRet.TituloRet.ValorDocumento = 0 then ARetornoWS.DadosRet.TituloRet.ValorDocumento := LJSONObject.AsFloat['nominalValue']; if NaoEstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']); end; if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']); ARetornoWS.DadosRet.TituloRet.ValorDesconto := LJSONObject.AsFloat['discountValue']; ARetornoWS.DadosRet.TituloRet.ValorPago := LJSONObject.AsFloat['paidValue']; ARetornoWS.DadosRet.TituloRet.ValorMoraJuros := LJSONObject.AsFloat['interestValue']; ARetornoWS.DadosRet.TituloRet.ValorAbatimento := LJSONObject.AsFloat['deductionValue']; No caso do boleto pago com codigo de barras, o valor está em outra parte do json e a função busca corretamente. A leitura do valor pago está nesse bloco abaixo para o boleto pago com código de barras: //settlementData consulta para pegar data do pagamento if (LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].Count > 0) then begin if LJsonArray.ItemAsJSONObject[nIndiceOBJ].ValueExists('settlementData') then begin LJSONObject := LJsonArray.ItemAsJSONObject[nIndiceOBJ].AsJSONArray['settlementData'].ItemAsJSONObject[0]; if ARetornoWS.DadosRet.TituloRet.DataCredito = 0 then ARetornoWS.DadosRet.TituloRet.DataCredito := StringToDateTimeDef(LJSONObject.AsString['settlementCreditDate'], 0, 'yyyy-mm-dd'); if ARetornoWS.DadosRet.TituloRet.DataMovimento = 0 then ARetornoWS.DadosRet.TituloRet.DataMovimento := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd'); if ARetornoWS.DadosRet.TituloRet.DataBaixa = 0 then ARetornoWS.DadosRet.TituloRet.DataBaixa := StringToDateTimeDef(LJSONObject.AsString['settlementDate'], 0, 'yyyy-mm-dd'); ARetornoWS.DadosRet.TituloRet.ValorPago := LJSONObject.AsCurrency['settlementCreditedValue']; if EstaVazio(ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca) then ARetornoWS.DadosRet.TituloRet.CodigoEstadoTituloCobranca := RetornaCodigoOcorrencia(LJSONObject.AsString['status']); if EstaVazio(ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca) then ARetornoWS.DadosRet.TituloRet.EstadoTituloCobranca := LJSONObject.AsString['status']; ARetornoWS.DadosRet.TituloRet.ValorTarifa := LJSONObject.AsFloat['settlementDutyValue']; end; end; Preciso de uma ajuda, alguém já passou por isso? -
Boa tarde, ok Juliomar, vou fazer isso. Obrigada!
-
Existe uma forma de imprimir um boleto itau sem o qrCode? Eu enviei o boleto via api, e quero imprimir sem o qrcode, pois por enquanto não vou querer que os clientes façam o pagamento utilizando o qrcode. Tentei limpar o emv, url e txId mas o componente não deixa limpar. Mesmo limpando as propriedades, elas voltam. Tentei mudar o layout para lPadrao mas também é impresso o qrcode. Tentei alterar o ACBrBoleto.Cedente.CedenteWS.IndicadorPix para False, somente na hora de imprimir e também não deu certo. Vou explicar pq ainda não quero que paguem utilizando o qrcode. Na consulta do boleto (view=specific), os dados (pagamentos_cobranca) não são retornados. Somente os pagamentos via código de barras retornam o valor pago, valor da multa, e data do pagamento. Se eu conseguir imprimir o boleto sem o qrcode seria melhor.
-
Juliomar, bom dia. Desculpe a demora pelo retorno, mas eu precisei aguardar pra atualizar o acbr. Agora que atualizei e testei novamente, continuo com o mesmo problema. A única forma de resolver o erro que estou tendo, foi mexendo na unidade ACBrBoleto.pas. A alteração que eu fiz foi a seguinte: procedure TACBrWebService.SetCertificado(const Value: AnsiString); begin FCertificado := Value; if Value<>'' then //adicionado if FArquivoCRT := EmptyStr; end; procedure TACBrWebService.SetChavePrivada(const Value: AnsiString); begin FChavePrivada := Value; if Value<>'' then //adicionado if FArquivoKEY := EmptyStr; end; Feito isso, o boleto pix é enviado normalmente sem erros.
-
Bom dia. Estou fazendo exatamente igual o que está nesse link enviado. Essa parte que perde o conteúdo dos arquivos key e crt ocorre debugando dentro do fonte do acbr. Vou colocar dois prints para melhor entendimento. No meu entendimento, nem teria lógica setar as propriedades ArquivoCRT e ArquivoKEY, sabendo que nas linhas abaixo elas serão obrigatoriamente limpas, não é? Isso dentro do método DefinirCertificado.
-
Não estou usando PIX, é um boleto com qrcode. (bolecode) Eu acredito que preenchi no componente somente o que é necessário. Sempre preciso enviar os arquivos .key e o .crt em todos os envios de boleto do banco itaú. Mas nesse ponto do código que passei, ele limpa os arquivos. Isso porque: procedure TACBrWebService.SetChavePrivada(const Value: AnsiString); begin FChavePrivada := Value; FArquivoKEY := EmptyStr; end;
-
Bom dia. Estou com uma dúvida nessa parte do fonte do ACBR. { TBoletoWSREST } procedure TBoletoWSREST.DefinirCertificado; begin BoletoWS.ArquivoCRT := Boleto.Configuracoes.WebService.ArquivoCRT; BoletoWS.ArquivoKEY := Boleto.Configuracoes.WebService.ArquivoKEY; BoletoWS.ChavePrivada := Boleto.Configuracoes.WebService.ChavePrivada; BoletoWS.Certificado := Boleto.Configuracoes.WebService.Certificado; Estou tentando registrar um bolecode no banco itaú, e passei os arquivos CRT e KEY. Consigo pegar o acess_token normalmente, mas quando vou enviar o boleto, passa por esse código acima, e a ChavePrivada e Certificado estão vazios. Ao passar por essas linhas, o ArquivoCRT, e ArquivoKey ficam limpos, pois no set dessas propriedades, obrigatoriamente limpa o ArquivoCRT e ArquivoKey. Como sempre vai passar por essas linhas, é inútil eu setar o arquivoCRT e ArquivoKey pois elas estão sendo apagadas no set da ChavePrivada e Certificado. O que estou fazendo de errado? Porque preciso enviar o ArquivoCRT e ArquivoKey no envio do bolecode.
-
Bom dia. Descobri porque dava o erro "Falha Envio: "CarregarCertificadoDeNumeroSerie" não suportado em: TDFeSSLCryptClass" ao tentar enviar o boleto para o banco Credisis. Tem que setar a propriedade ABoleto.Configuracoes.WebService.UseCertificateHTTP para False. Fazendo isso, o certificado não é mais solicitado. Obrigada!
-
Tem o banco sim, só não sei como implementar. Vi que existe o exemplo dos outros bancos, mas do credisis não achei. Não sei porque está pedindo o arquivo PFX. Talvez alguma propriedade do componente que não alimentei.
-
Juliomar, boa tarde. Tanto nesse link, que eu já tinha visto, como também no arquivo configWebService.txt que está na pasta do exemplo ACBr, não tem sobre o banco credisis.
-
Bom dia! Gostaria de saber se alguém tem alguma configuração exemplo do componente ACBrBoleto para o envio via api do cnab para o banco Credisis. Precisa parametrizar as propriedades do arquivo PFX? Fiz a programação para o banco do brasil e não necessitou do certificado. Estou tendo o retorno: "Falha Envio: DadosPFX, ArquivoPFX, URLPFX ou NumeroSerie não especificados !" Tentei enviar só o Numero de Série e não funcionou, deu esse outro erro: "Falha Envio: "CarregarCertificadoDeNumeroSerie" não suportado em: TDFeSSLCryptClass". Obrigada!