Spoleto.VirtualKassa.MultiBank 2.0.4

dotnet add package Spoleto.VirtualKassa.MultiBank --version 2.0.4
NuGet\Install-Package Spoleto.VirtualKassa.MultiBank -Version 2.0.4
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="Spoleto.VirtualKassa.MultiBank" Version="2.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Spoleto.VirtualKassa.MultiBank --version 2.0.4
#r "nuget: Spoleto.VirtualKassa.MultiBank, 2.0.4"
#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.
// Install Spoleto.VirtualKassa.MultiBank as a Cake Addin
#addin nuget:?package=Spoleto.VirtualKassa.MultiBank&version=2.0.4

// Install Spoleto.VirtualKassa.MultiBank as a Cake Tool
#tool nuget:?package=Spoleto.VirtualKassa.MultiBank&version=2.0.4

Spoleto.VirtualKassa.MultiBank

alternate text is missing from this package README image alternate text is missing from this package README image Build

C# SDK для интеграции с хостом Мульти-Банка (Узбекистан) для передачи информации об оплатах покупок.

The project for integration with MultiBank host.

Быстрый старт

Клиент написан на C# .NET 7.0, .NET 8.0

Установка Nuget пакета:

Для использования этого SDK необходимо установить Nuget пакет Spoleto.VirtualKassa.MultiBank: https://www.nuget.org/packages/Spoleto.VirtualKassa.MultiBank

Install-Package Spoleto.VirtualKassa.MultiBank -ProjectName StoreApplication

MultiBankProvider

Для создания экземпляра MultiBankProvider рекомендуется использовать Spoleto.VirtualKassa.MultiBank.MultiBankProviderFactory:

var factory = new MultiBankProviderFactory();

var provider = factory.Build();

// Либо с передачей экземпляра HttpClient:
var httpClient = new HttpClient();
var factory = new MultiBankProviderFactory()
              .WithHttpClient(httpClient);

var provider = factory.Build();

Dependency Injection

Чтобы интегрировать Spoleto.VirtualKassa.MultiBank в Microsoft Dependency injection следует использовать NuGet пакет Spoleto.VirtualKassa.MultiBank.Extensions. Этот пакет предоставляет методы-расширения для интерфейса IServiceCollection, которые регистрируют MultiBankProvider как transient сервис.

using Microsoft.Extensions.DependencyInjection;
using Spoleto.VirtualKassa.MultiBank.Extensions;
using Spoleto.VirtualKassa.MultiBank.Models;

// Set up the dependency injection container
var services = new ServiceCollection();        

// Register your dependencies here
services.AddMultiBank();

// Build the service provider
var serviceProvider = services.BuildServiceProvider();

Внедрение службы MultiBankProvider в ваши классы

После регистрации Spoleto.VirtualKassa.MultiBank в вашем фреймворке Dependency Injection вы можете внедрить MultiBankProvider в любой класс вашего приложения.

Для этого внедрите интерфейс IMultiBankProvider в конструкторы классов, в которых вы хотите использовать функциональность MultiBankProvider:

public class YourMultiBankClass
{
    private readonly ILogger<YourMultiBankClass> _logger;
    private readonly IMultiBankProvider _multiBankProvider;

    public YourMultiBankClass(ILogger<YourMultiBankClass> logger, IMultiBankProvider multiBankProvider)
    {
        _logger = logger;
        _multiBankProvider = multiBankProvider;
    }

    public async Task Sell(MultiBankOption settings, SaleSlip slip)
    {
        var result = await _multiBankProvider.SellAsync(settings, saleSlip);

        // log the result:
        _logger.LogInformation("Sold {slip} with result: {result}", slip, result);
    }
}

Примеры вызовов методов API

Открытие смены
var settings = new MultiBankOption { ServiceUrl = "http://localhost:8080/" };
var openShiftInfo = new OpenShiftRequest(DateTime.UtcNow, "Иванов Иван");

await multiBankProvider.OpenShiftAsync(settings, openShiftInfo);
Закрытие смены
var settings = new MultiBankOption { ServiceUrl = "http://localhost:8080/" };
var closeShiftInfo = new CloseShiftRequest(DateTime.UtcNow, "Иванов Иван");

await multiBankProvider.CloseShiftAsync(settings, closeShiftInfo);
Продажа
var settings = new MultiBankOption { ServiceUrl = "http://localhost:8080/" };

var multiBankProvider = serviceProvider.GetService<IMultiBankProvider>()!;
var saleSlip = new SaleSlip
{
    Items = new List<SlipItem>
    {
        new SlipItem
        {
            ProductName = "Свитер" ,
            ProductLabel = "4780019900571",
            ProductBarcode = "4780019900571",
            Count = 1,
            ProductPrice = 1000,
            TotalProductPrice = 1000,
            ClassifierClassCode = "01902001009030001"
        }
    },
    ReceiptCashierName = "Иванов Иван",
    ReceiptGnkReceivedCash = 1000,
    ReceiptSum=1000,
    ReceiptGnkTime = DateTime.UtcNow,
    Location = new Location { Latitude = 45.29671408606234, Longitude = 79.21787478269367 }
};

// Act
var result = await multiBankProvider.SellAsync(settings, saleSlip);
Возврат
var saleDate = DateTime.Parse("2023-08-03T12:13:10");
var returnSlip = new ReturnSlip
{
    Items = new List<SlipItem>
    {
        new SlipItem
        {
            ProductName = "Свитер" ,
            ProductLabel = "4780019900571",
            ProductBarcode = "4780019900571",
            Count = 1,
            ProductPrice = 1000,
            TotalProductPrice = 1000,
            ClassifierClassCode = "01902001009030001"
        }
    },
    ReceiptCashierName = "Иванов Иван",
    ReceiptGnkReceivedCash = 1000,
    ReceiptSum=1000,
    ReceiptGnkTime = DateTime.UtcNow,
    RefundInfo = new()
    { 
        TerminalID = "UZ191211502326",
        ReceiptSeq = "1013",
        DateTime = saleDate,
        FiscalSign = "146130134900" 
    },
    Location = new Location { Latitude = 45.29671408606234, Longitude = 79.21787478269367 }
};

// Act
var result = await multiBankProvider.ReturnAsync(settings, returnSlip);
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Spoleto.VirtualKassa.MultiBank:

Package Downloads
Spoleto.VirtualKassa.MultiBank.Extensions

Расширения для работы с Microsoft Dependency injection фреймворком для C# SDK для интеграции с хостом Мульти-Банка (Узбекистан) для передачи информации об оплатах покупок. The extensions for Microsoft Dependency injection framework for the project for integration with MultiBank host.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.4 94 4/26/2024
2.0.3 107 4/2/2024
2.0.2 98 4/1/2024
2.0.1 98 3/29/2024
2.0.0 75 3/29/2024
1.12.6.1732 155 12/6/2023
1.12.6.1730 106 12/6/2023
1.12.6.1622 111 12/6/2023
1.11.28.1250 97 11/28/2023
1.11.28.1235 100 11/28/2023
1.11.17.2106 117 11/17/2023
1.11.17.1209 100 11/17/2023
1.11.16.1614 99 11/16/2023
1.11.2.1248 98 11/2/2023
1.10.30.1628 88 10/30/2023
1.10.27.1544 101 10/27/2023
1.10.26.936 102 10/26/2023
1.10.10.1609 93 10/10/2023
1.8.11.1303 138 8/11/2023
1.8.11.1006 133 8/11/2023
1.8.7.406 139 8/7/2023