Yandex.Checkout.V3 4.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Yandex.Checkout.V3 --version 4.1.0                
NuGet\Install-Package Yandex.Checkout.V3 -Version 4.1.0                
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="Yandex.Checkout.V3" Version="4.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Yandex.Checkout.V3 --version 4.1.0                
#r "nuget: Yandex.Checkout.V3, 4.1.0"                
#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 Yandex.Checkout.V3 as a Cake Addin
#addin nuget:?package=Yandex.Checkout.V3&version=4.1.0

// Install Yandex.Checkout.V3 as a Cake Tool
#tool nuget:?package=Yandex.Checkout.V3&version=4.1.0                

Build status | Nuget Package

.NET-клиент для Яндекс.Кассы

Switсh to English

Клиент разработан на основе документации по API.

Клиент поддерживает классическую синхронную модель вызовов (класс Client) и async / await (класс AsyncClient).

Покрытие API почти полное и включает в себя создание платежа, подтверждение, возврат или отмену платежа, авиабилеты и чеки по ФЗ-54.

Начало использования

Для проведения платежей сайт вашего магазина должен быть доступен для получения уведомлений от Яндекс.Кассы. URL для уведомлений нужно указать в настройках магазина.

Все вызовы API проводятся через класс Client. Для его создания нужны номер магазина и секретный ключ:

    var client = new Yandex.Checkout.V3.Client(
        shopId: "12345", 
        secretKey: "ASDLsdFgsJnbKeJnOuQImWuJEuRPyIrOEwsRK");

Чтобы использовать async/await, создайте AsyncClient:

    AsyncClient asyncClient = client.MakeAsync();

AsyncClient содержит те же методы, что и Client, только с суффиксом "Async". Дальше пример для Client.

Для проведения платежа по инструкции Быстрый старт (шаги 1-3):

    // 1. Создайте платеж и получите ссылку для оплаты
    var newPayment = new NewPayment
    {
        Amount = new Amount { Value = 100.00m, Currency = "RUB" },
        Confirmation = new Confirmation { 
            Type = ConfirmationType.Redirect,
            ReturnUrl = "http://myshop.ru/thankyou"
        }
    };
    Payment payment = client.CreatePayment(newPayment);
    
    // 2. Перенаправьте пользователя на страницу оплаты
    string url = payment.Confirmation.ConfirmationUrl;
    Response.Redirect(url);

    // 3. Дождитесь получения уведомления
    var notification = Client.ParseMessage(Request.HttpMethod, Request.ContentType, Request.InputStream);

    if (notification is PaymentWaitingForCaptureNotification paymentWaitingForCaptureNotification)
    {
        Payment payment = paymentWaitingForCaptureNotification.Object;
        
        if (payment.Paid)
        {
            // 4. Подтвердите готовность принять платеж
            _client.CapturePayment(payment.Id);
        }
    }    

Полный код в примере на ASP.NET.

Минимальные требования

Nuget-пакет содержит версии для трех платформ:

  • .NET 4.0: нет поддержки async / await, не содержит класса AsyncClient.
  • .NET 4.5
  • .NET Standard 2.0: этот вариант подойдет для большинства современных проектов.

Нужный вариант библиотеки выбирается автоматически при установке пакета. Инструкции по установке на странице nuget.org.

Сборка Nuget-пакета

Для сборки пакета достаточно выполнить команду dotnet pack:

C:\Code\Yandex.Checkout.V3\Yandex.Checkout.V3> dotnet pack             
MSBuild version 17.6.1+8ffc3fe3d for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
  Yandex.Checkout.V3 -> C:\Code\Yandex.Checkout.V3\Yandex.Checkout.V3\bin\Debug\net45\Yandex.Checkout.V3.dll
  Yandex.Checkout.V3 -> C:\Code\Yandex.Checkout.V3\Yandex.Checkout.V3\bin\Debug\netstandard2.0\Yandex.Checkout.V3.dll

Пакет будет создан в папке bin/Debug.

Политика версионирования

Версия пакета задается тегом <Version> в Yandex.Checkout.V3.csproj и следует правилам семантического версионирования.

Устранение проблем

"Authentication failed because the remote party has closed the transport stream."

Если вы получили эту ошибку при попытке создания платежа, возможно, вы используете протокол, не поддерживаемый Яндекс.Кассой. По состоянию на июль 2018 поддерживается TLS 1.2, что может измениться в будущем. Добавьте следующий код перед посылкой запроса:

    using System.Net;

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Или, если вы используете .NET 4.0 или ниже:

    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

Совместная работа над проектом

Если вы решили взять в работу одну из открытых задач, сообщите об этом в комментарии к задаче, чтобы предотвратить дублирование усилий.

На каждое изменение лучше заводить отдельный пул-реквест. Так больше шансов, что ваш пул-реквест будет принят.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  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 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net40 is compatible.  net403 was computed.  net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos 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
4.2.0 3,170 7/10/2024
4.1.0 135 7/5/2024
4.0.0 5,408 6/3/2024
3.0.0 549 5/13/2024
2.0.0 6,187 1/30/2024
1.7.0 36,116 1/12/2023
1.6.1 28,712 6/23/2022
1.6.0 4,650 3/23/2022
1.5.0 8,495 11/30/2021
1.4.0 6,425 6/2/2021
1.3.0 6,844 4/9/2021
1.2.0 909 3/30/2021
1.1.0 6,635 2/12/2021
1.0.6 2,325 12/6/2020
1.0.5 1,325 10/25/2020
1.0.4 4,054 9/11/2020
1.0.3 881 9/4/2020
1.0.2 911 8/27/2020
1.0.1 1,112 8/17/2020
1.0.0 9,869 1/28/2020
0.2.1 1,679 12/16/2019
0.2.0 1,116 11/25/2019
0.1.3 979 11/19/2019
0.1.2 1,442 10/30/2019
0.1.1 1,882 6/7/2019
0.1.0 921 4/18/2019
0.0.3 3,755 3/31/2018
0.0.2 1,427 3/30/2018
0.0.1 1,371 3/13/2018
0.0.0 1,319 3/11/2018

This release adds a MakeAsync() overload that allows the use of an existing HttpClient which can be useful in case you prefer to create your HttpClients using an IHttpClientFactory or other methods.
       One other releated change is giving up the use of HttpClient default headers and using request header instead. This allows multiple instance of AsyncClient to share the same instance of an HttpClient which can be usefule if you need to handle multiple shops in the same application.