Merge branch 'dev2'

dev2
Aaaaaaaa 2024-09-04 10:22:37 +08:00
commit c542ca00f0
6 changed files with 68 additions and 42 deletions

View File

@ -1,11 +0,0 @@
package com.muyu.cloud.market.domin;
import lombok.Data;
@Data
public class AliPay {
private String traceNo;
private String totalAmount;
private String subject;
// private String alipayTraceNo;
}

View File

@ -2,6 +2,7 @@ package com.muyu.cloud.market.domin;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -29,6 +30,7 @@ public class Orders extends BaseEntity {
/**
*
*/
@Excel(name = "订单编号")
private String ordersNum;
/**
@ -44,21 +46,25 @@ public class Orders extends BaseEntity {
/**
*
*/
@Excel ( name ="订单金额")
private BigDecimal ordersPrice;
/**
*
*/
@Excel(name = "订单规格")
private String ordersSpecification;
/**
* 120 3.(退) 4.退
*/
@Excel(name = "订单款项状态")
private Integer ordersState;
/**
*
*/
@Excel(name = "订单日期")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private Date ordersLaunchdate;
@ -66,6 +72,7 @@ public class Orders extends BaseEntity {
/**
*
*/
@Excel(name = "逻辑删除字段")
private Integer exist;
/**
@ -76,6 +83,7 @@ public class Orders extends BaseEntity {
/**
*
*/
@Excel(name = "产品名称")
private String productName;
//用户模块(要使用外键)
@ -87,6 +95,7 @@ public class Orders extends BaseEntity {
/**
*
*/
@Excel(name = "用户账号")
private String userName;

View File

@ -1,9 +1,20 @@
package com.muyu.cloud.market.controller;
import com.alipay.api.AbstractAlipayClient;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import com.muyu.cloud.market.domin.AliPay;
import com.muyu.cloud.market.mapper.OrderShowMapper;
import com.muyu.cloud.market.config.AliPayConfig;
import com.muyu.cloud.market.domin.Orders;
import com.muyu.cloud.market.service.OrderShowService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@ -12,31 +23,51 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/alipay")
@Transactional(rollbackFor = Exception.class)
public class AliPayController {
@Resource
AliPayConfig aliPayConfig;
@Resource
private OrderShowMapper ordersMapper;
OrderShowService orderShowService;
private static final String GATEWAY_URL ="https://openapi-sandbox.dl.alipaydev.com/gateway.do";
private static final String FORMAT ="JSON";
private static final String CHARSET ="utf-8";
private static final String SIGN_TYPE ="RSA2";
private static final String PAY_SUCCESS="支付成功";
@GetMapping("/pay") // &subject=xxx&traceNo=xxx&totalAmount=xxx
public String pay(AliPay aliPay) {
AlipayTradePagePayResponse response;
@GetMapping("/pay")
public void pay(Orders orders, HttpServletResponse httpResponse) throws Exception {
//编号
orders.setOrdersNum(UUID.randomUUID().toString().replace("-",""));
AlipayClient alipayClient = new DefaultAlipayClient(GATEWAY_URL, aliPayConfig.getAppId(),
aliPayConfig.getAppPrivateKey(), FORMAT, CHARSET, aliPayConfig.getAlipayPublicKey(), SIGN_TYPE);
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setNotifyUrl(aliPayConfig.getNotifyUrl());
request.setBizContent("{\"out_trade_no\":\"" + orders.getOrdersNum() + "\","
+ "\"total_amount\":\"" + orders.getOrdersPrice() + "\","
+ "\"subject\":\"" + orders.getProductName() + "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
// request.setReturnUrl("");//回调接口
String form = "";
try {
// 发起API调用以创建当面付收款二维码为例
response = Factory.Payment.Page()
.pay(aliPay.getSubject(), aliPay.getTraceNo(), aliPay.getTotalAmount(), "");
} catch (Exception e) {
System.err.println("调用遭遇异常,原因:" + e.getMessage());
throw new RuntimeException(e.getMessage(), e);
// 调用SDK生成表单
form = alipayClient.pageExecute(request).getBody();
} catch (AlipayApiException e) {
e.printStackTrace();
}
return response.getBody();
httpResponse.setContentType("text/html;charset=" + CHARSET);
// 直接将完整的表单html输出到页面
httpResponse.getWriter().write(form);
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
@PostMapping("/notify") // 注意这里必须是POST接口
public String payNotify(HttpServletRequest request) throws Exception {
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
@ -52,8 +83,11 @@ public class AliPayController {
String tradeNo = params.get("out_trade_no");
String gmtPayment = params.get("gmt_payment");
String alipayTradeNo = params.get("trade_no");
String sign=params.get("sign");
String content = AlipaySignature.getSignCheckContentV1(params);
boolean checkContent = AlipaySignature.rsa256CheckContent(content, sign, aliPayConfig.getAlipayPublicKey(), "UTF-8");
// 支付宝验签
if (Factory.Payment.Common().verifyNotify(params)) {
if (checkContent) {
// 验签通过
System.out.println("交易名称: " + params.get("subject"));
System.out.println("交易状态: " + params.get("trade_status"));
@ -63,10 +97,14 @@ public class AliPayController {
System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
System.out.println("买家付款时间: " + params.get("gmt_payment"));
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
// 更新订单未已支付
// ordersMapper.updateByordersState1()
}
// 更新订单为已支付
Orders order = new Orders();
order.setOrdersId(Long.valueOf(tradeNo));
order.setOrdersState(2);
orderShowService.updateByordersState1ANDproductSales(Math.toIntExact(order.getOrdersId())
,order.getOrdersProduct());}
}
return "success";
}
}

View File

@ -141,13 +141,6 @@ public class OrdersController {
excelUtil.exportExcel(response,list,"订单信息选中导出");
}
@GetMapping("/delByOrderId/{ordersName}")
@Operation(summary = "彻订单", description = "根据根据orderid删除数据库字段")
Result delByOrderName(@Validated @PathVariable("ordersName") Integer ordersName){
return orderShowService.delByOrderId(ordersName);
}
/**
* 1,
* 0,1,2,3.(退) 4.退

View File

@ -2,7 +2,6 @@ package com.muyu.cloud.market.service;
import com.github.pagehelper.PageInfo;
import com.muyu.cloud.market.domin.Orders;
import com.muyu.cloud.market.domin.User;
import com.muyu.cloud.market.domin.req.OrdersAddReq;
import com.muyu.cloud.market.domin.req.OrdersListReq;
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
@ -93,7 +92,7 @@ public interface OrderShowService {
* 0,1,2,3.(退) 4.退
*/
//订单修改支付状 //更改该商品的销量
Result updateByordersState1ANDproductSales(Integer ordersId,Integer productId);
Result updateByordersState1ANDproductSales(Integer ordersId, Integer productId);

View File

@ -3,7 +3,6 @@ package com.muyu.cloud.market.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.muyu.cloud.market.domin.Orders;
import com.muyu.cloud.market.domin.User;
import com.muyu.cloud.market.domin.req.OrdersAddReq;
import com.muyu.cloud.market.domin.req.OrdersListReq;
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
@ -146,7 +145,6 @@ public class OrderShowServiceImpl implements OrderShowService {
return orderShowMapper.getSeleOut(ids);
}
@Override
public Result updateByordersState1ANDproductSales(Integer ordersId, Integer productId) {
Integer updateByordersState1 = orderShowMapper.updateByordersState1(ordersId);