Перейти к содержанию

Прием платежей через Liqpay Api в Asp.Net Core

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


В этой статье мы рассмотрим, как добавить платежную систему Liqpay для сайта Asp.Net Core, на примере небольшого магазина товаров.

В современном цифровом мире предприятия всех размеров переходят на онлайновые платежи. Однако внедрение безопасного и надежного платежного сервиса может оказаться непростой задачей, особенно для тех, кто только начинает работать в этом направлении. 

Именно здесь на помощь приходит Liqpay – популярная платежная система, позволяющая компаниям и частным лицам, с легкостью принимать онлайн-платежи.

Liqpay — это платежная система, которая предоставляет возможность совершать электронные платежи и денежные переводы через интернет. Эта система была разработана украинской компанией «PrivatBank» и запущена в 2008 году. Она стала популярным инструментом для онлайн-бизнесов и пользователей, которые хотят совершать быстрые и безопасные платежи.

Создание и настройка аккаунта Liqpay

Если у вас есть уже аккаунт в Приват24, вам необходимо пройти авторизацию, если нет, выполняйте регистрацию:

https://www.liqpay.ua/authorization?return_to=%2Fuk%2Fadminbusiness

После регистрации, вам необходимо создать компанию, для этого вверху страницы нажимаем «Мої компанії», (https://www.liqpay.ua/uk/adminbusiness/companies) – «Створити компанію» — вводим название компании и Email-адрес. Чтобы принимать реальные платежи, нам необходимо будет заполнить много информации о нашем бизнесе, этот шаг пропустим.

После этого вы попадете на главную страницу платежной системы: liqpay api c#

  1. Включаем «Тестовый режим», внизу сайдбара (Обычно включен по умолчанию).
  2. В разделе «Главная», раскройте вкладку «Тестові ключі API», и скопируйте Приватный и Публичный ключи:

Тестові ключі API LiqPay

Они нам пригодятся для проведения платежей через сайт. «Боевые ключи» пока не доступны, для этого необходимо пройти активацию магазина.

Создание и настройка проекта

Чтобы создать проект LiqpayPaymentApp, запустите Visual Studio и выберите в меню File (Файл) — New Project (Создать Проект). Укажите шаблон проекта ASP.NET Core Web Application (Веб-приложение ASP.NET Core). 

Введите LiqpayPaymentApp, в поле Name, на следующей странице укажите Framework .Net 7.0 и нажмите кнопку Create

Мы будем использовать последнюю версию пакета Stripe.net для реализации платежного шлюза Liqpay в вашем проекте. Для этого необходимо перейти в раздел Manage Nuget Packages и добавить Liqpay в свой проект:

payment app c#

Или через Package Manager Console:

Install-Package LiqPay

Для сохранения ключей Api, будем использовать файл appsettings.json. Данный файл находится в корне проекте, изменим его содержимое следующим образом:

Модель и Репозиторий

Модель для приложения LiqpayPaymentApp будет основана на списке товаров. Создайте папку Models и добавьте в нее файл класса по имени Product.cs со следующим содержимым:

Мне нравится обеспечивать согласованный доступ к данным в приложении с использованием паттерна «Хранилище» (Repository), в котором интерфейс определяет свойства и методы, предназначенные для доступа к данным, а для работы с механизмом хранения данных применяется класс реализации. Преимущество использования паттерна «Хранилище» связано с облегчением модульного тестирования части MVC приложения, а также с тем, что детали, касающиеся хранения данных, скрыты от остальных частей приложения.

Чтобы создать интерфейс хранилища, создайте папку Interfaces и добавьте в нее файл интерфейса по имени IProduct.cs со следующим содержимым:

Метод GetAllProducts() будет предоставлять доступ только по чтению ко всем товарам, известным приложению. Метод AddProduct() будет использоваться для добавления новых товаров.

В этом проекте мы будем хранить объекты модели в памяти. Создайте папку Repository и добавьте в нее файл класса по имени ProductRepository.cs со следующим содержимым:

Класс ProductRepository реализует интерфейс IProduct и применяет экземпляр List для отслеживания объектов Product, т.е. в случае остановки или перезапуска приложения данные будут утрачиваться.

Добавьте в класс Program оператор следующий оператор,  чтобы зарегистрировать класс ProductRepository как реализацию для использования в качестве зависимостей интерфейса IProduct:

Данная строка кода, регистрирует класс ProductRepository с применением метода AddSingleton. В результате при распознавании зависимости интерфейса IProduct в первый раз создается одиночный объект, который будет использоваться для всех последующих зависимостей.

Контроллер и Представления для Товаров

В контроллере HomeController, реализуем вывод всех продуктов с возможностью дальнейшего приобретения:

В папке Views / Home, изменим содержимое Index.cshtml, следующим образом:

Для простоты происходящего, я не стану реализовывать корзину в этом проекте, при нажатии на кнопку «Buy», мы сразу же будем переадресовываться на страницу подтверждения оплаты. О том, как сделать корзину, читайте в статье «Магазин на Asp.Net Core MVC EF. Часть 5».

Запустим приложение и проверим его работу:

c# приложение для оплаты

Контроллер и Представления для Оплаты

В классе Program, добавим сервис IHttpContextAccessor, он потребуется для получения текущего домена сайта при формировании платежного отчета:

В корне проекта определим папку ViewModels, в которую добавим класс PaymentViewModel, со следующим содержимым:

Создадим контроллер PaymentController, и в нем определим действие для обработки запроса оплаты:

В данном действии Pay контроллера в ASP.NET MVC происходит обработка запроса на оплату продукта с использованием LiqPay API.

Рассмотрим параметры метода:

  • [FromServices] IConfiguration config: Внедрение сервиса конфигурации (IConfiguration) для доступа к настройкам приложения, таким как публичный и приватный ключи LiqPay API.
  • [FromServices] IHttpContextAccessor httpContextAccessor: Внедрение сервиса для доступа к текущему HTTP-контексту приложения.
  • Product product: Модель продукта, передаваемая в запросе от клиента.

Внутри метода, получаем информацию о продукте на основе его идентификатора. Если продукт не найден (currentProduct == null) или количество продукта меньше 1 (product.Count < 1), то возвращаем ответ с кодом 404 — «Not Found».

Получаем публичный и приватный ключи LiqPay API из конфигурации приложения. Создаем экземпляр LiqPayClient с использованием полученных публичного и приватного ключей и объект LiqPayRequest, который содержит параметры для процессинга платежа.

Метод liqpay.CNBForm() используется для генерации кода HTML-формы для оплаты. Сгенерированный код формы (formCode) содержит данные, подпись и кнопку для оплаты через LiqPay.

В итоге, метод возвращает представление View(pvm), передавая в него модель представления pvm. Это представление отображает страницу с информацией о продукте и форму оплаты.

В папку Views / Payment, добавим представление Pay.cshtml, со следующим содержимым:

В папку Views / Payment, добавим представление Success.cshtml, со следующим содержимым:

Выполнение оплаты

Запустим приложение и проверим его работу. Купим определенное количество товара:

Проверим данные и нажмем на кнопку «Купить»:

оплата товара liqpay

Введем данные от карты, емейл адрес для получения квитанции и нажмем кнопку «Оплатить»:

liqpay форма оплаты

После оплаты, получим результат транзакции:

Если нажмем по ссылке «Повернутися до сайту», попадем на страницу подтверждения оплаты со из контроллера PaymentController, действия Success:

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

liqpay квитанция об оплате

В данном примере, мы работали в тестовом режиме, чтобы иметь возможность принимать реальные платежи, необходимо получить «Боевые ключи» и указать их в файле appsettings.json.

Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.

Так же вам может быть интересна предыдущая статья — Загрузка файлов перетаскиванием в Asp.Net Core.


Вы хотите научится писать код на языке программирования C#?

Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.

Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:

  • Доступ к пройденному материалу
  • Тематические статьи
  • Библиотека книг
  • Онлайн тестирование
  • Общение в закрытых группах

https://dijix.com.ua

Живи в своем мире, программируй в нашем.


 

Опубликовано в рубрикеAsp.Net Core
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Макс
Макс
11 месяцев назад

Спасибо, все работает!

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x