GoPaySDK 1.0.2
dotnet add package GoPaySDK --version 1.0.2
NuGet\Install-Package GoPaySDK -Version 1.0.2
<PackageReference Include="GoPaySDK" Version="1.0.2" />
<PackageVersion Include="GoPaySDK" Version="1.0.2" />
<PackageReference Include="GoPaySDK" />
paket add GoPaySDK --version 1.0.2
#r "nuget: GoPaySDK, 1.0.2"
#:package GoPaySDK@1.0.2
#addin nuget:?package=GoPaySDK&version=1.0.2
#tool nuget:?package=GoPaySDK&version=1.0.2
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 KGBaseUrlAPI GoPay
Полезные ссылки
- Официальный сайт Go Pay: https://www.gopay.kg/
- Документация для разработчиков: https://doc.gopay.kg/v1/
- Личный кабинет мерчанта: https://merchant.gopay.kg/
Установка
Установите пакет из 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 | 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
- Microsoft.Extensions.DependencyInjection (>= 10.0.7)
- Microsoft.Extensions.Http (>= 10.0.7)
- Newtonsoft.Json (>= 13.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.