Jump to content

Ler dados do Cartão de Cidadão


Futre

Recommended Posts

Boa tarde.

Sei que já existem alguns tópicos com este assunto mas estou um pouco (muito) confuso.

Estou a desenvolver uma aplicação que terá de ter acesso à Autenticação do Cartão de Cidadão.

Já tenho o middleware instalado.

Inicialmente estava a tentar usar a eidpt.dll, mas dava-me erro de dependências.

Usando a pteidlib_dotnet.dll está a dar o erro "PTEID Error Code : 9" a fazer eidpt.Pteid.GetID().

Alguém me pode dar uma ajuda?

Obrigado.

Link to comment
Share on other sites

  • 2 months later...

Já procurei nesses sites mas a informação que existe é datada. Vou expor o meu problema com código para que talvez seja mais fácil perceber a quem vê de fora.

Linguagem: C#

Framework: .NET 4

Sistema Operativo: Windows 10 x64

Build: 32bits

Classe de leitura do cartão (criei apenas para prova de conceito)


class CCReader
{
public void GetInfoFromCard()
{
var citizen = new Citizen();

try
{

EIDPT.Init("");
EIDPT.SetSODChecking(false);

var id = EIDPT.GetID();
var picture = EIDPT.GetPicture();
var ms = new MemoryStream(picture.Bytes, 0, picture.BytesLength, false);
//var image = CSJ2K.J2kImage.FromStream(ms);
//image.Save(@"fotos\" + id.NIF + ".jpeg");
ms.Close();

citizen.FirstName = id.FirstName;
citizen.LastName = id.Name;
citizen.FirstNameFather = id.FirstNameFather;
citizen.LastNameFather = id.NameFather;
citizen.FirstNameMother = id.FirstNameMother;
citizen.LastNameMother = id.NameMother;
//citizen.Name = Classes.Methods.UppercaseFirstLetter(id.FirstName) + " " + Classes.Methods.UppercaseFirstLetter(id.Name);
citizen.Sex = id.Sex;
citizen.Birthday = id.BirthDate;
citizen.ID = id.BI;
citizen.FatherName = id.FirstNameFather + " " + id.NameFather;
citizen.MotherName = id.FirstNameMother + " " + id.NameMother;
citizen.TaxNumber = id.NIF;
citizen.SocialSecurity = id.NSS;
//citizen.Photo = image;

// address
var address = EIDPT.GetAddress();
citizen.District = address.DistrictDescription;
citizen.Municipality = address.MunicipalityDescription;
citizen.CivilParish = address.FreguesiaDescription;
citizen.Address = address.StreetType + " " + address.Street + " Nº " + address.Door;
citizen.Locality = address.Locality;
citizen.Zip = address.CP4 + "-" + address.CP3 + " " + address.Postal;

EIDPT.Exit(ExitMode.LEAVE_CARD);
}
catch (Exception ex)
{
Console.WriteLine("Error reading data: " + ex.Message);
}
}
}

class Citizen
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FirstNameFather { get; set; }
public string LastNameFather { get; set; }
public string FirstNameMother { get; set; }
public string LastNameMother { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public string Birthday { get; set; }
public string ID { get; set; }
public string FatherName { get; set; }
public string MotherName { get; set; }
public string TaxNumber { get; set; }
public string SocialSecurity { get; set; }
public string Photo { get; set; }

// address
public string District { get; set; }
public string Municipality { get; set; }
public string CivilParish { get; set; }
public string Address { get; set; }
public string Locality { get; set; }
public string Zip { get; set; }
}

AS dependências que adicionei ao projecto são:

eidpt.dll (fonte)

pteidlib_dotnet.dll (fonte)

O programa compila, mas ao arrancar obtenho este erro:

Não foi possível carregar o ficheiro ou assemblagem 'eidpt.dll' ou uma das respectivas dependências. Impossível localizar o módulo especificado.

Por sugestão de alguns comentários (inclusive neste forum) fiz download da ferramenta depends.exe e analisei o ficheiro eidpt.dll. O resultado foi uma serie de libs em falta para a lib referenciada pteidlib_dotnet.dll:

MSVCR120.DLL

KERNEL32.DLL

MSVCP120.DLL

MSCOREE.DLL

Alguém tem ideia de como meter o meu programa básico a correr? É preciso mais alguma lib específica?

Edited by rmpt
Link to comment
Share on other sites

Ninguém responde nem reage, mas vou deixar a minha solução para o problema, já que afinal de contas é muito simples e poderá ser util para alguém no futuro...

Tecnologia: C#

SO: Windows 10

Versão .NET: 4

Còdigo fonte: aqui

Fontes: kitcc, svn.gov.pt, cartaodecidadao.pt

Para o desenvolvimento da minha aplicação estava a usar a DLL de instalação do middleware: pteidlib_dotnet.dll

Acontece que existem 2 instalações da mesma coisa, em sites diferentes... A que usei em primeiro lugar foi do svn.gov.pt. A aplicação instalada funciona bem, mas ao usar a dll em causa dá erro pois está desactualizada! Desinstalei o que tinha feito download de svn.gov.pt e instalei o middleware que se encontra em cartaodecidadao.pt e funcionou à primeira.

