Рубрики
Без рубрики

Давайте добавим функцию оформления заказа в Spring Boot для нашего приложения электронной коммерции

В этом руководстве мы узнаем, как интегрировать платежный шлюз в Spring Boot с помощью Stripe в нашем d… С тегами электронная коммерция, серверная часть, java, springboot.

В этом руководстве мы узнаем, как интегрировать платежный шлюз в Spring Boot с помощью Stripe в нашей демо-версии e- коммерческое приложение

Вступление

Оформление заказа – важная функция для приложения электронной коммерции, которая позволяет пользователю произвести оплату заказа. Мы будем использовать платежный шлюз Stripe для нашего приложения.

Сначала мы разработаем внутренний API, используя Java & Весенняя загрузка (в этом руководстве). После того, как API будет создан, мы будем использовать этот API в нашем Vue. Интерфейс Js (в будущих руководствах).

Живая демонстрация

Вы можете использовать эту ссылку , чтобы проверить интерфейс платежного шлюза.

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

Вы можете протестировать API по следующей ссылке. Сначала запустите код в вашем локальном, а затем перейдите по этой ссылке, и там в контроллере заказа вы найдете метод POST /order/create-checkout-session /.

Полный код вы можете найти по адресу Github .

Развязный API

Конечный результат чего Мы Строим

Предварительные условия:

  1. Знание Фреймворк Java и Spring Boot framework

  2. Набор для разработки Java (JDK)

  3. IntelliJ IDEA Ultimate — с открытым исходным кодом (рекомендуется)

  4. Хороший браузер (рекомендуется Chrome)

Структура проекта

Дизайн API

Создание сеанса проверки (POST)

В теле метода POST нам нужно будет отправить массив товаров в корзину. Каждый товар будет иметь цену, идентификатор продукта, название продукта, количество, идентификатор пользователя.

Следовательно, тело сообщения должно выглядеть следующим образом:

Полоса

В этом уроке мы будем использовать Stripe.js для создания платежного шлюза .

Прежде всего, нам нужен наш собственный API-ключ Stripe test. Так что продолжайте и создайте учетную запись на stripe, а затем с панели инструментов получите ключ API для целей тестирования. Сохраните этот ключ в файле application.properties как

STRIPE_SECRET_KEY= YOUR_KEY

Также в том же файле хранится baseUrl (URL-адрес интерфейса), который мы будем использовать, чтобы сообщить вам, что товары в корзине будут получены с этого URL-адреса.

baseURL=http://localhost:8081/

Ход учебного пособия

Построение TO, реализующего класс контроллера, Реализующий класс сервиса

Давайте закодируем

Теперь мы приступим к кодированию.

DTO (Объект Передачи Данных)

Теперь давайте обсудим дизайн DTO. Итак, обратитесь к структуре проекта и, чтобы создать to, создайте Java-класс с именем CheckoutItemDto. Мы будем использовать это для предоставления продуктов Stripe. В этом классе у нас будет пять полей:

  • название продукта: хранит название продукта

  • количество: магазины количество

  • цена: сохраняет цену

  • ProductID: хранит идентификатор продукта

  • идентификатор пользователя: хранит идентификатор пользователя

Создайте параметризованный конструктор, который принимает эти пять полей.

Создайте методы получения и установки для всех полей, и, следовательно, у нас есть dto, готовый к использованию. Ниже приведен полный код CheckoutItemDto.java

Контроллер

В контроллере, пакете, создайте контроллер заказа с именем OrderController.java . Этот контроллер будет использоваться для создания серверного API для платежного шлюза. Кроме того, нам нужен экземпляр класса OrderService из пакета услуг.

В классе OrderService мы определим бизнес-логику для интеграции платежного шлюза. Этот класс controller используется для обработки запроса POST и принятия тела запроса (т.е. товаров из корзины). Таким образом, тело запроса будет представлять собой список типа CheckoutItemDto Вот реализация метода POST.

Услуга

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

Мы аннотируем этот класс служебными и транзакционными аннотациями.

@Service
@Transactional
public class OrderService {

}

Мы отмечаем бобы с помощью @Serviceчтобы указать, что он содержит бизнес-логику. При использовании транзакционных аннотаций распространение транзакций обрабатывается автоматически.

