Skip to content

Приймання платежів через 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

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

Published inAsp.Net Core
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x