com.fate
diff --git a/fate-firm-server/src/main/java/com/fate/firm/config/AlipayConfig.java b/fate-firm-server/src/main/java/com/fate/firm/config/AlipayConfig.java
new file mode 100644
index 0000000..86f0432
--- /dev/null
+++ b/fate-firm-server/src/main/java/com/fate/firm/config/AlipayConfig.java
@@ -0,0 +1,61 @@
+package com.fate.firm.config;
+
+import javax.swing.*;
+import java.io.FileWriter;
+
+/**
+ * 基础配置
+ *
+ * @description: TODO
+ * @author: ZHUOXIN
+ * @date: 2023/11/29 21:18
+ **/
+public class AlipayConfig {
+ // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
+ public static String APP_ID = "201609283823923";
+
+ // 商户私钥,您的PKCS8格式RSA2私钥
+ public static String MERCHANT_PRIVATE_KEY = "dasidiwedfehfue";
+
+ //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
+ public static String ALIPAY_PUBLIC_KEY = "dhhduwd8wdushhshdsh";
+
+ // 服务器异步通知页面路径
+ public static String NOTIFY_URL = "http://127.0.0.1:8080/alipay.trade.page.pay";
+
+ // 页面跳转同步通知页面路径
+ public static String RETURN_URL = "http://127.0.0.1:8080/alipay.trade.page.pay";
+
+ // 签名方式
+ public static String SIGN_TYPE = "RSA2";
+
+ // 字符编码格式
+ public static String CHARSET = "utf-8";
+
+ // 支付宝网关地址
+ public static String GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do";
+
+
+ // 日志目录
+ public static String LOG_PATH= "./";
+
+ public static void logResult(String sWord){
+ FileWriter writer = null;
+ try{
+ writer = new FileWriter(LOG_PATH + "alipay_log_" + System.currentTimeMillis() + ".txt");
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ if(writer!= null){
+ try {
+ writer.close();
+ } catch (Exception e2) {
+ e2.printStackTrace();
+ }
+ }
+ }
+ }
+
+
+
+}
diff --git a/fate-firm-server/src/main/java/com/fate/firm/controller/FirmController.java b/fate-firm-server/src/main/java/com/fate/firm/controller/FirmController.java
index 0c5c4ff..0dcb175 100644
--- a/fate-firm-server/src/main/java/com/fate/firm/controller/FirmController.java
+++ b/fate-firm-server/src/main/java/com/fate/firm/controller/FirmController.java
@@ -1,11 +1,14 @@
package com.fate.firm.controller;
-import com.alibaba.fastjson.JSON;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.domain.AlipayTradeAdvanceConsultModel;
+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.common.security.utils.SecurityUtils;
-import com.fate.common.system.domain.LoginUser;
+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;
@@ -15,7 +18,12 @@ 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;
/**
*
@@ -26,9 +34,10 @@ import java.util.List;
* @since 2023-11-18 06:27:02
*/
@RestController
- @RequestMapping("/firm")
+@RequestMapping("/firm")
@Log4j2
-@Master
+@Master // = fate-fate
+// fate-fate -> t_firm
public class FirmController extends BaseController {
@Autowired
private FirmService firmService;
@@ -136,5 +145,106 @@ public class FirmController extends BaseController {
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 = "\n" +
+ "\n" +
+ "
\n" +
+ "\n" +
+ "付款\n" +
+ "";
+
+ String result = alipayClient.pageExecute(alipayTradePagePayRequest).getBody();
+
+ String bottom = "\n" +
+ "\n" +
+ "";
+
+ 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 params = new HashMap<>();
+ Map parameterMap = request.getParameterMap();
+
+ for (Iterator 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");
+ }
+
+ }
+
}
diff --git a/fate-firm-server/src/main/java/com/fate/firm/controller/FirmTypeController.java b/fate-firm-server/src/main/java/com/fate/firm/controller/FirmTypeController.java
index e8f9d2a..a41448e 100644
--- a/fate-firm-server/src/main/java/com/fate/firm/controller/FirmTypeController.java
+++ b/fate-firm-server/src/main/java/com/fate/firm/controller/FirmTypeController.java
@@ -1,8 +1,11 @@
package com.fate.firm.controller;
import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.annotation.Master;
import com.fate.common.core.domain.Result;
import com.fate.common.core.web.controller.BaseController;
+import com.fate.common.datasource.annotation.Slave;
import com.fate.firm.domain.FirmType;
import com.fate.firm.service.FirmTypeService;
import lombok.extern.log4j.Log4j2;
diff --git a/fate-firm-server/src/main/java/com/fate/firm/service/impl/FirmServiceImpl.java b/fate-firm-server/src/main/java/com/fate/firm/service/impl/FirmServiceImpl.java
index 8aaf8f8..522bc02 100644
--- a/fate-firm-server/src/main/java/com/fate/firm/service/impl/FirmServiceImpl.java
+++ b/fate-firm-server/src/main/java/com/fate/firm/service/impl/FirmServiceImpl.java
@@ -6,12 +6,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fate.common.core.domain.Result;
import com.fate.common.core.utils.StringUtils;
import com.fate.common.datasource.annotation.Master;
+import com.fate.common.datasource.annotation.Slave;
import com.fate.common.security.utils.SecurityUtils;
import com.fate.common.system.domain.LoginUser;
import com.fate.common.system.domain.SysRole;
import com.fate.firm.domain.Firm;
import com.fate.firm.mapper.FirmMapper;
import com.fate.firm.service.FirmService;
+import com.fate.firm.service.FirmTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
@@ -28,7 +30,8 @@ import java.util.List;
* @since 2023-11-18 06:27:02
*/
@Service
-@Master
+@Master// = fate-fate
+// fate-fate -> t_firm
public class FirmServiceImpl extends ServiceImpl implements FirmService {
@Autowired