统一多种支付方式创建订单的入参

This commit is contained in:
2025-01-07 14:31:43 +08:00
parent de73536d1c
commit ee676614f8
12 changed files with 47 additions and 26 deletions

View File

@@ -7,6 +7,7 @@ import com.ai.da.common.enums.OrderStatusEnum;
import com.ai.da.common.enums.PayTypeEnum;
import com.ai.da.mapper.primary.entity.OrderInfo;
import com.ai.da.mapper.primary.entity.RefundInfo;
import com.ai.da.model.dto.ProductPurchaseDTO;
import com.ai.da.service.*;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
@@ -55,12 +56,12 @@ public class AliPayServiceImpl implements AliPayService {
@Transactional(rollbackFor = Exception.class)
@Override
public String tradeCreate(Integer amount, String returnUrl, HttpServletRequest request) {
public String tradeCreate(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) {
try {
//生成订单
log.info("生成订单");
OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.ALIPAY.getType(), request);
OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.ALIPAY.getType(), request);
//调用支付宝接口
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
@@ -69,7 +70,7 @@ public class AliPayServiceImpl implements AliPayService {
alipayRequest.setNotifyUrl(config.getProperty("alipay.notify-url"));
//支付完成后我们想让页面跳转回aida的页面配置returnUrl
// alipayRequest.setReturnUrl(config.getProperty("alipay.return-url"));
alipayRequest.setReturnUrl(returnUrl);
alipayRequest.setReturnUrl(productPurchaseDTO.getReturnUrl());
//组装当前业务方法的请求参数
JSONObject bizContent = new JSONObject();

View File

@@ -11,6 +11,7 @@ import com.ai.da.mapper.primary.AccountMapper;
import com.ai.da.mapper.primary.entity.OrderInfo;
import com.ai.da.model.dto.AlipayHKCallbackDTO;
import com.ai.da.model.dto.AlipayHKRequestDTO;
import com.ai.da.model.dto.ProductPurchaseDTO;
import com.ai.da.service.*;
import com.alibaba.fastjson.JSONObject;
@@ -65,23 +66,23 @@ public class AlipayHKServiceImpl implements AlipayHKService {
* 创建订单
*/
@Override
public String createOrder(Integer amount, String wallet , HttpServletRequest request){
public String createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request){
try{
HashMap<String, Object> param = new HashMap<>();
String orderRef = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
param.put("order_ref", orderRef);
param.put("amount", Float.parseFloat(CreditsEventsEnum.PRICE.getValue()) * amount);
param.put("amount", Float.parseFloat(CreditsEventsEnum.PRICE.getValue()) * productPurchaseDTO.getQuantity());
param.put("subject", "AiDA Credits Purchase");
// ALIPAYHK 或者 ALIPAYCN
param.put("wallet", wallet);
param.put("wallet", productPurchaseDTO.getWallet());
param.put("segment_id", segmentId);
// param.put("payment_solution", "WAP");
param.put("payment_solution", "PC2MOBILE");
log.info("alipay-hk 创建订单,参数信息: {}", param);
// 生成订单
log.info("创建订单");
OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.ALIPAY_HK.getType(), request);
OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.ALIPAY_HK.getType(), request);
/*// 加密
AlipayHKRequestDTO alipayHKRequestDTO = alipayHKEncryptionUtil.AESCBCWithRSA(param, AlipayHKConstant.CREATE_ORDER);
// 请求Alipay服务端

View File

@@ -9,6 +9,7 @@ import com.ai.da.common.utils.paypalRequest.AuthenticationRequest;
import com.ai.da.common.utils.paypalRequest.WebhookVerifyRequest;
import com.ai.da.mapper.primary.entity.OrderInfo;
import com.ai.da.mapper.primary.entity.RefundInfo;
import com.ai.da.model.dto.ProductPurchaseDTO;
import com.ai.da.service.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
@@ -84,14 +85,14 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public HashMap<String, String> createOrder(Integer amount, String returnUrl, HttpServletRequest request) throws SerializeException {
public HashMap<String, String> createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) throws SerializeException {
// 生成订单
log.info("生成订单");
OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.PAYPAL.getType(), request);
OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.PAYPAL.getType(), request);
OrdersCreateRequest paypalRequest = new OrdersCreateRequest();
paypalRequest.header("prefer", "return=representation");
paypalRequest.requestBody(buildRequestBody(String.valueOf(orderInfo.getTotalFee()), returnUrl));
paypalRequest.requestBody(buildRequestBody(String.valueOf(orderInfo.getTotalFee()), productPurchaseDTO.getReturnUrl()));
HttpResponse<Order> response = null;
try {
response = payPalClient.client(mode, clientId, clientSecret).execute(paypalRequest);