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;
}
...
}