代码完善

This commit is contained in:
HMY 2024-09-30 16:32:57 +08:00
parent 9d6cc08560
commit e57bd944d8
19 changed files with 502 additions and 100 deletions

49
pom.xml
View File

@ -45,11 +45,58 @@
<dependencies>
<!-- JSerialComm for serial port communication -->
<dependency>
<groupId>com.fazecast</groupId>
<artifactId>jSerialComm</artifactId>
<version>2.9.2</version>
</dependency>
<!-- JFreeChart for charting -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
<!-- 微信支付 -->
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.4.2.B</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>4.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 支付宝相关-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.9.28.ALL</version>
<version>4.34.0.ALL</version>
</dependency>

View File

@ -325,7 +325,7 @@ public class ExcelUtil<T>
*
* @param list 导出数据集合
* @param sheetName 工作表的名称
* @return 结果
* @return 结果 (导出位置在yml文件)
*/
public AjaxResult exportExcel(List<T> list, String sheetName)
{

View File

@ -1,12 +1,20 @@
package com.ruoyi.project.hit.controller;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.project.hit.domain.PupuLog;
import com.ruoyi.project.hit.domain.vo.SelectLogVO;
import com.ruoyi.project.hit.service.PupuLogService;
import com.ruoyi.project.system.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
@ -23,7 +31,60 @@ public class PupuLogController extends BaseController {
*/
@PostMapping("/select")
public TableDataInfo select(@RequestBody SelectLogVO selectLogVO){
startPage();
List<HashMap> select = pupuLogService.select(selectLogVO);
return getDataTable(select);
}
/**
* 日志表导出
* @param selectLogVO
* @return
*/
@GetMapping("/export")
public AjaxResult export(@RequestBody SelectLogVO selectLogVO)
{
List<PupuLog> list = pupuLogService.selectLogs(selectLogVO);
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
return util.exportExcel(list, "日志数据");
}
/**
* 日志表导入
* @param file
* @param updateSupport
* @return
* @throws Exception
*/
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
List<PupuLog> list = util.importExcel(file.getInputStream());
System.out.println(list);
if(list.size()==0){
return AjaxResult.error("空数据");
}
//执行导入操作
boolean b = pupuLogService.saveBatch(list);
if(!b){
return AjaxResult.error("数据导入失败");
}
return AjaxResult.success();
}
/**
* 获取导入模版
* @return
*/
@GetMapping("/importTemplate")
public AjaxResult importTemplate()
{
ExcelUtil<PupuLog> util = new ExcelUtil<PupuLog>(PupuLog.class);
return util.importTemplateExcel("日志数据");
}
}

View File

@ -4,24 +4,35 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.Date;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @TableName pupu_log
*/
@TableName(value ="pupu_log")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PupuLog implements Serializable {
@TableId(type = IdType.AUTO)
@Excel(name = "日志序号", cellType = Excel.ColumnType.NUMERIC, prompt = "日志编号")
private Integer logId;
@Excel(name = "事件")
private String logEvent;
@Excel(name = "事件种类", readConverterExp = "1=增,2=删,3=改")
private Integer logSort;
@TableField(fill = FieldFill.INSERT)
@Excel(name = "时间", width = 30 ,dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT)
private Date time;
@Excel(name = "用户id")
private Integer userId;
private static final long serialVersionUID = 1L;

View File

@ -17,4 +17,6 @@ public interface PupuLogService extends IService<PupuLog> {
int add(PupuLog pupuLog);
List<HashMap> select(SelectLogVO selectLogVO);
List<PupuLog> selectLogs(SelectLogVO selectLogVO);
}

View File

@ -41,8 +41,8 @@ public class PupuEquipmentServiceImpl extends ServiceImpl<PupuEquipmentMapper, P
if(pupuEquipmentMapper.selectOne(wrapper)!=null){
throw new CustomException("标识码重复");
};
int i=0;
i = pupuEquipmentMapper.insertAndReturnId(pupuEquipment);
int i = pupuEquipmentMapper.insertAndReturnId(pupuEquipment);
if(i>0){
pupuLogService.add(new PupuLog("设备"+pupuEquipment.getEquipmentId()+"新增",1,new Date(),userId));
}
@ -54,8 +54,11 @@ public class PupuEquipmentServiceImpl extends ServiceImpl<PupuEquipmentMapper, P
if(pupuEquipmentMapper.selectById(equipmentId)==null){
throw new CustomException("该设备不存在");
}
pupuLogService.add(new PupuLog("设备"+equipmentId+"删除",2,new Date(),userId));
return pupuEquipmentMapper.deleteById(equipmentId);
int i = pupuEquipmentMapper.deleteById(equipmentId);
if(i>0){
pupuLogService.add(new PupuLog("设备"+equipmentId+"删除",2,new Date(),userId));
}
return i;
}
@Override

