dev2
parent
393762d8be
commit
49fd335290
|
@ -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;
|
|
||||||
}
|
|
|
@ -1,9 +1,20 @@
|
||||||
package com.muyu.cloud.market.controller;
|
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.factory.Factory;
|
||||||
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
|
import com.muyu.cloud.market.config.AliPayConfig;
|
||||||
import com.muyu.cloud.market.domin.AliPay;
|
|
||||||
import com.muyu.cloud.market.mapper.OrderShowMapper;
|
import com.muyu.cloud.market.domin.Orders;
|
||||||
|
import com.muyu.cloud.market.service.OrderShowService;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
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.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
@ -12,31 +23,51 @@ import org.springframework.web.bind.annotation.RestController;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/alipay")
|
@RequestMapping("/alipay")
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class AliPayController {
|
public class AliPayController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
AliPayConfig aliPayConfig;
|
||||||
|
|
||||||
@Resource
|
@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
|
@GetMapping("/pay")
|
||||||
public String pay(AliPay aliPay) {
|
public void pay(Orders orders, HttpServletResponse httpResponse) throws Exception {
|
||||||
AlipayTradePagePayResponse response;
|
//编号
|
||||||
|
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 {
|
try {
|
||||||
// 发起API调用(以创建当面付收款二维码为例)
|
// 调用SDK生成表单
|
||||||
response = Factory.Payment.Page()
|
form = alipayClient.pageExecute(request).getBody();
|
||||||
.pay(aliPay.getSubject(), aliPay.getTraceNo(), aliPay.getTotalAmount(), "");
|
} catch (AlipayApiException e) {
|
||||||
} catch (Exception e) {
|
e.printStackTrace();
|
||||||
System.err.println("调用遭遇异常,原因:" + e.getMessage());
|
|
||||||
throw new RuntimeException(e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
return response.getBody();
|
httpResponse.setContentType("text/html;charset=" + CHARSET);
|
||||||
|
// 直接将完整的表单html输出到页面
|
||||||
|
httpResponse.getWriter().write(form);
|
||||||
|
httpResponse.getWriter().flush();
|
||||||
|
httpResponse.getWriter().close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/notify") // 注意这里必须是POST接口
|
@PostMapping("/notify") // 注意这里必须是POST接口
|
||||||
public String payNotify(HttpServletRequest request) throws Exception {
|
public String payNotify(HttpServletRequest request) throws Exception {
|
||||||
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
|
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
|
||||||
|
@ -52,8 +83,11 @@ public class AliPayController {
|
||||||
String tradeNo = params.get("out_trade_no");
|
String tradeNo = params.get("out_trade_no");
|
||||||
String gmtPayment = params.get("gmt_payment");
|
String gmtPayment = params.get("gmt_payment");
|
||||||
String alipayTradeNo = params.get("trade_no");
|
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("subject"));
|
||||||
System.out.println("交易状态: " + params.get("trade_status"));
|
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("买家在支付宝唯一id: " + params.get("buyer_id"));
|
||||||
System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
System.out.println("买家付款时间: " + params.get("gmt_payment"));
|
||||||
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
|
||||||
// 更新订单未已支付
|
// 更新订单为已支付
|
||||||
// ordersMapper.updateByordersState1()
|
Orders order = new Orders();
|
||||||
}
|
order.setOrdersId(Long.valueOf(tradeNo));
|
||||||
|
order.setOrdersState(2);
|
||||||
|
orderShowService.updateByordersState1ANDproductSales(order.getOrdersId()
|
||||||
|
,order.getOrdersProduct());}
|
||||||
}
|
}
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.muyu.cloud.market.service;
|
||||||
|
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.muyu.cloud.market.domin.Orders;
|
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.OrdersAddReq;
|
||||||
import com.muyu.cloud.market.domin.req.OrdersListReq;
|
import com.muyu.cloud.market.domin.req.OrdersListReq;
|
||||||
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
|
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
|
||||||
|
@ -93,7 +92,7 @@ public interface OrderShowService {
|
||||||
* (0待支付,1已付款,2未付款,3.售后(申请退款) 4.已退款)
|
* (0待支付,1已付款,2未付款,3.售后(申请退款) 4.已退款)
|
||||||
*/
|
*/
|
||||||
//订单修改支付状 //更改该商品的销量
|
//订单修改支付状 //更改该商品的销量
|
||||||
Result updateByordersState1ANDproductSales(Integer ordersId,Integer productId);
|
Result updateByordersState1ANDproductSales(Long ordersId, Integer productId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.muyu.cloud.market.service.impl;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.muyu.cloud.market.domin.Orders;
|
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.OrdersAddReq;
|
||||||
import com.muyu.cloud.market.domin.req.OrdersListReq;
|
import com.muyu.cloud.market.domin.req.OrdersListReq;
|
||||||
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
|
import com.muyu.cloud.market.domin.req.OrdersUpdReq;
|
||||||
|
@ -147,7 +146,7 @@ public class OrderShowServiceImpl implements OrderShowService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result updateByordersState1ANDproductSales(Integer ordersId, Integer productId) {
|
public Result updateByordersState1ANDproductSales(Long ordersId, Integer productId) {
|
||||||
|
|
||||||
Integer updateByordersState1 = orderShowMapper.updateByordersState1(ordersId);
|
Integer updateByordersState1 = orderShowMapper.updateByordersState1(ordersId);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue