PaymeChain.SDK 1.0.3

dotnet add package PaymeChain.SDK --version 1.0.3
                    
NuGet\Install-Package PaymeChain.SDK -Version 1.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PaymeChain.SDK" Version="1.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PaymeChain.SDK" Version="1.0.3" />
                    
Directory.Packages.props
<PackageReference Include="PaymeChain.SDK" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PaymeChain.SDK --version 1.0.3
                    
#r "nuget: PaymeChain.SDK, 1.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PaymeChain.SDK@1.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PaymeChain.SDK&version=1.0.3
                    
Install as a Cake Addin
#tool nuget:?package=PaymeChain.SDK&version=1.0.3
                    
Install as a Cake Tool

PaymeChain SDK para .NET

NuGet version

Bem-vindo ao SDK oficial da PaymeChain para a plataforma .NET. Esta biblioteca foi projetada para simplificar e acelerar a integração de suas aplicações com a blockchain Payme, abstraindo as complexidades de comunicação, descoberta de nós e gerenciamento de segurança.

Objetivo

O principal objetivo do PaymeChain SDK é fornecer uma interface fluente, segura e resiliente para interagir com a rede Payme. Ele automatiza tarefas essenciais para que os desenvolvedores possam focar na lógica de negócios de suas aplicações, em vez de na infraestrutura da blockchain.

  • Conexão Simplificada: Configure o SDK uma vez e deixe-o gerenciar o ciclo de vida da conexão.
  • Alta Disponibilidade: Encontra automaticamente o nó da rede mais saudável e performático para enviar as requisições.
  • Segurança Integrada: Gerencia o download e a atualização de certificados de segurança da rede de forma automática.
  • Interface Intuitiva: Oferece um cliente único (PaymeClient) com acesso a todos os serviços da blockchain de forma organizada.

Instalação

O SDK está disponível como um pacote NuGet. Você pode instalá-lo usando a CLI do .NET ou o Gerenciador de Pacotes do Visual Studio.

.NET CLI:

dotnet add package PaymeChain.SDK

Gerenciador de Pacotes:

Install-Package PaymeChain.SDK

Inicialização e Configuração

A inicialização do SDK é feita em dois passos simples:

1. Configure o appsettings.json

Adicione uma seção PaymeSdk ao seu arquivo appsettings.json.

{
  "PaymeSdk": {
    "NodeRegistryUrl": "https://apivalidators.paymechain.com", //Serviço oficial
    "HealthCheckIntervalSeconds": 300,
    "SeedNodes": [
      "http://node1.payme.com:5000",
      "http://node2.payme.com:5000"
    ],
    "NodeSelectionStrategy": "LowestLatency", "HighestBlockHeight", "Random" // Selecione um
    "ValidatorMode": "0", "1" // 0 para Archive e 1 Full Node
  }
}
  • NodeRegistryUrl (Obrigatório): A URL do serviço central que fornece a lista de validadores da rede.
  • HealthCheckIntervalSeconds (Opcional): O intervalo, em segundos, que o SDK usará para verificar a saúde dos nós e selecionar o melhor. O padrão é 300 (5 minutos).
  • SeedNodes (Opcional): Uma lista de URLs de nós conhecidos. O SDK usará esses nós como ponto de partida se o NodeRegistryUrl estiver indisponível, util para realizar teste localmente.

2. Registre o SDK

No arquivo de inicialização da sua aplicação (Program.cs ou MauiProgram.cs), registre o serviço do SDK.

Exemplo para API ASP.NET Core (Program.cs):

using DE.Payme.SDK.Extensions; // Adicione este using

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddPaymeSdk(options => 
    builder.Configuration.GetSection("PaymeSdk").Bind(options)
);

// ... resto da sua configuração

Exemplo para App MAUI (MauiProgram.cs):

using DE.Payme.SDK.Extensions; // Adicione este using

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        // ...
        
        // Adiciona configurações do appsettings.json
        var config = new ConfigurationBuilder()
            .AddJsonStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("SeuApp.appsettings.json"))
            .Build();
        builder.Configuration.AddConfiguration(config);

        builder.Services.AddPaymeSdk(options => 
            builder.Configuration.GetSection("PaymeSdk").Bind(options)
        );

        return builder.Build();
    }
}

Uso Básico

Após a configuração, você pode injetar o PaymeClient em qualquer serviço, controller ou ViewModel da sua aplicação.

public class MeuServico
{
    private readonly PaymeClient _paymeClient;

    public MeuServico(PaymeClient paymeClient)
    {
        _paymeClient = paymeClient;
    }

    public async Task FazerAlgo()
    {
        // Exemplo: Buscar o último bloco da blockchain
        var resultado = await _paymeClient.Blocks.GetLatestBlockAsync();

        if (resultado.Success)
        {
            Console.WriteLine($"Bloco encontrado: {resultado.Data.Index}");
        }
        else
        {
            Console.WriteLine($"Erro: {resultado.Message}");
        }
    }
}

O Retorno Padrão: CommandResult<T>

Todas as chamadas de método que interagem com a rede retornam um objeto CommandResult<T>. Esta estrutura padronizada permite um tratamento de erros e sucesso de forma consistente.

public class CommandResult<T>
{
    // Indica se a operação foi bem-sucedida.
    public bool Success { get; set; }

    // Uma mensagem descritiva sobre o resultado da operação.
    public string Message { get; set; }

    // O objeto de dados retornado em caso de sucesso.
    public T Data { get; set; }

    // Um código de status que fornece mais detalhes sobre o resultado.
    public EStatusCode StatusCode { get; set; }
}

EStatusCode

O enumerador EStatusCode oferece um contexto mais granular sobre a resposta:

Membro Código Descrição
Success 200 A operação foi concluída com sucesso.
Created 201 O recurso foi criado com sucesso (ex: uma nova transação foi submetida).
Accepted 202 A requisição foi aceita para processamento, mas ainda não foi concluída.
NotFound 404 O recurso solicitado não foi encontrado (ex: um bloco ou transação com ID inválido).
BadRequest 400 A requisição era inválida ou malformada (ex: dados faltando).
Unauthorized 401 A requisição requer autenticação que não foi fornecida ou falhou.
Forbidden 403 O requisitante não tem permissão para acessar o recurso.
Conflict 409 A requisição entrou em conflito com o estado atual do servidor (ex: conta já existe).
UnprocessableEntity 422 A entidade na requisição é semanticamente inválida (ex: saldo insuficiente).
InternalServerError 500 Um erro inesperado ocorreu no nó da blockchain.
ServiceUnavailable 503 O serviço não está disponível no momento (ex: nó sobrecarregado ou em manutenção).

Visão Geral dos Endpoints (PaymeClient)

O PaymeClient é a porta de entrada para todos os serviços da blockchain.

  • client.Accounts: Métodos relacionados a contas de usuários, como consultar saldos e informações.
  • client.Blocks: Funções para consultar blocos específicos, o último bloco ou um intervalo de blocos.
  • client.Explorer: Endpoints comumente usados por exploradores de blockchain, fornecendo dados agregados.
  • client.LightClient: Suporte a provas de Merkle e cabeçalhos de bloco para clientes leves.
  • client.Staking: Operações de Staking, como delegar, retirar stake e consultar recompensas.
  • client.Statistics: Informações e estatísticas sobre a saúde e o estado da rede.
  • client.Tokens: Funções relacionadas a tokens na rede Payme (se aplicável).
  • client.Transactions: Métodos para submeter novas transações, consultar o status de transações e buscar pelo ID.
  • client.Validators: Informações sobre os validadores da rede.
  • client.Wallet: Funções de conveniência para gerenciamento de carteiras, como criar, derivar endereços e construir transações.
  • client.Realtime: Um cliente SignalR para receber atualizações da rede em tempo real (ex: novos blocos).

Funcionamento em Background

É importante entender que, uma vez configurado, o SDK opera de forma autônoma:

  1. Gerencia o Certificado: Mantém o certificado de segurança da rede atualizado.
  2. Monitora os Nós: Constantemente avalia os nós da rede para garantir que suas requisições sejam sempre enviadas ao nó mais rápido e estável, garantindo performance e resiliência para sua aplicação.
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.3 299 12/19/2025
1.0.2 296 12/18/2025
1.0.1 292 12/16/2025
1.0.0 144 12/12/2025