View File

@ -1,5 +1,6 @@
package com.ruoyi.project.hit.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.project.hit.domain.PupuLog;
@ -35,6 +36,13 @@ public class PupuLogServiceImpl extends ServiceImpl<PupuLogMapper, PupuLog>
public List<HashMap> select(SelectLogVO selectLogVO) {
return pupuLogMapper.select(selectLogVO);
}
@Override
public List<PupuLog> selectLogs(SelectLogVO selectLogVO) {
LambdaQueryWrapper<PupuLog> wrapper=new LambdaQueryWrapper<>();
wrapper.eq(PupuLog::getLogSort,selectLogVO.getSortId());
return pupuLogMapper.selectList(wrapper);
}
}

View File

@ -33,12 +33,11 @@ public class PupuStoreServiceImpl extends ServiceImpl<PupuStoreMapper, PupuStore
@Override
public int add(PupuStore pupuStore, Integer userId) {
int i=0;
i = pupuStoreMapper.insertReturnId(pupuStore);
int i = pupuStoreMapper.insertReturnId(pupuStore);
if(i>0){
pupuLogService.add(new PupuLog("门店"+pupuStore.getStoreId()+"新增",1,new Date(),userId));
}
return i;
}
@ -58,9 +57,6 @@ public class PupuStoreServiceImpl extends ServiceImpl<PupuStoreMapper, PupuStore
}
return i;
}
@Override

View File

@ -1,76 +0,0 @@
package com.ruoyi.project.hit.test;
//import com.alipay.easysdk.factory.Factory;
import com.alipay.api.AlipayApiException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* 支付宝接口
*/
@RestController
@RequestMapping("/alipay")
public class AliPayController {
@Resource
AlipayTemplate alipayTemplate;
@GetMapping(value = "/pay", produces = "text/html")
@ResponseBody
public String pay(@RequestParam long id) throws AlipayApiException {
Order order = new Order();
order.setId(120948748372234L);
order.setUserId(129904058947L);
order.setInterfaceInfoId(294389472934L);
order.setMoney(10.0);
order.setPaymentMethod("支付宝");
return alipayTemplate.pay(order);
}
@PostMapping("/notify") // 注意这里必须是POST接口
public String payNotify(HttpServletRequest request) throws Exception {
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
System.out.println("=========支付宝异步回调========");
Map<String, String> params = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
for (String name : requestParams.keySet()) {
params.put(name, request.getParameter(name));
// System.out.println(name + " = " + request.getParameter(name));
}
String tradeNo = params.get("out_trade_no");
String gmtPayment = params.get("gmt_payment");
String alipayTradeNo = params.get("trade_no");
// 支付宝验签
// if (Factory.Payment.Common().verifyNotify(params)) {
// // 验签通过
// System.out.println("交易名称: " + params.get("subject"));
// System.out.println("交易状态: " + params.get("trade_status"));
// System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
// System.out.println("商户订单号: " + params.get("out_trade_no"));
// System.out.println("交易金额: " + params.get("total_amount"));
// System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
// System.out.println("买家付款时间: " + params.get("gmt_payment"));
// System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
// // 更新订单状态
// }
}
return "success";
}
}

View File

