JotaSystem.Sdk.Providers
1.0.31
dotnet add package JotaSystem.Sdk.Providers --version 1.0.31
NuGet\Install-Package JotaSystem.Sdk.Providers -Version 1.0.31
<PackageReference Include="JotaSystem.Sdk.Providers" Version="1.0.31" />
<PackageVersion Include="JotaSystem.Sdk.Providers" Version="1.0.31" />
<PackageReference Include="JotaSystem.Sdk.Providers" />
paket add JotaSystem.Sdk.Providers --version 1.0.31
#r "nuget: JotaSystem.Sdk.Providers, 1.0.31"
#:package JotaSystem.Sdk.Providers@1.0.31
#addin nuget:?package=JotaSystem.Sdk.Providers&version=1.0.31
#tool nuget:?package=JotaSystem.Sdk.Providers&version=1.0.31
JotaSystem.Sdk.Providers
Biblioteca de integrações externas da Jota System para aplicações .NET.
Descrição
O JotaSystem.Sdk.Providers reúne implementações concretas de comunicação com serviços de terceiros e um builder para registro modular dessas integrações no container de DI.
Hoje o pacote contém:
AbstractionscomApiResponseeProviderBasepara padronizar chamadas HTTP e respostas.Logisticscentraliza consulta de endereços e fretes viaViaCep,OpenCep,BrasilApieCorreios.Aicom integração de chat viaOpenAI.Communicationcentraliza os canaisEmail,Sms,WhatsAppePushNotification, com implementações de e-mail paraSMTP,Brevo,SendGrideSendPulsee de WhatsApp para aEvolution API.Storagecom implementação paraAzure Blob Storage.Paymentscom o contrato de gateway de pagamento e a integração completa com aCielo(API E-commerce 3.0).DependencyInjectioncomAddJotaSystemProviders()e extensões modulares por área.
Registro e composição
O pacote usa um builder próprio para permitir composição por provider:
builder.Services
.AddJotaSystemProviders()
.AddViaCep()
.AddOpenCep()
.AddBrasilApi()
.AddCorreios(options =>
{
options.DefaultCredentials = new CorreiosCredentials
{
UserName = "...",
AccessCode = "...",
PostingCardNumber = "..."
};
})
.AddOpenAi(options =>
{
options.ApiKey = "...";
options.Model = "...";
})
.AddSmtp(options =>
{
options.Host = "...";
})
.AddAzureBlob(options =>
{
options.ConnectionString = "...";
})
.AddPayments()
.AddCielo(options =>
{
options.DefaultCredentials = new CieloCredentials
{
MerchantId = "...",
MerchantKey = "...",
Environment = CieloEnvironmentEnum.Sandbox
};
options.SoftDescriptor = "MinhaLoja";
options.BoletoProvider = "Bradesco2";
});
Pagamentos
AddPayments() registra o IPaymentGatewayProviderResolver, que escolhe o gateway pela chave gravada na integração do sistema consumidor. AddCielo() registra a Cielo sob a chave cielo e também expõe o ICieloProvider, com o contrato completo da API E-commerce: venda, consulta por PaymentId e por MerchantOrderId, captura, cancelamento, devolução Pix e gestão da recorrência agendada.
Meios de pagamento aceitos no código do método (MethodCode):
| Código | Meio |
|---|---|
credit_card |
Cartão de crédito |
credit_card_recurrent |
Cartão de crédito com recorrência agendada pela Cielo |
pix |
QRCode Pix |
boleto |
Boleto registrado |
Cartão, endereço do pagador e parâmetros de recorrência vêm do próprio contrato de pagamento do JotaSystem.Sdk.Core: PaymentProviderRequest.Card (PaymentCard), Customer.Address (PaymentAddress) e PaymentProviderRequest.Recurrence (PaymentRecurrence). Em PaymentCard, o número e o código de segurança não são serializados — chegam à Cielo, mas ficam fora de log e de payload persistido.
Captura do cartão no navegador (Silent Order Post)
O caminho recomendado para crédito é não deixar o cartão passar pelo servidor da loja. CreateCheckoutSessionAsync abre uma sessão do Silent Order Post: o SDK autentica no OAuth2 da Cielo com ClientId/ClientSecret, pede um AccessToken de sessão e devolve, junto dele, o endereço do script e o ambiente. A página de checkout carrega o script, marca os campos com as classes bp-sop-cardnumber, bp-sop-cardexpirationdate, bp-sop-cardholdername e bp-sop-cardcvv, e chama bpSop_silentOrderPost. A Cielo devolve ao navegador um PaymentToken de uso único, válido por 20 minutos.
Esse token é enviado à cobrança em PaymentCard.SingleUseToken; o provider o traduz para Payment.CreditCard.PaymentToken e não envia nenhum outro dado do cartão — número, validade e CVV já estão dentro do token, e reenviá-los faz a Cielo recusar a autorização.
O token OAuth2 dura cerca de dez minutos e é reaproveitado entre requisições por um cache em memória, então abrir vários checkouts não gera uma autenticação por checkout.
Os metadados da cobrança ficam reservados aos ajustes específicos da Cielo, com as chaves de CieloMetadataKeys: soft_descriptor, capture, boleto_provider, boleto_assignor, boleto_instructions, boleto_demonstrative, boleto_identification e boleto_number. Cada um deles também pode ser definido no PublicConfigJson da integração ou nas CieloOptions, nessa ordem de precedência.
As credenciais são resolvidas nesta ordem: credenciais nomeadas em NamedCredentials pela SecretReference da integração; merchantId do PublicConfigJson combinado com a SecretReference como MerchantKey; e, por último, DefaultCredentials. O ambiente (sandbox ou production) vem da própria integração.
WhatsApp (Evolution API)
AddEvolutionApi() registra o IEvolutionApiProvider, que fala com um servidor da Evolution API v2. Cada número de WhatsApp é uma instância do servidor; todas as chamadas recebem o nome da instância e são autenticadas pelo header apikey.
services.AddJotaSystemProviders()
.AddEvolutionApi(options =>
{
// Opcional: sem servidor padrão, cada chamada informa as próprias EvolutionApiCredentials.
options.DefaultCredentials = new EvolutionApiCredentials
{
BaseUrl = "https://evolution.minhaempresa.com.br",
ApiKey = "AUTHENTICATION_API_KEY do servidor"
};
});
Fluxo para conectar um número:
CreateInstanceAsynccria a instância (com asEvolutionInstanceSettingse o webhook) e já devolve o primeiro QR Code e o token da instância.ConnectInstanceAsyncrenova o QR Code (ele expira em cerca de 40 segundos). Informando o número, devolve também o código de pareamento de 8 caracteres.GetConnectionStateAsyncou o eventoCONNECTION_UPDATEdo webhook indicam quando a sessão abre (Open).FetchInstancesAsyncdevolve o número e o nome do perfil conectados.LogoutInstanceAsyncdesconecta o aparelho;DeleteInstanceAsyncremove a instância.
Mensagens: SendTextAsync, SendMediaAsync (URL ou base64) e CheckWhatsAppNumbersAsync. Números nacionais com 10 ou 11 dígitos recebem o DDI de EvolutionApiOptions.DefaultCountryCode (padrão 55) — ver EvolutionPhoneNumber.
Webhook: EvolutionWebhookParser.Parse (ou IEvolutionApiProvider.ParseWebhook) lê a notificação e normaliza o evento para as constantes de EvolutionWebhookEvents, preenchendo o estado da conexão, o QR Code ou a mensagem conforme o evento.
Providers disponíveis
- Logística:
IViaCepProvider,IOpenCepProvider,IBrasilApiProvider,ICorreiosProvider,IMelhorEnvioProvider - IA:
IOpenAiProvider - Comunicação:
ISmtpProvider,IBrevoProvider,IBrevoSmsProvider,ISendGridProvider,ISendPulseProvider,IEvolutionApiProvider(WhatsApp) - Storage:
IAzureBlobProvider - Pagamentos:
IPaymentGatewayProviderResolver,IPaymentGatewayProvider(chavecielo),ICieloProvider
Perfil do pacote
Este SDK representa a camada de adaptação para serviços externos. Ele pode ser consumido isoladamente, mas o uso mais natural é como implementação concreta dos contratos de infraestrutura definidos pela arquitetura da Jota System.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Azure.Storage.Blobs (>= 12.30.1)
- brevo_csharp (>= 1.1.3)
- JotaSystem.Sdk.Common (>= 1.0.72)
- JotaSystem.Sdk.Core (>= 1.0.98)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.13)
- Microsoft.Extensions.Http (>= 10.0.13)
- OpenAI (>= 2.14.0)
- SendGrid (>= 9.29.3)
- SendPulse.SDK (>= 1.0.0)
- ViaCep (>= 5.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.31 | 45 | 10/16/2026 |
| 1.0.30 | 130 | 9/29/2026 |
| 1.0.29 | 122 | 9/13/2026 |
| 1.0.28 | 95 | 9/13/2026 |
| 1.0.27 | 103 | 9/13/2026 |
| 1.0.26 | 106 | 9/12/2026 |
| 1.0.25 | 121 | 9/7/2026 |
| 1.0.24 | 111 | 9/7/2026 |
| 1.0.22 | 121 | 8/17/2026 |
| 1.0.20 | 117 | 8/17/2026 |
| 1.0.19 | 130 | 8/11/2026 |
| 1.0.18 | 127 | 7/23/2026 |
| 1.0.17 | 137 | 6/24/2026 |
| 1.0.16 | 126 | 6/23/2026 |
| 1.0.15 | 129 | 6/22/2026 |
| 1.0.14 | 244 | 5/19/2026 |
| 1.0.13 | 164 | 3/17/2026 |
| 1.0.12 | 131 | 3/14/2026 |
| 1.0.11 | 155 | 2/28/2026 |
| 1.0.10 | 127 | 2/28/2026 |