From 16c60b7e3b834b05599882ab1ffe99ec78664762 Mon Sep 17 00:00:00 2001 From: tj <1378534974@qq.com> Date: 星期二, 01 四月 2025 15:22:26 +0800 Subject: [PATCH] 1.支付订单 --- src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java | 23 ++ src/main/java/com/mzl/flower/component/SequenceNo.java | 3 src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java | 69 ++++++ src/main/java/com/mzl/flower/enums/PayTypeEnum.java | 21 ++ src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java | 27 ++ src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java | 170 +++++++++++++++++ src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java | 38 ++- src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java | 52 +++++ src/main/java/com/mzl/flower/service/customer/CustomerService.java | 12 + src/main/java/com/mzl/flower/enums/ProductTypeEnum.java | 22 ++ src/main/java/com/mzl/flower/enums/PayStatusEnum.java | 23 ++ src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java | 24 ++ src/main/resources/mapper/productOrders/ProductOrdersMapper.xml | 27 ++ src/main/java/com/mzl/flower/utils/DateUtils.java | 9 src/main/java/com/mzl/flower/config/PyamentV3Configurer.java | 2 src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java | 16 + src/main/java/com/mzl/flower/entity/customer/Customer.java | 7 17 files changed, 531 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/mzl/flower/component/SequenceNo.java b/src/main/java/com/mzl/flower/component/SequenceNo.java index 76ce4cb..71864a7 100644 --- a/src/main/java/com/mzl/flower/component/SequenceNo.java +++ b/src/main/java/com/mzl/flower/component/SequenceNo.java @@ -22,6 +22,9 @@ public static final String ORDER_SETTLEMENT = "order_settlement";//结算单 + public static final String ORDER_PRODUCT = "order_product";//订单 + + public String getSeqNo(String code){ try{ List<Object> parameterList = new ArrayList<>(); diff --git a/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java b/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java index c138d66..5f52e64 100644 --- a/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java +++ b/src/main/java/com/mzl/flower/config/PyamentV3Configurer.java @@ -21,7 +21,7 @@ /** 商户API私钥路径 */ //public static String privateKeyPath = "/opt/pay/wx/v3/apiclient_key.pem"; - public static String privateKeyPath = "E://huamanyuan/apiclient_key.pem"; + public static String privateKeyPath = "D://apiclient_key.pem"; /** 商户证书序列号 */ public static String merchantSerialNumber = "37A08A552943EF34883614DBC8DE281598148757"; diff --git a/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java b/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java new file mode 100644 index 0000000..2a3f370 --- /dev/null +++ b/src/main/java/com/mzl/flower/dto/request/productOrders/ProductOrdersCreateDTO.java @@ -0,0 +1,52 @@ +package com.mzl.flower.dto.request.productOrders; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ProductOrdersCreateDTO { + /** + * 订单名称 + */ + @ApiModelProperty(value = "订单名称") + @NotEmpty(message = "订单名称不能为空") + private String orderName; + + /** + * 订单类型(连续包月、年卡等) + */ + @ApiModelProperty(value = "订单类型") + @NotEmpty(message = "订单类型不能为空") + private String orderType; + + /** + * 原价 + */ + @ApiModelProperty(value = "原价") + @NotNull(message = "原价不能为空") + private BigDecimal originalPrice; + + /** + * 现价_订单金额 + */ + @ApiModelProperty(value = "现价") + @NotNull(message = "现价不能为空") + private BigDecimal currentPrice; + + /** + * 支付方式(支付宝alipay、微信wechat等) + */ +// @ApiModelProperty(value = "支付方式") +// @NotEmpty(message = "支付方式不能为空") +// private String paymentMethod; + +} diff --git a/src/main/java/com/mzl/flower/entity/customer/Customer.java b/src/main/java/com/mzl/flower/entity/customer/Customer.java index a62cb78..e59773e 100644 --- a/src/main/java/com/mzl/flower/entity/customer/Customer.java +++ b/src/main/java/com/mzl/flower/entity/customer/Customer.java @@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; + @Data @TableName("t_customer_info") @@ -45,4 +47,9 @@ private Boolean isEnabled; @ApiModelProperty("等级id") private Long levelId; + + @ApiModelProperty("会员到期时间") + private LocalDateTime memberOvertime; + @ApiModelProperty("是否会员") + private Boolean isMember; } diff --git a/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java b/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java new file mode 100644 index 0000000..08e67d5 --- /dev/null +++ b/src/main/java/com/mzl/flower/entity/productOrders/ProductOrdersDO.java @@ -0,0 +1,69 @@ +package com.mzl.flower.entity.productOrders; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import java.time.LocalDateTime; +import com.mzl.flower.base.BaseEntity; +import com.mzl.flower.base.BaseNoIdEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @author generator@TaoJie + * @since 2025-03-31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_product_orders") +public class ProductOrdersDO extends BaseEntity { + + + /** + * 用户id + */ + private String userId; + + /** + * 订单编号(唯一编号) + */ + private String orderNo; + + /** + * 订单名称 + */ + private String orderName; + + /** + * 订单类型(连续包月、年卡等) + */ + private String orderType; + + /** + * 原价 + */ + private BigDecimal originalPrice; + + /** + * 现价_订单金额 + */ + private BigDecimal currentPrice; + + /** + * 支付方式(支付宝alipay、微信wechat等) + */ + private String paymentMethod; + + /** + * 订单状态(待支付paying、已支付paid 、取消cancel等) + */ + private String paymentStatus; + + /** + * 支付时间 + */ + private LocalDateTime paymentTime; + + +} diff --git a/src/main/java/com/mzl/flower/enums/PayStatusEnum.java b/src/main/java/com/mzl/flower/enums/PayStatusEnum.java new file mode 100644 index 0000000..6e52c48 --- /dev/null +++ b/src/main/java/com/mzl/flower/enums/PayStatusEnum.java @@ -0,0 +1,23 @@ +package com.mzl.flower.enums; + +import lombok.Getter; + +public enum PayStatusEnum { + + PAYING("PAYING","待支付"), + PAID("PAID","已支付"), + CANCEL("CANCEL","取消"), + FINISHED("FINISHED","完成"), + + ; + + @Getter + private String name; + + private String desc; + private PayStatusEnum(String name, String desc){ + this.name=name; + this.desc=desc; + } + +} diff --git a/src/main/java/com/mzl/flower/enums/PayTypeEnum.java b/src/main/java/com/mzl/flower/enums/PayTypeEnum.java new file mode 100644 index 0000000..c0eeb1a --- /dev/null +++ b/src/main/java/com/mzl/flower/enums/PayTypeEnum.java @@ -0,0 +1,21 @@ +package com.mzl.flower.enums; + +import lombok.Getter; + +public enum PayTypeEnum { + + ALIPAY("alipay","支付宝"), + WECHAT("wechat","微信"), + + ; + + @Getter + private String name; + + private String desc; + private PayTypeEnum(String name, String desc){ + this.name=name; + this.desc=desc; + } + +} diff --git a/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java b/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java new file mode 100644 index 0000000..d734f64 --- /dev/null +++ b/src/main/java/com/mzl/flower/enums/ProductTypeEnum.java @@ -0,0 +1,22 @@ +package com.mzl.flower.enums; + +import lombok.Getter; + +public enum ProductTypeEnum { + + MONTH_CONTINUED("连续包月","连续包月"), + YEAR("年卡","年卡"), + MONTH("月卡","月卡") + + ; + + @Getter + private String name; + + private String desc; + private ProductTypeEnum(String name, String desc){ + this.name=name; + this.desc=desc; + } + +} diff --git a/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java b/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java new file mode 100644 index 0000000..71a1dad --- /dev/null +++ b/src/main/java/com/mzl/flower/enums/alipay/AlipayResultEnum.java @@ -0,0 +1,23 @@ +package com.mzl.flower.enums.alipay; + +import lombok.Getter; + +public enum AlipayResultEnum { + + WAIT_BUYER_PAY("WAIT_BUYER_PAY","交易创建,等待买家付款。"), + TRADE_CLOSED("TRADE_CLOSED","未付款交易超时关闭,或支付完成后全额退款。"), + TRADE_SUCCESS("TRADE_SUCCESS","交易支付成功。"), + TRADE_FINISHED("TRADE_FINISHED","交易结束,不可退款。"), + + ; + + @Getter + private String name; + + private String desc; + private AlipayResultEnum(String name, String desc){ + this.name=name; + this.desc=desc; + } + +} diff --git a/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java b/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java new file mode 100644 index 0000000..13465cd --- /dev/null +++ b/src/main/java/com/mzl/flower/mapper/productOrders/ProductOrdersMapper.java @@ -0,0 +1,16 @@ +package com.mzl.flower.mapper.productOrders; + +import com.mzl.flower.entity.productOrders.ProductOrdersDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * <p> + * Mapper 接口 + * </p> + * + * @author generator@TaoJie + * @since 2025-03-31 + */ +public interface ProductOrdersMapper extends BaseMapper<ProductOrdersDO> { + +} diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerService.java b/src/main/java/com/mzl/flower/service/customer/CustomerService.java index 3c04fc6..1c9ae43 100644 --- a/src/main/java/com/mzl/flower/service/customer/CustomerService.java +++ b/src/main/java/com/mzl/flower/service/customer/CustomerService.java @@ -26,6 +26,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import javax.annotation.Resource; @@ -264,4 +265,15 @@ customerByPhone.setContactTel(phone); return customerByPhone; } + public Customer getByUserId(String userId) { + List<Customer> customers = customerMapper.selectList(new LambdaQueryWrapper<Customer>().eq(Customer::getUserId, userId).eq(Customer::getDeleted, TrueOrFalseEnum.FALSE.isFlag())); + if(!CollectionUtils.isEmpty(customers)){ + return customers.get(0); + } + return null; + } + + public void updateMemberInfo(Customer customer) { + customerMapper.updateById(customer); + } } diff --git a/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java new file mode 100644 index 0000000..900be8d --- /dev/null +++ b/src/main/java/com/mzl/flower/service/impl/productOrders/ProductOrdersServiceImpl.java @@ -0,0 +1,170 @@ +package com.mzl.flower.service.impl.productOrders; + +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mzl.flower.component.SequenceNo; +import com.mzl.flower.config.security.SecurityUtils; +import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO; +import com.mzl.flower.entity.customer.Customer; +import com.mzl.flower.entity.productOrders.ProductOrdersDO; +import com.mzl.flower.enums.PayStatusEnum; +import com.mzl.flower.enums.ProductTypeEnum; +import com.mzl.flower.enums.alipay.AlipayResultEnum; +import com.mzl.flower.mapper.productOrders.ProductOrdersMapper; +import com.mzl.flower.service.customer.CustomerService; +import com.mzl.flower.service.productOrders.ProductOrdersService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mzl.flower.utils.DateUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + * <p> + * 服务实现类 + * </p> + * + * @author generator@TaoJie + * @since 2025-03-31 + */ +@Service +public class ProductOrdersServiceImpl extends ServiceImpl<ProductOrdersMapper, ProductOrdersDO> implements ProductOrdersService { + + @Autowired + private ProductOrdersMapper productOrdersMapper; + + @Autowired + private SequenceNo sequenceNo; + + @Autowired + private CustomerService customerService; + + + @Transactional + @Override + public ProductOrdersDO createProductOrders(ProductOrdersDO productOrdersDO) { + + String userId = SecurityUtils.getUserId(); + +// ProductOrdersDO productOrdersDO = new ProductOrdersDO(); + + productOrdersDO.setId(IdUtil.simpleUUID()); + + productOrdersDO.setUserId(userId); + + // 待支付 + productOrdersDO.setPaymentStatus(PayStatusEnum.PAYING.getName()); + + + productOrdersDO.setOrderNo(getSalesNo()); + + + productOrdersDO.create(userId); + + + int insert = productOrdersMapper.insert(productOrdersDO); + + return productOrdersMapper.selectById(productOrdersDO.getId()); + } + + @Transactional + @Override + public Boolean updateProductOrderStatus(Map<String, String> params) { + String orderNo = params.get("out_trade_no"); // 本系统对应的订单好 + String tradeNo = params.get("trade_no"); //支付宝交易号。支付宝交易凭证号。 + String tradeStatus = params.get("trade_status"); //交易状态。咨询目前所处的状态。 + String gmtPayment = params.get("gmt_payment"); // 交易 付款时间。该笔交易的买家付款时间。格式为 yyyy-MM-dd HH:mm:ss。 + String gmtRefund = params.get("gmt_refund"); // 交易退款时间。该笔交易的退款时间。格式 为 yyyy-MM-dd HH:mm:ss.SS。 + String gmtClose = params.get("gmt_close"); // 交易退款时间。该笔交易的退款时间。格式 为 yyyy-MM-dd HH:mm:ss.SS。 + + + // 根据orderNo 查找订单 + QueryWrapper<ProductOrdersDO> queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProductOrdersDO::getDeleted, false) + .eq(ProductOrdersDO::getOrderNo, orderNo); + List<ProductOrdersDO> productOrdersDOS = productOrdersMapper.selectList(queryWrapper); + if(!CollectionUtils.isEmpty(productOrdersDOS)){ + + ProductOrdersDO productOrdersDO = productOrdersDOS.get(0); + + if(tradeStatus.equals(AlipayResultEnum.TRADE_CLOSED.getName())){ + // 未付款交易超时关闭,或支付完成后全额退款 + productOrdersDO.setPaymentStatus(PayStatusEnum.CANCEL.getName()); + } + if(tradeStatus.equals(AlipayResultEnum.TRADE_SUCCESS.getName())){ + // 交易支付成功 + productOrdersDO.setPaymentStatus(PayStatusEnum.PAID.getName()); + } + if(tradeStatus.equals(AlipayResultEnum.TRADE_FINISHED.getName())){ + // 交易完成(交易结束,不可退款) + productOrdersDO.setPaymentStatus(PayStatusEnum.FINISHED.getName()); + } + // 将yyyy-MM-dd HH:mm:ss转换成LocalDateTime + if(gmtPayment != null){ + productOrdersDO.setPaymentTime(DateUtils.dateTimeStringToLocalDateTime(gmtPayment)); + } + + + // 更新用户到期时间 + if(!StringUtils.isEmpty(productOrdersDO.getUserId())){ + Customer customer = customerService.getByUserId(productOrdersDO.getUserId()); + if(customer != null){ + LocalDateTime overTime = null; + // 根据年卡,月卡、月卡持续计算到期时间 + if(productOrdersDO.getOrderType().equals(ProductTypeEnum.MONTH_CONTINUED.getName())){ + if(null!=customer.getMemberOvertime()){ + // 在当前时间上增加一个月 + overTime = customer.getMemberOvertime().plusMonths(1); + }else{ + // 当前时间上增加一个月 + overTime =LocalDateTime.now().plusMonths(1); + } + } + if(productOrdersDO.getOrderType().equals(ProductTypeEnum.MONTH.getName())){ + if(null!=customer.getMemberOvertime()){ + // 在当前时间上增加一个月 + overTime = customer.getMemberOvertime().plusMonths(1); + }else{ + // 当前时间上增加一个月 + overTime =LocalDateTime.now().plusMonths(1); + } + } + if(productOrdersDO.getOrderType().equals(ProductTypeEnum.YEAR.getName())){ + if(null!=customer.getMemberOvertime()){ + // 在当前时间上增加一个月 + overTime = customer.getMemberOvertime().plusYears(1); + }else{ + // 当前时间上增加一个月 + overTime = customer.getMemberOvertime().plusYears(1); + } + + } + // 设置过期时间 + customer.setMemberOvertime(overTime); + customer.setIsMember(true); // 会员 + } + + // 更新会员信息 + customerService.updateMemberInfo(customer); + } + + + return productOrdersMapper.updateById(productOrdersDO)>0; + + } + + return false; + } + + private String getSalesNo(){ + String seq = sequenceNo.getSeqNo(SequenceNo.ORDER_PRODUCT); + return "PO" + DateUtils.format(LocalDateTime.now(), "yyyyMMddHHmmss") + seq; + } +} diff --git a/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java b/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java new file mode 100644 index 0000000..86b8c3e --- /dev/null +++ b/src/main/java/com/mzl/flower/service/productOrders/ProductOrdersService.java @@ -0,0 +1,27 @@ +package com.mzl.flower.service.productOrders; + +import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO; +import com.mzl.flower.entity.productOrders.ProductOrdersDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + * <p> + * 服务类 + * </p> + * + * @author generator@TaoJie + * @since 2025-03-31 + */ +public interface ProductOrdersService extends IService<ProductOrdersDO> { + + /** + * 创建订单 + * @param productOrdersDO + * @return + */ + ProductOrdersDO createProductOrders(ProductOrdersDO productOrdersDO); + + Boolean updateProductOrderStatus(Map<String, String> params); +} diff --git a/src/main/java/com/mzl/flower/utils/DateUtils.java b/src/main/java/com/mzl/flower/utils/DateUtils.java index 9970c68..1ea90d5 100644 --- a/src/main/java/com/mzl/flower/utils/DateUtils.java +++ b/src/main/java/com/mzl/flower/utils/DateUtils.java @@ -4,6 +4,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; @@ -113,6 +114,14 @@ } + public static String format(LocalDateTime dateTime, String format) { + if (dateTime == null || format == null) { + return null; + } + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format).withZone(ZoneId.of("Asia/Shanghai")); + return dateTimeFormatter.format(dateTime); + } + public static void main(String[] args) { // 定义日期时间字符串 diff --git a/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java b/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java new file mode 100644 index 0000000..8cbb8d5 --- /dev/null +++ b/src/main/java/com/mzl/flower/web/v2/ProductOrdersController.java @@ -0,0 +1,24 @@ +package com.mzl.flower.web.v2; + + +import com.mzl.flower.base.BaseController; +import com.mzl.flower.service.productOrders.ProductOrdersService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** +* @author generator@TaoJie +* @since 2025-03-31 +*/ +@RestController +@RequestMapping("/v1/product-orders") +public class ProductOrdersController extends BaseController { + + @Autowired + private ProductOrdersService productOrdersService; + + + + +} diff --git a/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java b/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java index d4b73a0..7dbab6b 100644 --- a/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java +++ b/src/main/java/com/mzl/flower/web/v2/pay/AlipayController.java @@ -10,13 +10,19 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.config.pay.AlipayProperties; +import com.mzl.flower.dto.request.productOrders.ProductOrdersCreateDTO; +import com.mzl.flower.entity.productOrders.ProductOrdersDO; +import com.mzl.flower.enums.PayTypeEnum; +import com.mzl.flower.service.productOrders.ProductOrdersService; import com.mzl.flower.utils.alipay.OrderInfoUtil2_0; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.*; @@ -38,33 +44,36 @@ @Autowired AlipayClient alipayClient; + @Autowired + private ProductOrdersService productOrdersService; + /** * 获取订单支付请求参数 * @param * @return * @throws Exception */ - @GetMapping(value = "/pay-order-info") + @PostMapping(value = "/pay-order-info") @ApiOperation(value = "获取订单支付请求参数") - public ResponseEntity getPayOrderInfo() throws Exception { + public ResponseEntity getPayOrderInfo(@Validated @RequestBody ProductOrdersCreateDTO productOrdersCreateDTO) throws Exception { - String orderId=" "; - String totalAmount="0.01"; - String subject="测试支付"; - String body="我是测试支付"; -// 创建订单 -// createAlipayOrder(orderId,totalAmount,subject); + // 创建订单 + // 当前的支付类型是微信支付 + ProductOrdersDO productOrdersDTO=new ProductOrdersDO(); + BeanUtils.copyProperties(productOrdersCreateDTO,productOrdersDTO); + productOrdersDTO.setPaymentMethod(PayTypeEnum.ALIPAY.getName()); + + ProductOrdersDO productOrdersDO=productOrdersService.createProductOrders(productOrdersDTO); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); - model.setBody("我是测试数据"); - model.setSubject("App支付测试Java"); - model.setOutTradeNo(OrderInfoUtil2_0.getOutTradeNo()); -// model.setOutTradeNo(orderId); + model.setBody(productOrdersDO.getOrderType()+"_"+productOrdersDO.getCurrentPrice()); + model.setSubject(productOrdersDO.getOrderName()); + model.setOutTradeNo(productOrdersDO.getOrderNo()); + model.setTotalAmount(productOrdersDO.getCurrentPrice()+""); model.setTimeoutExpress("30m"); - model.setTotalAmount("0.01"); model.setProductCode("QUICK_MSECURITY_PAY"); request.setBizModel(model); request.setNotifyUrl(alipayProperties.getNotifyUrl()); @@ -111,6 +120,9 @@ // 查看验签结果 System.out.println(rsa2); if(rsa2){ + // 更新支付状态 + productOrdersService.updateProductOrderStatus(params); + return "success"; } diff --git a/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml b/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml new file mode 100644 index 0000000..f3d69aa --- /dev/null +++ b/src/main/resources/mapper/productOrders/ProductOrdersMapper.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.mzl.flower.mapper.productOrders.ProductOrdersMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.mzl.flower.entity.productOrders.ProductOrdersDO"> + <id column="id" property="id" /> + <result column="create_time" property="createTime" /> + <result column="update_time" property="updateTime" /> + <result column="delete_time" property="deleteTime" /> + <result column="user_id" property="userId" /> + <result column="order_no" property="orderNo" /> + <result column="order_name" property="orderName" /> + <result column="order_type" property="orderType" /> + <result column=" +original_price" property=" +originalPrice" /> + <result column="current_price" property="currentPrice" /> + <result column="payment_method" property="paymentMethod" /> + <result column="payment_status" property="paymentStatus" /> + <result column="payment_time" property="paymentTime" /> + <result column="update_by" property="updateBy" /> + <result column="create_by" property="createBy" /> + <result column="deleted" property="deleted" /> + </resultMap> + +</mapper> -- Gitblit v1.9.3