@ -0,0 +1,30 @@
package com.ruoyi.project.hit.test.ai;
public class AIRequest {
private String url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s";
private String message;
public AIRequest(){}
public AIRequest(String message) {
this.message = message;
}
public String getUrl() {
return String.format(url, message);//返回完整的url
}
public void setUrl(String url) {
this.url = url;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

View File

@ -0,0 +1,52 @@
package com.ruoyi.project.hit.test.ai;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
public class AiService {
public static String getdetail(String message){
AIRequest request=new AIRequest(message);
try {
URL url = new URL(request.getUrl());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code >= 200 && code < 300) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer();
String str;
while ((str = reader.readLine()) != null) {
sb.append(str);
}
// System.out.println(sb);
return String.valueOf(sb);//返回json格式
}
} catch (IOException e) {
e.printStackTrace();
}
return "ai应答失败";
}
public static void main(String[] args){
String json=getdetail("现在几点");
System.out.println(json);
ObjectMapper mapper = new ObjectMapper();
try {
// 将JSON字符串转换为Map
Map<String, Object> map = mapper.readValue(json, Map.class);
// 打印转换后的Map
System.out.println(map.get("content"));
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,123 @@
package com.ruoyi.project.hit.test.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
/**
* 支付宝接口
*/
@RestController
@RequestMapping("/hit/alipay")
public class AliPayController {
@Resource
AlipayTemplate alipayTemplate;
@GetMapping(value = "/pay/{orderId}", produces = "text/html")
@ResponseBody
public String pay(@PathVariable(value = "orderId") Integer orderId) throws AlipayApiException {
Order order = new Order();
Random random = new Random();
// 生成一个随机的long型数据
long randomLong = random.nextLong();
order.setId(randomLong);
order.setUserId(129904058947L);
order.setInterfaceInfoId(294389472934L);
order.setMoney(10.0);
order.setPaymentMethod("支付宝");
return alipayTemplate.pay(order);
}
@PostMapping("/notify") // 注意这里必须是POST接口
public String payNotify(HttpServletRequest request) throws Exception {
if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
System.out.println("=========支付宝异步回调========");
/*Map<String, String> params = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
for (String name : requestParams.keySet()) {
params.put(name, request.getParameter(name));
System.out.println(name + " = " + request.getParameter(name));
}
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);
// 支付宝验签
// System.out.println(alipayTemplate.alipayPublicKey);
// System.out.println(alipayTemplate.getCharset());
boolean rsa2 = AlipaySignature.rsaCheck(content,sign, alipayTemplate.alipayPublicKey, "UTF-8", "RSA2");
// boolean checkSignature = AlipaySignature.rsa256CheckContent(content, sign, alipayTemplate.getAlipayPublicKey(), "UTF-8"); // 验证签名
System.out.println(rsa2);
if (Factory.Payment.Common().verifyNotify(params)) {
// 验签通过
System.out.println("交易名称: " + params.get("subject"));
System.out.println("交易状态: " + params.get("trade_status"));
System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
System.out.println("商户订单号: " + params.get("out_trade_no"));
System.out.println("交易金额: " + params.get("total_amount"));
System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
System.out.println("买家付款时间: " + params.get("gmt_payment"));
System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
// 更新订单状态
}else {
System.out.println("验签失败");
}*/
Map<String, String> params = new HashMap<>();
// 假设你已经有了一个方法来解析HTTP POST请求的参数
Map<String, String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
String[] values = requestParams.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);
}
// 验签
System.out.println(params);
boolean isCheck = AlipaySignature.rsaCheckV1(params, alipayTemplate.getAlipayPublicKey(), "UTF-8","RSA2");
if (isCheck) {
System.out.println("验签成功");
// 验签成功处理业务逻辑
} else {
// 验签失败记录日志或返回错误信息
System.out.println("验签失败");
}
}
return "success";
}
}

View File

