Ir para conteúdo
  • Cadastre-se

Painel de líderes

Conteúdo popular

Showing content with the highest reputation on 08-03-2024 em todas as áreas

  1. oi @Diego Foliene, consegui arrumar, o problema estava no declare Private Declare Function PIXCD_GerarQRCodeEstatico _ Lib "ACBrPIXCD32.dll" (ByVal AValor As Double, _ ByVal AinfoAdicional As String, _ ByVal ATxId As String, _ ByVal buffer As String, _ ByRef bufferLen As Long) As Long o retorno estava string, mudei para long, e o valor de long passei para double também precisa ajustar o tipo da variavel Avalor na função abaixo Public Function GerarQRCodeEstatico(ByVal AValor As Double, ByVal AinfoAdicional As String, ByVal ATxId As String) As String rodei e retorno o pix copia e cola obrigado, agora vou testar os outros
    4 pontos
  2. Boa tarde! Por favor, faça um teste seguindo este modelo: [ConsultarLinkNFSe] Competencia=dd/mm/yyyy DtEmissao=dd/mm/yyyy NumeroRps= NumeroNFSe= SerieNFSe= NumeroRps= SerieRps= ; Tipo ; 1 - NFSe ; 2 - RPS TipoRps= Pagina=
    2 pontos
  3. Olá @Marcos Pereda, O comando "PIXCD_GerarQRCodeEstatico" não depende das credenciais do PSP, pois não faz acesso nenhum à API... Resumidamente ele apenas desenha um QRCode com a Chave Pix. Seria como se estivesse fazendo uma transação pix manual pelo seu app do banco, informando apenas a Chave. Temos um exe do demo compilado em Lazarus através desse link:
    2 pontos
  4. Obrigado @Italo Giurizzato Junior, farei os testes .. De ante mao, vou enviar aqui o postman gerado por eles junto com o xml q foi alterado tbem teste.xml = alterado pela prefeitura 657-ger.xml = gerado pelo acbr collection - script postman da prefeitura Teste 0.xml 657-ger-nfse.xml Paranagua.postman_collection.json
    2 pontos
  5. Olá, Durante uma conversa no discord, foi solicitado a abertura de um Tópico para essa situação. Já foi aberto um #TK-5183 para implementação do mesmo, então esse Tópico serve mais como informativo. Estamos utilizando o Visual Fox Pro para consumo da LIB ACBrNFSe32.dll. ( Foi utilizado nos testes a LIB de Demo ) A situação é a seguinte, estamos com um arquivo XML onde existe um lote de NFSe dentro.(ou seja diversas NFSe dentro de um único arquivo.) Gostaríamos de utilizar o arquivo XML para ser carregado dentro da ACBr e pegar o retorno em INI ou outro formato, mas que seja único e importar em nosso sistema próprio. Foi utilizado o método NFSE_CarregarXML. Ao tentar utilizar o método de NFSE_ObterXML(0) o retorno vem o mesmo XML carregado no inicio, completo com todas as notas. Porem segundo a documentação poderíamos passar como índice, para pegar as notas separadas, mas está funcionando apenas com 0, onde vem o XML COMPLETO. Ao tentar utilizar o método NFSE_ObterIni(0) o retorno vem com os valores todos zerados, e também não aceita um índice diferente de 0 zero Estou utilizando a configuração padrão do INI, apenas modificando os seguintes parâmetros: oLIB.ConfigGravarValor("Principal", "LogNivel", "4") oLIB.ConfigGravarValor("Principal", "LogPath", "D:\TESTEACBR\Logs") oLIB.ConfigGravarValor("NFSe", "CodigoMunicipio", "5103254") oLIB.ConfigGravarValor("NFSe", "LayoutNFSe", "0" ou "1") && aqui depende do município selecionamos o layout conforme necessidade oLIB.ConfigGravarValor("NFSe", "IniServicos", "D:\TESTEACBR\ACBrNFSeXServicos.ini") oLIB.ConfigGravarValor("NFSe", "PathSchemas", "D:\TESTEACBR\Schemas\NFSe\") O arquivo selecionado para o carregamento possui essa estrutura: Obrigado
    1 ponto
  6. Sim Analisei vários manuais da balança Toledo e testei as comunicação P05, P05A e P06 somente funcionou o protocolo P05A por isso acredito que no protocolo B deveria ter essa validação wStatus2 := aResposta[9]; if TestBit(Ord(wStatus2), 3) then { Bit 3 de wStatus2 ligado = 2 casas decimais } fpDecimais := 100; Que existe no protocolo A
    1 ponto
  7. Boa tarde, Diego. Conseguimos realizar com sucesso a consulta seguindo o modelo INI que você enviou. Muito obrigado!
    1 ponto
  8. Obrigado, atualizei os fontes e rodou sem travar, porém ainda não consegui acertar o ini para usar em PIXCD_CriarCobranca, vou continuar tentando, caso não consiga abro um outro tópico.
    1 ponto
  9. Boa tarde @Luiz Carlos de Lima, O programa exemplo tem um botão para o ConsultaCadastro. Por favor faça um teste com o programa exemplo e veja se ocorre o mesmo erro.
    1 ponto
  10. Não baixa essa unit, eu acabei pegando campo errado, e o cliente disse que pelo fast esta faltando algumas informações, e Fortes, ficou grande e sempre da duas páginas
    1 ponto
  11. Obrigado , com o exe deu certinho a geraçao do pix, quer dizer que nao tenho problema com os certificados
    1 ponto
  12. Correção na leitura do json ACBrSchemasMatera.pas
    1 ponto
  13. por nada, seguem os arquivos que alterei caso queiram subir ao svn, pelo que vi todos os declares estavam retornando string, onde o correto é long Estou testando agora o PIXCD_CriarCobranca com o ini anexo, mas da erro -10, erro no ini, sem detalhar qual é o problema do ini, eu entrei na documentação https://acbr.sourceforge.io/ACBrLib/ACBrLibPIXCD.html, e aqui tem exemplos de inis ( onde peguei o ini de exemplo como base para criar o meu ) , mas não tem uma documentação completa, onde posso encontrar a documentação atualizada ? grato Marcos FrmMain.frm FrmMain.frx ACBrPIXCD.cls incluir.ini
    1 ponto
  14. Obrigado @Diego Foliene, eu basicamente peguei o exemplo do svn disponibilizadop pelo @antonio.carlos e rodei a linha em questão é esta e estão sendo passados os valores normalmente : retorno = PIXCD_GerarQRCodeEstatico(AValor, AinfoAdicional, ATxId, buffer, bufferLen) coloquei para catpurar o erro e a mensagem que retorna agora é esta desde já agradeço, Marcos
    1 ponto
  15. Já encaminhei um e-mail sobre essa situação a prefeitura e estou aguardando um retorno e comunico por aqui.
    1 ponto
  16. Bom Dia Senhores, Entrei em contato com o suporte da Toledo Balanças Brasil atrás de mais informações, porque a balança é antiga e não encontrei manual. Segundo o suporte a balança que tenho aqui é uma Toledo 9098 Modelo 2098/61 nem mesmo eles não tem manual da referida balança. Então para resolver o meu problema desenvolvi a comunicação da balança, segue em anexo o arquivo. ACBrBALToledo2098.pas
    1 ponto
  17. Bom dia, Grato pela ajuda, fechando chamado.
    1 ponto
  18. Bom dia @Paulo Alexandre Hostert, O componente estava usando o valor do campo ValorTotal para gerar o conteúdo da tag valor_tributavel que não é o correto. Foi feito as seguintes alterações: 1. Criação do campo ValorTributavel dentro da classe que contem os campos dos itens de serviço; 2. Alterado tanto na escrita quanto na leitura do XML da nota o campo de ValorTotal para ValorTributavel. Comparando os 2 XMLs noto o seguinte: XML antes da alteração <situacao_tributaria>0</situacao_tributaria> <valor_tributavel>4375,00</valor_tributavel> XML após a alteração <situacao_tributaria>0</situacao_tributaria> O valor 4375 foi informado no campo ValorTotal, informe agora no campo ValorTributavel. antes: Servico.ItemServico[I].ValorTotal := 4375; agora: Servico.ItemServico[I].ValorTributavel := 4375; Abaixo o Link do tópico que originou essa alteração:
    1 ponto
  19. Segue unit, mas a única alteração foi comentar a linha //rlmDescricao.SecondHolder := nil; ACBrNFeDANFeRLPaisagem.pas
    1 ponto
  20. a cada 300 milesimos ele deixa enviar o comando de abertura a gaveta
    1 ponto
  21. No SVN At revision: 32824 havia uma alteração que creio estar errado a mais em seu arquivo que não incluir que era o tamanho do campo cBPe
    1 ponto
  22. 1 ponto
  23. No manual tem o passo a passo para gerar o certificado, se caso não tiver volta na primeira pagina que tem os anexos.
    1 ponto
  24. O banco fornece um certificado para acessar a conta! Dá uma olhada nesse link: https://banco.bradesco/html/pessoajuridica/net-empresa/como-acessar-conta/certificado-digital.shtm
    1 ponto
  25. veja fala que é do banco então eles tem algum manual para gerar o certificado com eles. igual o banco itau
    1 ponto
  26. 1 ponto
  27. Os FDICs são Fundos de Investimento em Direitos Creditórios (também conhecido simplesmente pela sigla FIDC ) constituindo-se em veículo de securitização de recebíveis e um tipo de fundo de investimento caracterizado pela aquisição de direitos creditórios (Wikipedia). Dessa forma e sendo esses créditos fiduciários, cujo valor depende somente da confiança a ele dispensada, tais recebíveis devem ser lastreados em transações fiáveis, que podem ser comprovadas através de documentos legalmente aceitos para aquele tipo de transação, como por exemplo uma nota fiscal, no caso de uma transação mercantil. No caso em questão IMAGINO que se trate de uma transação ao estilo "factoring". Através da chave da NFe o FDIC consulta se o cedente confere, se o sacado confere e se o valor da transação confere, aprovando "on-line" a operação ... pura especulação da minha parte...
    1 ponto
  28. @sicnet, A unit que lhe passei já foi enviada para o SVN.
    1 ponto
  29. Boa tarde. Consegui resolver usando o seguinte código.. if ACBrTEFAPI1.Modelo = tefApiCliSiTEF then begin ACBrTEFAPI1.EfetuarAdministrativa('131', IntToStr(Venda.NumOperacao)); ACBrTEFAPI1.FinalizarTransacao(tefstsErroEnergia); end;
    1 ponto
  30. Boa tarde! Acho que consegui algo. Consegui reproduzir o teste do inicio do post sem que ocorra vazamento de memória na leitura do certificado. Mas antes de prosseguir volto ao post anterior, onde é mencionado uma solução com o método sk_X509_pop_free, ele até existe no arquivo ssl_openssl.pas, mas é inócuo, já que o método não existe na DLL. "_SkX509PopFree := GetProcAddr(SSLUtilHandle, 'SK_X509_POP_FREE');" sempre retorna nulo. A solução que encontrei foi uma comparação dos arquivos ssl_openssl.pas e ACBrDFeOpenSSL.pas. Comparei os métodos TSSLOpenSSL.LoadPFX e TDFeOpenSSL.LerPFXInfo e peguei trechos de código de um e adicionei ao outro. Código comparados: Código da classe: ssl_openssl.TSSLOpenSSL function TSSLOpenSSL.LoadPFX(pfxdata: Ansistring): Boolean; var cert, pkey, ca: SslPtr; b: PBIO; p12: SslPtr; begin Result := False; b := BioNew(BioSMem); try BioWrite(b, pfxdata, Length(PfxData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try cert := nil; pkey := nil; ca := nil; try {pf} if PKCS12parse(p12, FKeyPassword, pkey, cert, ca) > 0 then if SSLCTXusecertificate(Fctx, cert) > 0 then if SSLCTXusePrivateKey(Fctx, pkey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); {pf} finally EvpPkeyFree(pkey); X509free(cert); SkX509PopFree(ca,_X509Free); // for ca=nil a new STACK was allocated... end; {/pf} finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Código da classe ACBrDFeOpenSSL.TDFeOpenSSL: function TDFeOpenSSL.LerPFXInfo(const PFXData: Ansistring): Boolean; var ca, p12: Pointer; b: PBIO; begin Result := False; DestroyKey; b := BioNew(BioSMem); try BioWrite(b, PFXData, Length(PFXData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try DestroyCert; DestroyKey; ca := nil; if PKCS12parse(p12, FpDFeSSL.Senha, FPrivKey, FCert, ca) > 0 then begin if (FCert <> nil) then begin GetCertInfo( FCert ); Result := True; end; end; finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Basicamente o que encontrei diferente foi o código, que passei para ACBrDFeOpenSSL : if SSLCTXusecertificate(Fctx, Fcert) > 0 then if SSLCTXusePrivateKey(Fctx, FPrivKey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); A modificação Final ficou assim: TDFeOpenSSL = class(TDFeSSLCryptClass) private .... Fctx: PSSL_CTX; // Adicionado proteced ... procedure FreeContext; // Adicionado end; constructor TDFeOpenSSL.Create(ADFeSSL: TDFeSSL); begin inherited Create(ADFeSSL); ... Fctx := nil; // Adicionado end; destructor TDFeOpenSSL.Destroy; begin ... FreeContext; // Adicionado inherited Destroy; end; procedure TDFeOpenSSL.FreeContext; // Adicionado begin if assigned (Fctx) then begin SslCtxFree(Fctx); Fctx := nil; ErrRemoveState(0); end; end; function TDFeOpenSSL.LerPFXInfo(const PFXData: Ansistring): Boolean; procedure SetContex; // Adicionado begin FreeContext; Fctx := nil; case FpDFeSSL.SSLType of LT_SSLv2: Fctx := SslCtxNew(SslMethodV2); LT_SSLv3: Fctx := SslCtxNew(SslMethodV3); LT_TLSv1: Fctx := SslCtxNew(SslMethodTLSV1); LT_TLSv1_1: Fctx := SslCtxNew(SslMethodTLSV1_1); LT_TLSv1_2: Fctx := SslCtxNew(SslMethodTLSV1_2); LT_TLSv1_3: Fctx := SslCtxNew(SslMethodTLSV1_3); LT_all: begin //try new call for OpenSSL 1.1.0 first Fctx := SslCtxNew(SslTLSMethod); if Fctx=nil then //callback to previous versions Fctx := SslCtxNew(SslMethodV23); end; else Exit; end; end; var ca, p12: Pointer; b: PBIO; begin Result := False; DestroyKey; SetContex; // Adicionado b := BioNew(BioSMem); try BioWrite(b, PFXData, Length(PFXData)); p12 := d2iPKCS12bio(b, nil); if not Assigned(p12) then Exit; try DestroyCert; DestroyKey; ca := nil; if PKCS12parse(p12, FpDFeSSL.Senha, FPrivKey, FCert, ca) > 0 then begin // Adicionado Inicio ================================================= if SSLCTXusecertificate(Fctx, Fcert) > 0 then if SSLCTXusePrivateKey(Fctx, FPrivKey) > 0 then Result := True; // Set Certificate Verification chain if Result and (ca <> nil) then SslCtxCtrl(Fctx, SSL_CTRL_CHAIN, 0, ca); // Adicionado Fim ==================================================== if (FCert <> nil) then begin GetCertInfo( FCert ); Result := True; end; end; finally PKCS12free(p12); end; finally BioFreeAll(b); end; end; Depois dessa modificação o memoryleak parou de acontecer. Não sei o que esses métodos fazem, mas me parece que ele cria um vinculação da Variável "ca" com Fctx e quando o método FreeContex finaliza Fctx ele também deve estar eliminando os objetos apontados por "ca". Li na documentação de PKCS12parse que quando é passado "ca" como null ele cria um objeto internamente. Talvez seja isso.
    1 ponto
  31. Boa tarde, abri minha conta PJ do Itaú e minha gerente conseguiu liberar a API de emissão de boleto na minha conta, estou aguardando o e-mail do suporte técnico onde eles solicita as informações necessarios para iniciar o processo de homologação...com dé em DEUS agora vou conseguir. A quase 1 ano atras tentei e não consegui...expliquei a situação para o meu cliente ai ele mandou eu CANCELAR o processo, mais agora eu consegui entender o processo todo no site do developers. Também tava usando a conta do cliente, não tinha muito acesso, mais agora minha propria conta PJ vai ser mais facíl. Na minha suite de boletos falta só itáu....rsrs Emissão de Boleto via API em produção no meu sistema 1 - Banco do Brasil 2 - Caixa Econimica 3 - Bradesco 4 - Santander 5 - Sicredi 6 - Sicoob 7 - Banco Inter 8 - Cooperativa Alios (Varias Cooperativas) 9 - Banco Banrisul 10 - Itaú (Em desenvolvimento)
    1 ponto
  32. Você tem o arquivo XML *-dist-dfe.xml gravado? Se sim, pode fazer assim: uses pcnRetDistDFeInt; ... var ret: TRetDistDFeInt; I: Integer; begin ret := TretDistDFeInt.Create('NFe'); try ret.LerXMLFromFile(nomeArq); for I := 0 to ret.docZip.Count - 1 do begin ANSU := ret.docZip[I].NSU; AXML := ret.docZip[I].XML; end; finally ret.Free; end;
    1 ponto
×
×
  • 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.