Show / Hide Table of Contents
Editar no GitHub

Guia de Integração em .NET

Para integrar a sua aplicação web em .NET ao Lacuna Scanner Service, siga os passos descritos neste artigo.

Tip

Antes de começar, veja a visão geral da integração.

Primeiramente, adicione o pacote Lacuna.Scanner.Client ao seu projeto.

Tip

Veja a sessão ASP.NET Core abaixo caso a sua aplicação utilize essa tecnologia.

De posse do endpoint e da API Key, instancie um ScannerClient:

var endpoint = "...";
var apiKey = "...";
var scanner = new ScannerClient(endpoint, apiKey);

Utilize o método CreateScanSessionAsync(string) passando o returnUrl para iniciar uma sessão:

var scanSessionParams = await scanner.CreateScanSessionAsync("https://your-return-url/");
Note

Por motivos de backward compatibility, sessões criadas como acima (apenas com o returnUrl) exigem os passos de entrada de metadados e assinatura do documento.

Ou, caso queira maior controle sobre as opções da sessão:

var scanSessionParams = await scanner.CreateScanSessionAsync(new CreateScanSessionRequest2() {
    ReturnUrl = "https://your-return-url/",
    MetadataInputEnabled = ...,
    SignatureEnabled = ...,
});

Utilize o valor retornado no campo RedirectUrl para redirecionar o usuário no frontend:

location.href = scanSessionParams.RedirectUrl;

Quando detectar que o usuário voltou ao seu site (procure pelo argumento scanSessionId na URL), utilize o método GetScanSessionAsync(Guid) para obter os documentos digitalizados:

var scanSession = await scanner.GetScanSessionAsync(scanSessionId);
if (scanSession.Result == ScanSessionResults.Success) {
    var document = scanSession.Documents.First();
    using (var srcStream = await document.OpenReadAsync()) {
        using (var destStream = File.Create(...)) {
            await srcStream.CopyToAsync(destStream);
        }
    }
}

Sessões multifile

Você pode permitir que o usuário digitalize múltiplos documentos. Para isso, passe o parâmetro multifile: true ao criar a sessão:

var scanSessionParams = await scanner.CreateScanSessionAsync("https://your-return-url/", multifile: true);

Ao final do processo, ao invés de levar em consideração apenas o primeiro documento, itere a lista de documentos digitalizados:

var scanSession = await scanner.GetScanSessionAsync(scanSessionId);
if (scanSession.Result == ScanSessionResults.Success) {
    foreach (var document in scanSession.Documents) {
        ...
    }
}

Sessões com entrada de metadados e/ou assinatura

Caso deseje solicitar ao digitalizador a entrada dos metadados requeridos pela Medida Provisória 10.278/2020, preencha a propriedade MetadataInputEnabled = true:

var scanSessionParams = await scanner.CreateScanSessionAsync(new CreateScanSessionRequest2() {
    ReturnUrl = "https://your-return-url/",
    MetadataInputEnabled = true,
});
Note

O pacote Lacuna.Scanner.Client deve estar na versão 1.3.0 ou superior

Caso deseje que o digitalizador assine digitalmente o documento ao final do processo, preencha a propriedade SignatureEnabled = true:

var scanSessionParams = await scanner.CreateScanSessionAsync(new CreateScanSessionRequest2() {
    ReturnUrl = "https://your-return-url/",
    SignatureEnabled = true,
});
Tip

Para aderir à Medida Provisória 10.278/2020, devem ser habilitados tanto a entrada de metadados quanto a assinatura do documento

ASP.NET Core

Caso a sua aplicação web seja em ASP.NET Core, no método ConfigureServices do startup da sua aplicação, adicione:

public void ConfigureServices(IServiceCollection services) {
    ...
    services.AddScanner()
        .Configure(Configuration.GetSection("Scanner"));
}
Note

Não utilize o pacote Lacuna.Scanner.Client.AspNetCore. O pacote Lacuna.Scanner.Client já possui tudo o que você precisa para usar o Scanner em ASP.NET Core.

No arquivo de configuração appsettings.json, adicione a seção Scanner:

...
"Scanner": {
    "Endpoint": "https://scn.lacunasoftware.com/",
    "ApiKey": "..."
},
...

Nas partes da aplicação que precisarem fazer chamadas à API do serviço, peça via dependency injection uma instância de IScannerService:

using Lacuna.Scanner.Client;

public MyController : ApiController {

    private readonly IScannerService scanner;

    public MyController(IScannerService scanner) {
        this.scanner = scanner;
    }

    ...
}
Back to top Copyright © 2015-2020 Lacuna Software