Boa tarde Amigo,
como na conversa anterior estou implementando a NFSe Paulistana no Acbr, já estou realizando o envio de Lote e tratando os erros retornados, tudo dentro do padrão Acbr.
Como todos sabem existe uma TAG <Assinatura> na NFSe Paulistana que o Delphi não assina correto, ou seja muitos programadores usaram DLL feita em C#, visitei diversos fóruns solicitando a DLL para fazer a tal assinatura, mais nunca ninguém me ajudou.
Então tive que aprender C# na raça, e então desenvolvi a tão sonhada DLL que faz a assinatura.
Quando toda a rotina estiver implementada foi enviar os fontes para os moderadores verificar e subir.
A DLL com o tbl esta em anexo, vou mostrar também como realizar a assinatura :
Dentro da Unit AcbrNFSeUtil adicione a função :
class function NotaUtil.AssinaturaProdam( Assinatura, NumSerial : String ) : String;
var
Store : IStore3;
Certs : ICertificates2;
Certs2 : ICertificates2;
Cert : ICertificate2;
AssinarRPSSP : TAssinaturaRPS;
begin
Result := '';
Store := CoStore.Create;
Store.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_STORE_NAME, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
Certs := Store.Certificates as ICertificates2;
Certs2 := Certs.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', false);
if not(Certs2.Count = 0)
then begin
Cert := IInterface(Certs2.Item[1]) as ICertificate2;
AssinarRPSSP := TAssinaturaRPS.Create(nil);
Assinatura := AssinarRPSSP.AssinarRPS(Assinatura,UpperCase(Cert.SerialNumber));
Assinatura := StringReplace( Assinatura, #10, '', [rfReplaceAll] );
Assinatura := StringReplace( Assinatura, #13, '', [rfReplaceAll] );
Result := Assinatura;
//FDataVenc := Cert.ValidToDate;
//FInformacao := Cert.SubjectName
end;
end;
Na pasta do executável você coloca a DLL e registra com o regasm.exe : pelo prompt do DOS (como administrador) execute : "RegAsm AssinaturaRPS_SP.DLL"
Para importar o arquivo AssinaturaRPS_SP.tbl faça o seguinte :
No Delphi vai em : Project -> Import Type Library -> Add ( AssinaturaRPS_SP.tbl )
Não se esqueça de adicionar a unit "AssinaturaRPS_SP_TLB" em USES.
Abraços.
AssinaturaRPS_Sp.rar