@ -1,4 +1,4 @@
package com.ruoyi.project.hit.test;
package com.ruoyi.project.hit.test.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
@ -11,13 +11,13 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "alipay")
@Component
@Data
@ConfigurationProperties(prefix = "alipay")
public class AlipayTemplate {
// 应用ID,您的APPID收款账号既是您的APPID对应支付宝账号
@Value("{alipay.appId}")
public String appId;
// 应用私钥就是工具生成的应用私钥
@ -31,8 +31,8 @@ public class AlipayTemplate {
@Value("{alipay.notifyUrl}")
public String notifyUrl;
//同步通知支付成功一般跳转到成功页
@Value("{alipay.returnUrl}")
public String returnUrl;
// @Value("{alipay.returnUrl}")
// public String returnUrl;
// 签名方式
@Value("{alipay.signType}")
@ -58,15 +58,18 @@ public class AlipayTemplate {
//2创建一个支付请求并设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(returnUrl);
// alipayRequest.setReturnUrl(returnUrl);
alipayRequest.setNotifyUrl(notifyUrl);
System.out.println(notifyUrl);
Long id = order.getId();
Long interfaceInfoId = order.getInterfaceInfoId();
Double money = order.getMoney();
String paymentMethod = order.getPaymentMethod();
alipayRequest.setBizContent(" {\"out_trade_no\":\"" + id + "\","
+ "\"total_amount\":\"" + money + "\","
+ "\"subject\":\"" + interfaceInfoId

View File

@ -1,4 +1,4 @@
package com.ruoyi.project.hit.test;
package com.ruoyi.project.hit.test.alipay;

View File

@ -0,0 +1,48 @@
package com.ruoyi.project.hit.test.thickness;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.general.DatasetChangeEvent;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.awt.*;
public class ChartUpdater {
private static XYSeries series = new XYSeries("Serial Data");
private static XYSeriesCollection dataset = new XYSeriesCollection(series);
private static JFreeChart chart;
private static JFrame frame;
public static void main(String[] args) {
chart = ChartFactory.createXYLineChart(
"Serial Data Chart",
"Time",
"Value",
dataset,
PlotOrientation.VERTICAL,
true, true, false);
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.add(new ChartPanel(chart));
frame.setVisible(true);
}
public static synchronized void updateChart(String data) {
try {
double value = Double.parseDouble(data.trim());
series.add(series.getItemCount() + 1, value); // Assuming the x-axis is just the count of data points
// Update the dataset and chart
// dataset.notifyListeners(new DatasetChangeEvent(this, dataset));
} catch (NumberFormatException e) {
System.out.println("Invalid data received: " + data);
}
}
}

View File

@ -0,0 +1,62 @@
package com.ruoyi.project.hit.test.thickness;
import com.fazecast.jSerialComm.SerialPort;
import org.springframework.security.core.parameters.P;
import java.util.Arrays;
public class SerialPortReader {
public static void main(String[] args) {
// List all available serial ports
SerialPort[] ports = SerialPort.getCommPorts();
for (SerialPort port : ports) {
System.out.println(port.getSystemPortName());
}
SerialPort port = SerialPort.getCommPort("COM6"); // 修改为你的串口号
port.setBaudRate(57600);
port.setNumDataBits(8);
port.setNumStopBits(SerialPort.ONE_STOP_BIT);
port.setParity(SerialPort.NO_PARITY);
if (port.openPort()) {
System.out.println("Port opened successfully.");
try {
// 指令数据
byte[] command = {0x5a, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x00, (byte) 0x7d, 0x00, 0x29};
// 发送指令
port.writeBytes(command, command.length);
System.out.println("Command sent."+ Arrays.toString(command));
// 现在你可以开始读取串口数据了
// 示例读取串口数据
byte[] readBuffer = new byte[1024];
int numRead = port.readBytes(readBuffer, readBuffer.length);
if (numRead > 0) {
String readData = new String(readBuffer, 0, numRead);
System.out.println("Read " + numRead + " bytes: " + readData);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
port.closePort(); // 关闭串口
}
} else {
System.out.println("Failed to open port.");
return;
}
}
// Placeholder for the method that updates the chart
private static void updateChart(String data) {
// Parse the data and update the chart
// This will be implemented in the next section
ChartUpdater.updateChart(data);
}
}

View File

@ -2,6 +2,8 @@ package com.ruoyi.project.monitor.service.impl;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.quartz.JobDataMap;
import org.quartz.JobKey;
import org.quartz.Scheduler;
@ -28,7 +30,7 @@ public class SysJobServiceImpl implements ISysJobService
@Autowired
private Scheduler scheduler;
@Autowired
@Resource
private SysJobMapper jobMapper;
/**

View File

@ -65,6 +65,11 @@ public class SysUserController extends BaseController
return getDataTable(list);
}
/**
* excel表导出
* @param user
* @return
*/
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:user:export')")
@GetMapping("/export")
@ -75,6 +80,13 @@ public class SysUserController extends BaseController
return util.exportExcel(list, "用户数据");
}
/**
* excel表导入
* @param file
* @param updateSupport是否更新支持
* @return
* @throws Exception
*/
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('system:user:import')")
@PostMapping("/importData")
@ -88,6 +100,10 @@ public class SysUserController extends BaseController
return AjaxResult.success(message);
}
/**
* 获取导入模版
* @return
*/
@GetMapping("/importTemplate")
public AjaxResult importTemplate()
{

View File

@ -151,11 +151,25 @@ minio:
alipay:
appId: 9021000140665155
# 应用私钥(工具生成)
merchantPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCeszWzeW3hcNTgJCPisg3AEDTfgSulgg6g5ui/s9eKgeC53zYm8XNyOwEJZoHRz1dk1ekxSHOUYmQbdOVyfqRvdOd5V5xMY3ihvtOIsY1EjrIgU1VzJOpuiWJ1egxsUyc4nDUA00+5YXfeXyTI60Ro5+mQukq4MS6Q3FConQwa8LxLJhWOVuIT/laQpKu6hskldUcgYcWS1pYMo2Z+mnnt1qLkKMRmiFnpo+p4tx3XuN8Uy5o/ZhTxD0WZC+SPqgJ0osfcp/KDFMtUklOefuHlCGc1dBvo2TTnsLl54bGXHQ8HvgN4W4HXRWvPfLbyXsg3ULWaYMmuOkTgQgbZK3NjAgMBAAECggEAfnPVilhrUYMSXDbv0SaHBk7jkmPeX1auSU80jevDBz5Nzk0pXQZvMsoJHXBsaL2JqXM5CGfukIGFusr+OKjoZVcFSg6hH8zyxg7DhtvS8JmzHUbJg6IamlEl/u1tELOBQP5WzX2SvOgJF0tAiEfOjribxxJpjzLBI/Qo4PGiP6PhFiT/A6Dm3U6Qz8G4s168hRsIqXwrpmtYG4vc2acLeUg1Dc3jD4wHZFN0WQbYhKcY7e1xoKiIsYG/MJVKNemMRMPQxmPVLJ4Q3scMRNCYcrEDfj78QryTCUOVKY0Vo7Wx2T6H1CEgjeXHzBjE4zsdqFPE4gSVZ6t43AXQIpTHwQKBgQD9CTYUHaTfnk4zIfLKV5nTEIREV4q0g6b6JDO6uyxrLhnT5Dz2mMFvNtA+Oso65vzc6mxi8uhXCD5SmmmJzPtJ6VBsT4V3A6gg5dpZHassKXlEEWZZ58zE4aCWBbaL8w5GqWcR8X83/ijuSjSpnzQaAWS0D4Kd4F/I4gA1XBtVawKBgQCgjxwU7cilbBKMHYT0Aoxnxw4pS3Qw1Vfk0ij/Np2f1kAo/ylaeWcIRIep5/E7cJbXS2HnmJqjroZ4MISc8ihs5k8EOFdF3S4z4850nH3VmfEJOI2PKxE7smqVoik6sohfYqHYjRJtMFyGsEgvOrvEBNox3ugEkIfeGemsbMhf6QKBgG+b34GR7cZAwkdlgvzjFNN3JpAqeODUbRNKYpLLunTwGa5PruAqUq/mYoYAUnEWr5QVxocCk57H4Q14VHLWukRIqBOOI9VyBHe2StAh+P16saVnc1jWmIiC6N0jWfhy1eovEGpmtfGRpqYsjvv+X/HUiYGukbNnY3hszyC6JshPAoGATQR49v0dC2Ts/LNITHhQe5N7kol0QdyE3emF6u566+otOr0zTAgCSW/+F52AFQAsCzhIzXxhaXTVYh/77QEoLRzI+IBCNOwlNpTnOv66SdUfT0oGdY+2I4mxIPf5iQOM8RxyAFujZCcXqzAyYB1vZlbhh5yidVYTJpINij1gXMkCgYEA7kP3hmFOXqbPcMwWL5FEBc1u+NK/v4dj1FURNj19IkRw15d53pY8/orPHfIFt05NYCyl4jXJhozuEihGw5YwJLi8t2kPAwHX3u2yxrSeI5MrqVhyWD1Nf2HD4VBt1iuGgGj6xoiISc83cKw5ZiJT4I2plq5UIPHRiEM9wcuOeYE=
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrM1s3lt4XDU4CQj4rINwBA034ErpYIOoObov7PXioHgud82JvFzcjsBCWaB0c9XZNXpMUhzlGJkG3Tlcn6kb3TneVecTGN4ob7TiLGNRI6yIFNVcyTqbolidXoMbFMnOJw1ANNPuWF33l8kyOtEaOfpkLpKuDEukNxQqJ0MGvC8SyYVjlbiE/5WkKSruobJJXVHIGHFktaWDKNmfpp57dai5CjEZohZ6aPqeLcd17jfFMuaP2YU8Q9FmQvkj6oCdKLH3KfygxTLVJJTnn7h5QhnNXQb6Nk057C5eeGxlx0PB74DeFuB10Vrz3y28l7IN1C1mmDJrjpE4EIG2StzYwIDAQAB
notifyUrl: http://内网穿透地址/api/alipay/notify
returnUrl: http://member.zyz.com/memberOrder.html
# 应用公钥(工具生成)
# merchantPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnrM1s3lt4XDU4CQj4rINwBA034ErpYIOoObov7PXioHgud82JvFzcjsBCWaB0c9XZNXpMUhzlGJkG3Tlcn6kb3TneVecTGN4ob7TiLGNRI6yIFNVcyTqbolidXoMbFMnOJw1ANNPuWF33l8kyOtEaOfpkLpKuDEukNxQqJ0MGvC8SyYVjlbiE/5WkKSruobJJXVHIGHFktaWDKNmfpp57dai5CjEZohZ6aPqeLcd17jfFMuaP2YU8Q9FmQvkj6oCdKLH3KfygxTLVJJTnn7h5QhnNXQb6Nk057C5eeGxlx0PB74DeFuB10Vrz3y28l7IN1C1mmDJrjpE4EIG2StzYwIDAQAB
# 支付宝公钥(支付宝查看)
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs7d1mpaVxyN7J32FcFyYYO9G1Hpbkxb8ksG61TsP0enCLvmT2xM0U8Ykh90eYFkqLkRMVup18CsPabnC8XIFjpWTtHYm+auGydCTQirUwfhl5XK/r++kO9nXbFmR8c1MLwJ78hjeGXXukhhd0R5s0sST/sqU84k1E4aGZKWZ/snxr4EO4UFXUrUrmyXPMD6bngYZUt/pWg/65prNl7kPwwSxfVY06rYIT6dD6qbDenGw/h0WdgfhXS4tHg6TsoD6L9tybNyxJcVz+cFq1vkp7EwkfaY0O38Jcvd9TLdes63gqSbsA1/M0q0LHNS9iCjCX/arekrvTS8LhH0jNImtlQIDAQAB
# natapp端口号配置要与服务器端口一致
notifyUrl: http://jqi5wy.natappfree.cc/hit/alipay/notify
# returnUrl: http://member.zyz.com/memberOrder.html
signType: RSA2
charset: utf-8
charset: UTF-8
# 我的支付宝网关地址
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
wx:
pay:
appId: #微信公众号或者小程序等的appid
secret:
mchId: #微信支付商户号
mchKey: #微信支付商户密钥
notifyUrl: http://8.130.135.74:8053/api/order/student/pay/wxCallback #支付回调地址