249 lines
8.6 KiB
Java
249 lines
8.6 KiB
Java
package com.fate.firm.controller;
|
||
|
||
import com.alipay.api.DefaultAlipayClient;
|
||
import com.alipay.api.internal.util.AlipaySignature;
|
||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||
import com.fate.common.datasource.annotation.Master;
|
||
import com.fate.common.core.domain.Result;
|
||
import com.fate.common.core.web.controller.BaseController;
|
||
import com.fate.firm.config.AlipayConfig;
|
||
import com.fate.firm.domain.Firm;
|
||
import com.fate.firm.domain.request.FirmRequest;
|
||
import com.fate.firm.service.FirmService;
|
||
import lombok.extern.log4j.Log4j2;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.validation.annotation.Validated;
|
||
import org.springframework.web.bind.annotation.*;
|
||
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.servlet.http.HttpServletResponse;
|
||
import java.io.PrintWriter;
|
||
import java.util.HashMap;
|
||
import java.util.Iterator;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* <p>
|
||
* 企业公司 前端控制器
|
||
* </p>
|
||
*
|
||
* @author sikadi
|
||
* @since 2023-11-18 06:27:02
|
||
*/
|
||
@RestController
|
||
@RequestMapping("/firm")
|
||
@Log4j2
|
||
@Master // = fate-fate
|
||
// fate-fate -> t_firm
|
||
public class FirmController extends BaseController {
|
||
@Autowired
|
||
private FirmService firmService;
|
||
|
||
@Autowired
|
||
private HttpServletRequest request;
|
||
|
||
|
||
/**
|
||
* 添加企业入驻
|
||
*
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/20 10:45
|
||
* @param: [firm]
|
||
* @return: com.fate.common.core.domain.Result
|
||
**/
|
||
@PostMapping("/addFirm")
|
||
public Result addFirm(@RequestBody FirmRequest firmRequest) {
|
||
Result result = firmService.addFirm(Firm.addReqBuild(firmRequest));
|
||
return Result.success("成功");
|
||
}
|
||
|
||
/**
|
||
* 修改信息
|
||
*
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/20 13:19
|
||
* @param: [firm]
|
||
* @return: com.fate.common.core.domain.Result
|
||
**/
|
||
@PostMapping("/updateFirm")
|
||
public Result updateLL(@RequestBody @Validated FirmRequest firmRequest) {
|
||
Result result = firmService.updateFirm(Firm.addReqBuild(firmRequest));
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* 修改信息
|
||
*
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/20 13:19
|
||
* @param: [firm]
|
||
* @return: com.fate.common.core.domain.Result
|
||
**/
|
||
@PostMapping("/updateStatus")
|
||
public Result updateStatus(@RequestBody @Validated FirmRequest firm) {
|
||
Result result = firmService.updateStatus(Firm.addReqBuild(firm));
|
||
return result;
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 查询企业的信息
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/21 13:35
|
||
* @param: [firmRequest]
|
||
* @return: com.fate.common.core.domain.Result<java.util.List<com.fate.firm.domain.Firm>>
|
||
**/
|
||
@PostMapping("/list")
|
||
public Result<List<Firm>> list(@RequestBody FirmRequest firmRequest) {
|
||
List<Firm> list = firmService.listSel(Firm.addReqBuild(firmRequest));
|
||
return Result.success(list);
|
||
}
|
||
|
||
/**
|
||
* 判断是否为管理查询列表
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/20 10:24
|
||
* @param: []
|
||
* @return: com.fate.common.core.domain.Result<java.util.List < com.fate.firm.domain.Firm>>
|
||
**/
|
||
@GetMapping("/listAll")
|
||
public Result<List<Firm>> listAll() {
|
||
List<Firm> list = firmService.list();
|
||
return Result.success(list);
|
||
}
|
||
|
||
|
||
/**
|
||
* 删除数据
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/20 22:22
|
||
* @param: [firmRequest]
|
||
* @return: com.fate.common.core.domain.Result
|
||
**/
|
||
@PostMapping("/deleteFirm")
|
||
public Result deleteFirm(@RequestBody @Validated Firm firm){
|
||
Result result = firmService.deleteFirm(firm);
|
||
return result;
|
||
}
|
||
|
||
/**
|
||
* 管理审核是否通过
|
||
* @author: ZhuoXin
|
||
* @date: 2023/11/24 9:27
|
||
* @param: [firm]
|
||
* @return: com.fate.common.core.domain.Result
|
||
**/
|
||
@PostMapping("/manage")
|
||
public Result manage(@RequestBody FirmRequest firmRequest){
|
||
|
||
Result result = firmService.manage(Firm.addReqBuild(firmRequest));
|
||
|
||
return result;
|
||
}
|
||
|
||
@RequestMapping("/index")
|
||
public String firmIndex(){
|
||
return "index";
|
||
}
|
||
|
||
|
||
@RequestMapping("/showFirm")
|
||
public void showFirm(HttpServletRequest request , HttpServletResponse httpServletResponse) throws Exception {
|
||
// 获取初始化的AlipayClient
|
||
DefaultAlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAY_URL, AlipayConfig.APP_ID, AlipayConfig.MERCHANT_PRIVATE_KEY, "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);
|
||
|
||
// 设置请求参数
|
||
AlipayTradePagePayRequest alipayTradePagePayRequest = new AlipayTradePagePayRequest();
|
||
alipayTradePagePayRequest.setReturnUrl(AlipayConfig.RETURN_URL);
|
||
alipayTradePagePayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);
|
||
|
||
//商家订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
|
||
String wiDoutTradeNo = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"), "UTF-8");
|
||
// 付款金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
|
||
String totalAmount = new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"), "UTF-8");
|
||
// 订单名称,粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
|
||
String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"), "UTF-8");
|
||
// 商品描述,可以为空
|
||
String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"), "UTF-8");
|
||
|
||
alipayTradePagePayRequest.setBizContent("{\"out_trade_no\":\"" + wiDoutTradeNo + "\"," +
|
||
"\"total_amount\":\"" + totalAmount + "\"," +
|
||
"\"subject\":\"" + subject + "\"," +
|
||
"\"body\":\"" + body + "\"," +
|
||
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
|
||
|
||
// 请求支付宝进行支付
|
||
|
||
// 构建支付宝官服支付页面
|
||
String top = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" +
|
||
"<html>\n" +
|
||
"<head>\n" +
|
||
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" +
|
||
"<title>付款</title>\n" +
|
||
"</head>";
|
||
|
||
String result = alipayClient.pageExecute(alipayTradePagePayRequest).getBody();
|
||
|
||
String bottom = "<body>\n" +
|
||
"</body>\n" +
|
||
"</html>";
|
||
|
||
httpServletResponse.getWriter().println(top + result + bottom);
|
||
|
||
}
|
||
|
||
|
||
@RequestMapping("/notify")
|
||
public void notify(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||
log.info("支付宝异步通知");
|
||
PrintWriter out = response.getWriter();
|
||
// 获取支付宝POST过来反馈信息
|
||
HashMap<String, String> params = new HashMap<>();
|
||
Map<String, String[]> parameterMap = request.getParameterMap();
|
||
|
||
for (Iterator<String> iter = parameterMap.keySet().iterator(); iter.hasNext();){
|
||
String name = (String) iter.next();
|
||
String[] values = (String[]) parameterMap.get(name);
|
||
String valueStr = "";
|
||
|
||
for (int i = 0; i < values.length; i++) {
|
||
valueStr = (i == values.length - 1)? valueStr + values[i]
|
||
: valueStr + values[i] + ",";
|
||
}
|
||
// 乱码解决,这段代码在出现乱码时使用
|
||
valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
|
||
params.put(name, valueStr);
|
||
}
|
||
|
||
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE); AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE);
|
||
|
||
if (signVerified) {
|
||
log.info("支付宝签名验证通过");
|
||
//商品订单号
|
||
String outTradeNo = new String(params.get("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
|
||
|
||
//支付宝交易号
|
||
String tradeNo = new String(params.get("trade_no").getBytes("ISO-8859-1"), "UTF-8");
|
||
|
||
|
||
// 交易状态
|
||
String tradeStatus = new String(params.get("trade_status").getBytes("ISO-8859-1"), "UTF-8");
|
||
|
||
if(tradeStatus.equals("TRADE_FINISHED")){
|
||
log.info("订单已完成");
|
||
}else if(tradeStatus.equals("TRADE_SUCCESS")){
|
||
log.info("支付宝交易成功");
|
||
}
|
||
|
||
out.println("success");
|
||
}else {
|
||
out.println("fail");
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|