Ou seja, façam download de cartaodecidadao.pt e usem a dll pteidlib_dotnet.dll que é instalada em C:\Windows\System32.

Agora um desabafo: acho vergonhoso que não exista o raio de uma página onde estejam os conteúdos e passos necessários. A informação está em 3 páginas diferentes, com links mortos, documentos antigos e software desactualizado. Acho que não custava muito criar uma página única que fosse actualizada com passos simples tipo:

  1. Faça download da dll X
  2. Faça download do projecto de exemplo Y
  3. Referencie a dll no seu projecto
  4. Corra

Uma pessoa tem de andar à cabeçada e inventar soluções no meio de informação datada e dispersa e tem de deduzir conclusões para uma coisa que é modernização do país.

#Fim de desabafo

Espero que isto ajude alguém no futuro

Edited by rmpt
Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Olá, eu continuo com o problema...

SO é windows 8.1 Pro a 64 bit

.net framework 4.0 (tenho até à 4.6.1 instalado mas na aplicação estou a usar a 4)

Fonte aqui (código de vb.net) adaptada mas é basicamente o mesmo, retirei os controlos aos cartões e adicionei umas funções directas que abrem a ligação ao leitor trazem o nome/nif/... e fecham a ligação - algo muito simples.

Se adicionar um módulo à classe e as chamar dentro da mesma aplicação tudo corre bem. mas se gravar a classe como DLL e a referenciar noutra aplicação tenho um problema:

Citação

An unhandled exception of type 'System.IO.FileLoadException' occurred in testedll.exe

Additional information: Não foi possível carregar o ficheiro ou assemblagem 'pteidlib_dotnet, Version=1.0.5946.33561, Culture=neutral, PublicKeyToken=null' ou uma das respectivas dependências. É necessário uma assemblagem com nome seguro. (Excepção de HRESULT: 0x80131044)

A minha dll está a funcionar porque o retorno é a string de excepção que tenho no código mas ao tentar usar a função scCinit() (que usa a pteidlib_dotnet) tenho logo problemas

Alguém sabe como resolver isto? sou eu que estou a tentar inventar a roda?

Muito obrigada

Carla Faria

Link to comment
Share on other sites

  • 10 months later...
  • 3 years later...

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

Link to comment
Share on other sites

  • 2 months later...
Em 22/05/2020 às 12:30, mamf disse:

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

Boa tarde,

 

Alguém chegou a encontrar solução para este erro?

Obrigado

Link to comment
Share on other sites

  • 1 year later...
Em 22/05/2020 às 12:30, mamf disse:

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

Boa tarde, estou com o mesmo erro, alguém já desbloqueou .?..

Link to comment
Share on other sites

  • 6 months later...

Bom dia a todos,

Estou a tentar arranjar forma de ler os dados de cartão de cidadão (morada, nif, cc, foto) através de um browser usando o PHP. Já pesquisei neste forum e no Google e encontro algumas coisas mas acabo por não conseguir encaixar tudo e criar uma solução que funcione.

Alguém já tentou e conseguiu fazer isso e pode-me ajudar? Eu pago o serviço a quem me ajudar ou me fizer isso, neste caso enviem MP.

Obrigado e melhores cumprs,

Link to comment
Share on other sites

  • 10 months later...
Em 14/04/2022 às 10:10, Filipe Csota disse:

Bom dia a todos,

Estou a tentar arranjar forma de ler os dados de cartão de cidadão (morada, nif, cc, foto) através de um browser usando o PHP. Já pesquisei neste forum e no Google e encontro algumas coisas mas acabo por não conseguir encaixar tudo e criar uma solução que funcione.

Alguém já tentou e conseguiu fazer isso e pode-me ajudar? Eu pago o serviço a quem me ajudar ou me fizer isso, neste caso enviem MP.

Obrigado e melhores cumprs,

Olá,

se ainda for a tempo, experimenta esta: https://github.com/rmpt/citizen-card-reader/releases

Faz exatamente o que descreveste.

Edited by rmpt
Link to comment
Share on other sites

  • 1 month later...
  • 1 year later...

Olá viva,

estou a tentar utilizar o plugin oficial Autenticao.gov com objectivo de extrair os dados do Cartão do Cidadão incluindo a morada.

O repositório não ajuda muito, alguém sabe se é possível utilizar o plugin para extrair os dados ?

A ferramenta de diagnóstico do plugin em http://127.0.0.1:35153/network indica que o plugin é no fundo um web server mas não encontro API.

Obrigado e cumprimentos

R.

Link to comment
Share on other sites

On 7/5/2024 at 6:16 AM, Roedor said:

Olá viva,

estou a tentar utilizar o plugin oficial Autenticao.gov com objectivo de extrair os dados do Cartão do Cidadão incluindo a morada.

O repositório não ajuda muito, alguém sabe se é possível utilizar o plugin para extrair os dados ?

A ferramenta de diagnóstico do plugin em http://127.0.0.1:35153/network indica que o plugin é no fundo um web server mas não encontro API.

Obrigado e cumprimentos

R.

Tentei contactar a AMA para ver se esclarecem. Enviaram documentação mas penso que não é o que estou a tentar obter com o Plugin.

Alguém usa o Plugin Autenticação.Gov ?

Obrigado e cumprimentos,

R. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.