Compare commits
6 Commits
423747d53a
...
ba1925da20
Author | SHA1 | Date |
---|---|---|
|
ba1925da20 | |
|
c542ca00f0 | |
|
3037df0b8c | |
|
000f20eae0 | |
|
49fd335290 | |
|
393762d8be |
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 订单款项状态(1已付款,2未付款,0待支付 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;
|
||||
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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.已退款)
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.muyu.cloud.market.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.muyu.cloud.market.domin.Company;
|
||||
import com.muyu.cloud.market.domin.Product;
|
||||
import com.muyu.cloud.market.domin.resp.UserCompanyResp;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package com.muyu.cloud.market.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.cloud.market.domin.User;
|
||||
import com.muyu.cloud.market.domin.req.LinkEmailReq;
|
||||
import com.muyu.cloud.market.domin.resp.UserCompanyResp;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package com.muyu.cloud.market.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.muyu.cloud.market.domin.Company;
|
||||
import com.muyu.cloud.market.domin.Product;
|
||||
import com.muyu.cloud.market.domin.User;
|
||||
import com.muyu.cloud.market.domin.req.CompanyListReq;
|
||||
import com.muyu.cloud.market.domin.resp.UserCompanyResp;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -54,9 +54,7 @@ spring:
|
|||
|
||||
alipay:
|
||||
appId: 9021000140633904
|
||||
appPrivateKey:
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCavSHP47iS43En9+MaR8ussAQmI9AbqhZYfb1yROE1ztMUmV9QJqmNiTdA2Tihn+srBG9AzVeJ/0XCqRlH8mFz5FXdsCG1M2EIPgiBYX58EJ565vAgHKRA/d/kKCA5MVkWYu6YiU/V2Pqw/X8K8/FNxXYvaHpjZwpjDqJCzvy4iK4DtM4QQoZRsVr0cOycYJSiC5A6+1wCpP4ZFNL9JdaQLCkLavAeRiRpwedtdW7B+malQEUomylZMwFaB0XJS+8oPlzqYf5RDyNYret4AZzfw0ke6fm3N7ygk3TTBZ9uKfqUNRHdpJ6/uIcHFE7MO16nyoxWHlM/u9i5vmxzhgKtAgMBAAECggEAdc+z85zUhXmHSL/x96tcBeGJdyRjKPzpwHwThfGtahNLIG7ZY6PcCbfECqqX9G5WVU0uCy+MC7QAgAHRDrcavWrGeV/FejlhEi5wuVjqPTlGABreDgTghd8E3Kg0SHcq9eFi+V3qG830qFaIqGUsfmLt5ZBtRktIXDzjC2yeezvV3IPHAQw5mTHmcbzz3WLJ8kuXV3gbOAPzV6Ig5pyp2NwdTMpg1Pn6Xfhf9reYnpkesW8Jph5c6P6bJZkQngC0TFQOpK3UfmFPq1dGfD5UcHjx1H4z09ny6rgXdRxvohDsgeiNmWY+rulzpQM8/DdUwwdmSACYAKgJSn6anCqzvQKBgQD6r/cEI/ShHZlLcS/vnc1W76KBpXx89luBo1NsbqwITSPKNktXpsocYuoxe4ednhBW69W71GfROQMw9zwiM1Gym9xs81Zys+IWySwd+J+T26Z1FoifPwW5ZA2cZYqzwZjg8Urw964cjZtmEhyBvGdzfRlFwvXi36ZB8b4wuOHsEwKBgQCeBJ/tGrGW15enkbmkCKSjFje7yVpjsB7ineuXd7QU3GVXNX9n35BvEcBkgx221woInEfyGsYnw13z1kwDPg2jh2tjVRSz2hjr7UNqeEXeuc366PHzoyJdl7K4ut7F5newzJhRqNKerLvTG8Ajta1NCnDevDVSYXgpso+Qw6iuPwKBgDWSJvJekKdhgOHLVVgaW8gpO4wDBkBaESH5+hjg6ah4e555zc30WZqJVMywPkHjhlBc43bZJDpkuZbcLqCMYPgPMKKjuaSXZkhCQ0hAWjGprb+1ygpl2F5O0E3MsUBKrdXcGoy2ESIO7Nd6JVdgIKdgY2cyC4OpEYlkFKWqzLS7AoGAQxR5g6D6VKuPAJ63LPBSW705yakPixQf+FnLwlAZjWWGS8A1JrZcTRo/Dywt+AlPhBo73IYLKqQgBTwqppG4HnyFVPSwRi1GuRjOrqsCFivQSjyLQb81/n9AanVBzscodlBUNQ4y4xM25MZ6CW69c+ADzDofdKpV5XWcxnqY5+cCgYEAoguI4wGcq1ULjOnt2BLhj2X4kU5UJZwFQuV8t5GDl9BoxO31qRCvu7cs3XtMsIaMn6Zvrg/bNjPF7sC1f0uXqCn3AlnVVTaG/jlI5QywJJflG33Hfa0K7j3ivGTU+AUL4LZbXOt9YR7vGjmItyAnZosdAogp50mOA1W0Jla+Aaw=
|
||||
alipayPublicKey:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7rRdHzrcyEdSOLPm3ITg+t/C3tGp9+wl739nOgFExrSD1j1C95tTRGUCqNUQtatiYmlAfwOKzkNhr/XEH/Vvpq5Ei8C4ZBWJqOMw7fQfBE6m5erO/FOuS4pyZCtQZyP9C5nhtYOupnGtq0fmgQaGKk657vszYSMEtpuQaZ5/odUYxRbYP3IHbcK+++PQBarfOdnhNcnR/Ry7TVOC3+da0dogmClPEconZQMwCJ81CJ7Hj4TKKyLTe9bz+J2tkUeNr9Mc72g4ljjftX7k0RBpBpi4HSHJ3SmPLhktiuDOeOGOef88pBgBtFV03/+aFpUEHx/imiHhBMBeNT3kqFV03QIDAQAB
|
||||
appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCBCZ4+TPuI+00ZLNdo2wuI8/glDJ+ksfJmWUzmOoSxd9FPPd86XwYWmyzktYh8Vw4c6DipHm3BjCVBiGIKYfk8TfsPMaz2ni3B2MxOgswnPCS+Erp5DlBz7/DMbiPOUfi15KGjB2Y3KF005NnWr9RrF4xR0bEyPdEOQhusfc7qtIintsgTTU0jDhSNLbIA4KuzXwaivAr8eBdy6uE2XO0Mq105UwtD4x7+QE8h/0QlPkS9VgMtyYMrxRBJLS85UatfjLiKcbdIT/wlOmGSoO2AlOzBjCgGZ55mEFbHnCNf0Pmn0Eaf9PLLoc5W4G5OZ7HvjBDzfV0lzzu98J83oA8DAgMBAAECggEAKCL2vsgxQUVxkNAa3Lmtl9bTK6sGiTL0hBNo0QAIwC7Vw0Eqizx9Z1CzIRy6LHrjn+g3n5sgZqCSAhVK8ZHR9YkH+4znEPrYnsAxpIYYvGd/wkOPDxJ9weIzU1M6/fUPWHyaLlyh1axPeaFphNbCSuFTOyvvYwJJYZb8hqXHU8eI0Wo15iMj9K4kcyQiUAQG16WvyXw1cX8Vt5v1r/7k1SdK8tUawzc47irlVihf3HESOX9IbcqL2CGF/3laXojSRvmgNe6Biw9MDJK7qOwrscwyNihZwcDgY6vxGZD5q9DUu6weILCLoNyceDXosOgQwKjVbOzWLj+4opSLgtluIQKBgQDtTJ7cnaK72INLdiNVbx2JtNMD1e1w/NJQvPQg12OC+hBd11U4lsU5GCmnOXshrHCgm4V761O2OMCIxsEFBPGKj1f33i4D3fGbqDwOmXPuYNLTUcIBpxm8h3RfUF3OkkAceYi9kDL5TkqgxO9zRVd9GsK27cPMo3k8zzmyCaomkQKBgQCLNODZDrNepV/vY50GFCzpqX7rdvJBXb1rtHk3JcOd8AsncSlEXLGk4TsLGvDwasBfCsBRC3FY08Ft0LgEyEv5e8DGWtPmu+Ya6ssCFwdjsOH8Ei+YtsB/672zdNtBl2vCkELECZu31659y2DGga0DVHvqmJPp3CqVWfjrQM+uUwKBgQCclkjmL6co6ZCKBST/xVjqe8Ya69nJCywFVwqJeVgTH8wZAHUd6G+wYz9pN8cGy3FuqfGFeh49SmnSV8Ua+M4irsBPse8PYi+ClZs7zwrvLDkydOreiFO1UnT6SF/+ZgekQpZ28GaSmJUqTYnsuL8osLX4XCEuMllYRS4/S51Z4QKBgGtQwYIz9g2h2fp3xca46QLdew3VLd88f9m3ULc18r8gHckzUMf12bEtPVJLW7FL6q+aXzZbZu8+l+CrxiFRtFhJkgyYWsGG21am6QfcbwLoit7DulO1l2NGfoEJNjoznIxqoD321kf9CvTJQ/rkX1ew2rK5G1ZvN5jZuq7J0REnAoGALww4e5u21/ZnayUp/dZcMiQ3+AcWVb/7I4r1lwKTUVkbKa91HsITpc7lk2U5xA2kGbBqLvS+Ok0tgiSKucRf3LDRRZx3uORBKb85GamsTIb//9+qaRWQH/oll6O/ziYrSw1QrhX/DoJpLgWyPZI+aAasFEB6JQs9Smkh1hDYGs0=
|
||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgQmePkz7iPtNGSzXaNsLiPP4JQyfpLHyZllM5jqEsXfRTz3fOl8GFpss5LWIfFcOHOg4qR5twYwlQYhiCmH5PE37DzGs9p4twdjMToLMJzwkvhK6eQ5Qc+/wzG4jzlH4teShowdmNyhdNOTZ1q/UaxeMUdGxMj3RDkIbrH3O6rSIp7bIE01NIw4UjS2yAOCrs18GorwK/HgXcurhNlztDKtdOVMLQ+Me/kBPIf9EJT5EvVYDLcmDK8UQSS0vOVGrX4y4inG3SE/8JTphkqDtgJTswYwoBmeeZhBWx5wjX9D5p9BGn/Tyy6HOVuBuTmex74wQ831dJc87vfCfN6APAwIDAQAB
|
||||
notifyUrl: http://rnkig5.natappfree.cc/alipay/notify
|
||||
returnUrl: http://localhost/market/apitest/index
|
||||
|
|
Loading…
Reference in New Issue