GoPaySDK 1.0.2

dotnet add package GoPaySDK --version 1.0.2
                    
NuGet\Install-Package GoPaySDK -Version 1.0.2
                    
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="GoPaySDK" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GoPaySDK" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="GoPaySDK" />
                    
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 GoPaySDK --version 1.0.2
                    
#r "nuget: GoPaySDK, 1.0.2"
                    
#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 GoPaySDK@1.0.2
                    
#: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=GoPaySDK&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=GoPaySDK&version=1.0.2
                    
Install as a Cake Tool

GoPay SDK for .NET

GoPay SDK — библиотека для интеграции Go Pay в .NET-приложения. SDK помогает создавать платежи и проверять статус платежа через IGoPayService.

Официальная документация Go Pay для разработчиков доступна здесь: https://doc.gopay.kg/v1/.

Возможности

  • Создание платежа в GoPay
  • Проверка платежа по payment_id или order_id
  • Поддержка Dependency Injection
  • Настройка через IConfiguration
  • Подходит для ASP.NET Core и Console-приложений

Требования

  • .NET 10 или выше
  • ApiKey и SecretKey от GoPay KG
  • BaseUrl API GoPay

Полезные ссылки

Установка

Установите пакет из NuGet:

dotnet add package GoPaySDK

После этого можно подключать namespace:

using GoPaySDK;
using GoPaySDK.Interfaces;
using GoPaySDK.Models;

Использование через ProjectReference

Если вы хотите подключить SDK напрямую из исходного кода, добавьте ссылку на проект GoPaySDK из вашего приложения:

<ProjectReference Include="..\GoPaySDK\GoPaySDK.csproj" />

Или выполните команду из папки вашего приложения:

dotnet add reference ..\GoPaySDK\GoPaySDK.csproj

Конфигурация

SDK читает настройки из секции GoPay.

appsettings.json

{
  "GoPay": {
    "ApiKey": "YOUR_API_KEY",
    "SecretKey": "YOUR_SECRET_KEY",
    "BaseUrl": "YOUR_GOPAY_API_BASE_URL"
  }
}

Актуальный API URL и параметры интеграции смотрите в официальной документации Go Pay: https://doc.gopay.kg/v1/.

Не храните реальные ключи в репозитории. Для локальной разработки используйте User Secrets или переменные окружения.

User Secrets

dotnet user-secrets set "GoPay:ApiKey" "YOUR_API_KEY"
dotnet user-secrets set "GoPay:SecretKey" "YOUR_SECRET_KEY"
dotnet user-secrets set "GoPay:BaseUrl" "https://api.example.com/"

Использование в ASP.NET Core

1. Подключите сервис в Program.cs

using GoPaySDK;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddGoPayService(builder.Configuration);

var app = builder.Build();

app.MapControllers();

app.Run();

2. Создание платежа в контроллере

using GoPaySDK;
using GoPaySDK.Interfaces;
using GoPaySDK.Models;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/payments")]
public class PaymentsController : ControllerBase
{
    private readonly IGoPayService _goPayService;

    public PaymentsController(IGoPayService goPayService)
    {
        _goPayService = goPayService;
    }

    [HttpPost]
    public async Task<IActionResult> CreatePayment()
    {
        var result = await _goPayService.CreatePaymentAsync(new CreatePayment
        {
            order_id = Guid.CreateVersion7().AdoptToGoPay(),
            amount = 100,
            description = "Test payment",
            testing_mode = true,
            lifetime = 3600,
            callback_url = "https://your-domain.com/api/payments/callback",
            success_url = "https://your-domain.com/payment/success",
            failure_url = "https://your-domain.com/payment/failure"
        });

        if (result.status != ResponseMessages.StatusOK)
        {
            return BadRequest(result.error_message);
        }

        return Ok(result.data);
    }
}

3. Проверка платежа

[HttpGet("{orderId}")]
public async Task<IActionResult> QueryPayment(string orderId)
{
    var result = await _goPayService.QueryPaymentAsync(new QueryPayment
    {
        order_id = orderId
    });

    if (result.status != ResponseMessages.StatusOK)
    {
        return BadRequest(result.error_message);
    }

    return Ok(result.data);
}

4. Webhook / Callback endpoint

callback_url — это Webhook endpoint вашего приложения. GoPay отправляет на этот URL уведомление с результатом платежа.

Этот endpoint должен быть доступен из интернета и принимать POST-запросы.

[HttpPost("callback")]
public IActionResult Callback([FromBody] CallbackEvent callback)
{
    if (callback.status == Status.COMMITTED)
    {
        // Платеж успешно оплачен
    }

    return Ok();
}

Использование в Console-приложении

1. Подключите Host и DI

using GoPaySDK;
using GoPaySDK.Interfaces;
using GoPaySDK.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

using var host = Host.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((context, config) =>
    {
        if (context.HostingEnvironment.IsDevelopment())
        {
            config.AddUserSecrets<Program>();
        }
    })
    .ConfigureServices((context, services) =>
    {
        services.AddGoPayService(context.Configuration);
    })
    .Build();

using var scope = host.Services.CreateScope();
var goPayService = scope.ServiceProvider.GetRequiredService<IGoPayService>();

2. Создайте платеж

var paymentResult = await goPayService.CreatePaymentAsync(new CreatePayment
{
    order_id = Guid.CreateVersion7().AdoptToGoPay(),
    amount = 1,
    description = "Test Payment",
    testing_mode = true
});

if (paymentResult.status == ResponseMessages.StatusOK)
{
    var payment = paymentResult.data;

    Console.WriteLine($"Payment ID: {payment?.payment_id}");
    Console.WriteLine($"Checkout URL: {payment?.checkout_url}");
    Console.WriteLine($"QR URL: {payment?.qr_url}");
}
else
{
    Console.WriteLine($"Error: {paymentResult.error_message}");
}

3. Проверьте статус платежа

var queryResult = await goPayService.QueryPaymentAsync(new QueryPayment
{
    order_id = "ORDER_ID_WITHOUT_DASHES"
});

if (queryResult.status == ResponseMessages.StatusOK)
{
    Console.WriteLine($"Payment status: {queryResult.data?.status}");
}
else
{
    Console.WriteLine($"Error: {queryResult.error_message}");
}

Модели

CreatePayment

Поле Описание
order_id ID заказа в системе мерчанта, максимум 32 символа
amount Сумма платежа
description Описание платежа, максимум 255 символов
testing_mode Тестовый режим
lifetime Время жизни платежа в секундах
callback_url URL для callback-уведомления
success_url URL редиректа после успешной оплаты
failure_url URL редиректа после неуспешной оплаты

QueryPayment

Поле Описание
payment_id ID платежа в GoPay
order_id ID заказа в системе мерчанта

Статусы платежа

SDK содержит константы статусов:

Status.CREATED
Status.PENDING
Status.FAILED
Status.COMMITTED
Status.EXPIRED

Пример полного Console-приложения

Готовый пример находится в проекте:

GoPayTest/Program.cs

Безопасность

  • Не коммитьте ApiKey и SecretKey в GitHub.
  • Используйте HTTPS для callback_url, success_url и failure_url.
  • Для production-окружения храните секреты в переменных окружения, Secret Manager, Azure Key Vault или другом защищенном хранилище.

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. файл LICENSE.

Product 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. 
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.2 103 4/25/2026
1.0.1 99 4/25/2026
1.0.0 100 4/25/2026