Мне нужно добавить плату за доставку в платеж с полосой. В настоящее время я добавлю плату за доставку в качестве пункта заказа с 1 Qunatity. Есть ли возможно добавить его в качестве отдельной платы?
ниже вы можете увидеть текущий платеж с помощью полосы реализации
< /p>
package com.gmart.gmart_api.service.impl;
import com.gmart.gmart_api.dto.paymentDto.PaymentResponseDto;
import com.gmart.gmart_api.exceptions.paymentExceptions.StripeSessionException;
import com.gmart.gmart_api.model.Order;
import com.gmart.gmart_api.model.OrderItem;
import com.gmart.gmart_api.repository.OrderRepository;
import com.gmart.gmart_api.service.ProductService;
import com.gmart.gmart_api.service.StripeService;
import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.Customer;
import com.stripe.model.checkout.Session;
import com.stripe.param.CustomerCreateParams;
import com.stripe.param.checkout.SessionCreateParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
@Service
public class StripeServiceImpl implements StripeService {
private final ProductService productService;
private final OrderRepository orderRepository;
@Autowired
public StripeServiceImpl(ProductService productService, OrderRepository orderRepository) {
this.productService = productService;
this.orderRepository =orderRepository;
}
@Value("${stripe.secretKey}")
private String secretKey;
public PaymentResponseDto checkoutProducts(BigDecimal amount, Order order) {
Stripe.apiKey = secretKey;
List lineItems = new ArrayList();
List orderItems = order.getOrderItems();
for (OrderItem item : orderItems) {
SessionCreateParams.LineItem.PriceData.ProductData productData =
SessionCreateParams.LineItem.PriceData.ProductData.builder()
.setName(item.getProduct().getProductName())
.build();
SessionCreateParams.LineItem.PriceData priceData =
SessionCreateParams.LineItem.PriceData.builder()
.setCurrency("LKR")
.setUnitAmount(item.getUnitPrice().multiply(BigDecimal.valueOf(100)).longValue())
.setProductData(productData)
.build();
SessionCreateParams.LineItem lineItem =
SessionCreateParams.LineItem.builder()
.setQuantity((long) item.getQuantity())
.setPriceData(priceData)
.build();
lineItems.add(lineItem);
}
BigDecimal shippingFee = BigDecimal.valueOf(123);
SessionCreateParams.LineItem.PriceData.ProductData shippingProductData =
SessionCreateParams.LineItem.PriceData.ProductData.builder()
.setName("Delivery Charges")
.build();
SessionCreateParams.LineItem.PriceData shippingPriceData =
SessionCreateParams.LineItem.PriceData.builder()
.setCurrency("LKR")
.setUnitAmount(shippingFee.multiply(BigDecimal.valueOf(100)).longValue()) // Convert LKR to cents
.setProductData(shippingProductData)
.build();
SessionCreateParams.LineItem shippingLineItem =
SessionCreateParams.LineItem.builder()
.setQuantity(1L)
.setPriceData(shippingPriceData)
.build();
// Add shipping fee to line items
lineItems.add(shippingLineItem);
Map metadata = new HashMap();
//metadata.put("orderId", order.getOrderId());
//metadata.put("userId", order.getSeller().getId());
//metadata.put("amount", amount.toString());
SessionCreateParams params = SessionCreateParams.builder()
.setMode(SessionCreateParams.Mode.PAYMENT)
.setCustomerEmail(order.getSeller().getEmail())
.setSuccessUrl("http://localhost:3000/seller/orders/success")
.setCancelUrl("http://localhost:3000/seller/orders/cancel")
.addAllLineItem(lineItems)
//.putMetadata("orderId", "order_test")
//.putMetadata("userId", order.getSeller().getId())
//.putAllMetadata(metadata)
.build();
CustomerCreateParams params1 =
CustomerCreateParams.builder().putMetadata("order_id", "6735").build();
try {
Session session = Session.create(params);
Customer customer = Customer.create(params1);
return PaymentResponseDto.builder()
.status("success")
.message("Session created successfully")
.sessionId(session.getId())
.sessionUrl(session.getUrl())
.build();
} catch (StripeException e) {
throw new StripeSessionException(e.getMessage());
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... pe-payment