Мы создадим методы

  1. создать сеанс: для создания сеанса я d

  2. Позиция CreateSession: для установки количества определенного продукта

  3. создание ценовых данных: для настройки валюты и индивидуальное название продукта

Нам нужно предоставить такие сведения, как название продукта, количество и цена, в Stripe API, следовательно, нам нужны эти функции.

создание Ценовых Данных

Эта функция вернет Session CreateParams. ЛинеЙный элемент. Данные о ценах объект, содержащий валюту и название товара. Эта функция получит объект Checkout Body D, в котором содержатся сведения о продукте.

Это гарантирует минимальное количество, которое клиент должен приобрести для сеанса оформления заказа. Используя setCurrency, мы устанавливаем требуемую валюту, которая должна состоять из трех букв код валюты ISO , в нижнем регистре и должна быть поддерживаемой валютой . Затем мы устанавливаем единичную сумму, передавая неотрицательное целое число, представляющее, сколько нужно взимать. Теперь, поскольку Stripe устанавливает цену продукта по умолчанию в центах, и мы знаем, что цент составляет 1/100 базовой денежной единицы, поэтому нужно умножить цену продукта на 100, чтобы получить цену в/| долларах США.

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

Создать элемент строки сеанса

Эта функция вернет объект, содержащий количество и цену определенного товара. Он получит объект CheckoutItemDto, который содержит подробную информацию о продукте.

Теперь, используя set Price Data, который вызовет create Price Data, который мы реализовали ранее, мы устанавливаем цену продукта в предоставленной валюте. Мы устанавливаем количество с помощью setQuantity – метода, для которого требуется значение типа данных Long.

Создает сессию

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

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

Итак, в сервисе заказа класс, в котором мы работаем, создает две переменные baseUrl и api Key, которые мы будем получать из application.properties, которые мы создали в начале.Аннотация @Value используется для присвоения значений из переменных среды Spring boot, т.е. из application.properties, переменным, которые мы хотим использовать.

@Value("${baseURL}")
private String baseURL;

@Value("${STRIPE_SECRET_KEY}")
private String apiKey;

Теперь, поскольку ранее мы использовали два вышеуказанных метода для определения цены и количества только одного товара.

Возможно, вам интересно, что делать, если у нас в корзине больше одного товара.

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

Поскольку метод элемента строки CreateSession возвращает параметр SessionCreateParams. Объект элемента строки мы будем сохранять каждый объект, полученный из функции элемента строки create Session, в списке вызываемых sessionItemsList типа SessionCreateParams. ЛинеЙный элемент .

Например, мы добавили три товара в кассу, которые вы можете увидеть ниже.

До сих пор мы сообщали Stripe цену и количество каждого продукта, который пользователь хочет заказать. Теперь начинается часть создания session_id для оплаты. Итак, для этого нам потребуется несколько основных вещей.

  1. мы установим режим оплаты в качестве оплаты корзины

  2. Мы установим URL-адрес успеха.то есть если платеж пройдет успешно, мы перенаправим пользователя на страницу оплаты/успеха, которую мы внедрим в руководстве по интерфейсу Vuejs.

  3. Если платеж не будет выполнен успешно, мы перенаправим пользователя на страницу “Платеж/ошибка”.

Затем, используя метод добавления всех позиций, мы передаем список сведений обо всех продуктах, которые мы храним в списке с именем sessionItemsList

Наконец, мы возвращаем объект сеанса, используя метод create, который принимает объект Session CreateParams, который мы определили выше.

Поздравляю!!!

Вы успешно создали серверную часть платежного шлюза с использованием Stripe и Java. Теперь в следующем руководстве мы создадим для того же самого интерфейсную часть, а затем завершим интеграцию платежного шлюза для нашего приложения электронной коммерции.

Следующие шаги

Мы опубликуем Vue.js руководство по интерфейсу для оформления заказа и отображения истории заказов для пользователей в будущем.

Оригинал: “https://dev.to/nilmadhabmondal/let-s-add-a-checkout-feature-in-spring-boot-for-our-ecommerce-app-5bii”