Browse Source

对接修改

master
cgx 1 month ago
parent
commit
4d4574c5bf
12 changed files with 185 additions and 25 deletions
  1. +4
    -3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/OrderController.java
  2. +11
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/PayController.java
  3. +1
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/UserController.java
  4. +1
    -10
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/mapper/xml/TaskMapper.xml
  5. +38
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/model/req/TaskReq3.java
  6. +1
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/IPayService.java
  7. +2
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/impl/OrderServiceImpl.java
  8. +65
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/impl/PayServiceImpl.java
  9. BIN
      jeecg-boot-module-system/src/main/resources/apiclient_cert.p12
  10. +25
    -0
      jeecg-boot-module-system/src/main/resources/apiclient_cert.pem
  11. +28
    -0
      jeecg-boot-module-system/src/main/resources/apiclient_key.pem
  12. +9
    -9
      jeecg-boot-module-system/src/main/resources/application-prod.yml

+ 4
- 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/OrderController.java View File

@ -16,6 +16,7 @@ import org.jeecg.modules.tbOrder.service.ITbOrderService;
import org.jeecg.modules.tbTask.entity.TbTask; import org.jeecg.modules.tbTask.entity.TbTask;
import org.jeecg.modules.tbTask.service.ITbTaskService; import org.jeecg.modules.tbTask.service.ITbTaskService;
import org.jeecg.modules.userCode.model.req.TaskReq; import org.jeecg.modules.userCode.model.req.TaskReq;
import org.jeecg.modules.userCode.model.req.TaskReq3;
import org.jeecg.modules.userCode.service.AppletLoginService; import org.jeecg.modules.userCode.service.AppletLoginService;
import org.jeecg.modules.userCode.service.OrderService; import org.jeecg.modules.userCode.service.OrderService;
import org.jeecg.modules.userCode.service.UserService; import org.jeecg.modules.userCode.service.UserService;
@ -50,11 +51,11 @@ public class OrderController {
@ApiOperation(value = "发起聘请,等待师傅确认", notes = "发起聘请,等待师傅确认") @ApiOperation(value = "发起聘请,等待师傅确认", notes = "发起聘请,等待师傅确认")
@PostMapping(value = "/addTask") @PostMapping(value = "/addTask")
public Result<Map> addOrder(@RequestHeader("X-Access-Token") String token, @RequestParam(name = "taskId") String taskId) {
if (ValidateTool.isNull(taskId)) {
public Result<Map> addOrder(@RequestHeader("X-Access-Token") String token, @RequestBody TaskReq3 taskReq3) {
if (ValidateTool.isNull(taskReq3.getTaskId())) {
throw new JeecgBootException("参数错误,请选择师傅"); throw new JeecgBootException("参数错误,请选择师傅");
} }
String orderId = orderService.addOrder(taskId, token);
String orderId = orderService.addOrder(taskReq3.getTaskId(), token);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("orderId", orderId); map.put("orderId", orderId);
return Result.OK(map); return Result.OK(map);


+ 11
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/PayController.java View File

@ -67,6 +67,17 @@ public class PayController {
} }
@ApiOperation("订单余额支付")
@PostMapping("/payOrderByBalance")
public Result<?> payOrderByBalance(@RequestBody OrderPayReq req, @RequestHeader("X-Access-Token") String token) {
Result<?> result = payService.payOrderByBalance(req, token);
log.warn("支付结果{}", JSONObject.toJSONString(result));
return result;
}
/** /**
* 订单支付 * 订单支付
@ -100,7 +111,6 @@ public class PayController {
} }
//TODO 充值支付 交接改动
/** /**
* 充值支付 * 充值支付


+ 1
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/controller/UserController.java View File

@ -97,7 +97,7 @@ public class UserController {
* @return * @return
*/ */
//@AutoLog(value = "tb_user_role-通过id查询") //@AutoLog(value = "tb_user_role-通过id查询")
@ApiOperation(value = "tb_user_role-通过id查询", notes = "tb_user_role-通过id查询")
@ApiOperation(value = "大厅信息查询详情", notes = "大厅信息查询详情")
@GetMapping(value = "/getTaskById") @GetMapping(value = "/getTaskById")
public Result<TbTask> getTaskById(@RequestParam(name = "id", required = true) String id) { public Result<TbTask> getTaskById(@RequestParam(name = "id", required = true) String id) {
TbTask tbTask = tbTaskService.getById(id); TbTask tbTask = tbTaskService.getById(id);


+ 1
- 10
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/mapper/xml/TaskMapper.xml View File

@ -4,16 +4,7 @@
<!-- 通过字典code获取字典数据 --> <!-- 通过字典code获取字典数据 -->
<select id="tasks" parameterType="String" <select id="tasks" parameterType="String"
resultType="org.jeecg.modules.userCode.model.vo.TbTaskVo"> resultType="org.jeecg.modules.userCode.model.vo.TbTaskVo">
<!-- SELECT *,-->
<!-- (6371 * acos (-->
<!-- cos (RADIANS(${lat}))-->
<!-- * cos(RADIANS(SUBSTRING_INDEX(longit_lat,',',-1) ) )-->
<!-- * cos(RADIANS(SUBSTRING_INDEX(longit_lat,',',1)) - RADIANS(${lon}) )-->
<!-- + sin (RADIANS(${lat}))-->
<!-- * sin(RADIANS(SUBSTRING_INDEX(longit_lat,',',-1) ) )-->
<!-- )) AS distances-->
<!-- FROM merchant_info HAVING <![CDATA[ distances <= 5 ]]> and <![CDATA[ del_flag = 0 ]]> ORDER BY distances-->
select *
select *
from ( from (
SELECT *,ROUND( SELECT *,ROUND(


+ 38
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/model/req/TaskReq3.java View File

@ -0,0 +1,38 @@
package org.jeecg.modules.userCode.model.req;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: tb_task
* @Author: jeecg-boot
* @Date: 2024-12-12
* @Version: V1.0
*/
@Data
@TableName("tb_task")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="tb_task对象", description="tb_task")
public class TaskReq3 implements Serializable {
private static final long serialVersionUID = 1L;
/**任务id*/
@Excel(name = "任务id", width = 15)
@ApiModelProperty(value = "任务id")
private String taskId;
}

+ 1
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/IPayService.java View File

@ -26,6 +26,7 @@ public interface IPayService {
* @return * @return
*/ */
Result<?> orderPay(OrderPayReq req, String token); Result<?> orderPay(OrderPayReq req, String token);
Result<?> payOrderByBalance(OrderPayReq req, String token);
/** /**


+ 2
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/impl/OrderServiceImpl.java View File

@ -58,7 +58,9 @@ public class OrderServiceImpl implements OrderService {
throw new JeecgBootException("参数错误,请选择师傅"); throw new JeecgBootException("参数错误,请选择师傅");
} }
TbOrder tbOrder = new TbOrder(); TbOrder tbOrder = new TbOrder();
BeanUtils.copyProperties(byId, tbOrder);
tbOrder.setId(IdWorker.getIdStr()); tbOrder.setId(IdWorker.getIdStr());
tbOrder.setPayMoney(new BigDecimal("0.01"));
tbOrderService.save(tbOrder); tbOrderService.save(tbOrder);
return tbOrder.getId(); return tbOrder.getId();
} }


+ 65
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/userCode/service/impl/PayServiceImpl.java View File

@ -2,6 +2,7 @@ package org.jeecg.modules.userCode.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@ -20,6 +21,7 @@ import org.jeecg.common.util.RedisUtil;
import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.bean.RechargeReq; import org.jeecg.modules.bean.RechargeReq;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.hanHaiMember.mapper.HanHaiMemberMapper;
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService;
import org.jeecg.modules.rechargeInfoLog.entity.TbRechargeInfoLog; import org.jeecg.modules.rechargeInfoLog.entity.TbRechargeInfoLog;
import org.jeecg.modules.rechargeInfoLog.service.ITbRechargeInfoLogService; import org.jeecg.modules.rechargeInfoLog.service.ITbRechargeInfoLogService;
@ -91,7 +93,8 @@ public class PayServiceImpl implements IPayService {
@Resource @Resource
private ITbPremiumService tbPremiumService; private ITbPremiumService tbPremiumService;
@Resource
private HanHaiMemberMapper hanHaiMemberMappere;
@Resource @Resource
private RedisUtil redisUtil; private RedisUtil redisUtil;
@ -163,6 +166,67 @@ public class PayServiceImpl implements IPayService {
return Result.OK(payResponse); return Result.OK(payResponse);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Result<?> payOrderByBalance(OrderPayReq req, String token) {
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token);
log.warn("orderPay参数{}==={}", JSONObject.toJSONString(req));
if (req == null) {
throw new JeecgBootException("订单错误,请稍后重试");
}
if (StringUtils.isEmpty(req.getOrderId())) {
throw new JeecgBootException("订单错误,请稍后重试");
}
// 查询订单信息
TbOrder order = tbOrderService.getById(req.getOrderId());
if (ValidateTool.isNull(order)) {
return Result.error("订单记录不存在");
}
/**
* 实时获取订单中的金额 (可能存在提交订单未付款,后面开通会员的情况)
* */
if (order.getOrderStatus() == 5 || order.getOrderStatus() == 6) {
throw new JeecgBootException("订单已支付,请勿重复支付");
}
if (hanHaiMember.getPrice().doubleValue() <= 0
|| hanHaiMember.getPrice().doubleValue() < order.getPayMoney().doubleValue()) {
throw new JeecgBootException("余额不足,请充值");
}
UpdateWrapper<HanHaiMember> updateWrapper = new UpdateWrapper<>();
updateWrapper.setSql("price = price - " + order.getPayMoney());
updateWrapper.eq("id", hanHaiMember.getId()).last("and price - " + order.getPayMoney() + ">= 0");
int update = hanHaiMemberMappere.update(null, updateWrapper);
if (update < 1) {
log.warn("余额扣除失败 订单id{}金额{}", order.getId(), order.getPayMoney());
throw new JeecgBootException("网络异常");
}
TbRechargeInfoLog rechargeLog = new TbRechargeInfoLog();
rechargeLog.setTitle(order.getTitle());
rechargeLog.setMoney(order.getPayMoney());
rechargeLog.setMemberId(hanHaiMember.getId());
rechargeLog.setUserMoney(hanHaiMember.getPrice());
rechargeLog.setType(0);
rechargeLog.setIsPay(1);
rechargeLog.setPayTime(new Date());
rechargeLog.setOrderId(order.getId());
rechargeInfoLogMapper.insert(rechargeLog);
// 更新订单状态
TbOrder cmOrder1 = new TbOrder();
cmOrder1.setId(order.getId());
cmOrder1.setOrderStatus(8);
tbOrderService.updateById(cmOrder1);
return Result.OK();
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public Result<?> notify(PayResponse payResponse) { public Result<?> notify(PayResponse payResponse) {


BIN
jeecg-boot-module-system/src/main/resources/apiclient_cert.p12 View File


+ 25
- 0
jeecg-boot-module-system/src/main/resources/apiclient_cert.pem View File

@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIEKDCCAxCgAwIBAgIUbk+ecNVsxDm1dbgRy0MnYhyBqDkwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjUwMTEzMDkxMjA2WhcNMzAwMTEyMDkxMjA2WjCBgTETMBEGA1UEAwwK
MTcwNDA0NTMwNDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
DCTplb/mspnmsrPkuJzlirPliqHmnI3liqHmnInpmZDlhazlj7gxCzAJBgNVBAYT
AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAKn5VPODXobGUSu6ZBqfgEnjiFWZ829s1xfgWXW2N4EM48V4iqZ0Sf0y
CNEAhQc4OH5Adt2cZjWG3PE04KQsqg59HE56OFq8szrrk/W4lVLntb19SQHkVXsI
+M3RArdzQyixZQ1Di9m5oUIFxlINOiRSlA3fHcwSpKy95FlBZ+ThKNGHiBXVFT8M
DULhM0omEc9WssB4KJkIdociJYVqc9diBsSA7eTQT0XtGKPAINrb460P4yIyvtWY
wegc5NHvaVO8jDqwIAfiV3N0XJstsYYOq8Nfi4b+qyKhmmy9eaeM8azk6y/16XqQ
Zq69pIawqW0JOGrDRryCdmPuK9tT2dkCAwEAAaOBuTCBtjAJBgNVHRMEAjAAMAsG
A1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2Y2Eu
aXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRC
MDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJCMjdB
OUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQAnTWfq
232lsiU9XBiINtLq3pnVnhao1OCJ8xWrke6o4ys9bsuBOXk+OP+VifdphRS+o+BU
PglRo0UPJHMKDguOZ/dxET0qcKdRMPwB07H19AECz4Z8mhEosMlpO9BbKNbG8XQ6
5va/CchRU1HMa1I2zNEUl68Deib59dcO2SDLomfs57cu2gZimP0jwvQipe8aFXnn
rTzr6Gql4KJcMfpwfNzQYFeEsiRci5RwrcG2ylik5sb/h3qTOJB+TOnwlkP71VlC
AWTE8aSY5J9XdwX6avubdvcp/3dZSC4S42KaBmMKKkk0qcA4PVG+RdmXmtbapoCF
20kYEjj7kp+3WYvX
-----END CERTIFICATE-----

+ 28
- 0
jeecg-boot-module-system/src/main/resources/apiclient_key.pem View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCp+VTzg16GxlEr
umQan4BJ44hVmfNvbNcX4Fl1tjeBDOPFeIqmdEn9MgjRAIUHODh+QHbdnGY1htzx
NOCkLKoOfRxOejhavLM665P1uJVS57W9fUkB5FV7CPjN0QK3c0MosWUNQ4vZuaFC
BcZSDTokUpQN3x3MEqSsveRZQWfk4SjRh4gV1RU/DA1C4TNKJhHPVrLAeCiZCHaH
IiWFanPXYgbEgO3k0E9F7RijwCDa2+OtD+MiMr7VmMHoHOTR72lTvIw6sCAH4ldz
dFybLbGGDqvDX4uG/qsioZpsvXmnjPGs5Osv9el6kGauvaSGsKltCThqw0a8gnZj
7ivbU9nZAgMBAAECggEAM8R0UxYXnASahC7ofhNGBzr9MtUIh08m02bI2Ej+7pb2
aBYmZDvWrP6oIL9/xIsi6ZDIowYXOwYwFGZ+ZIIV6QPBs0UWFMyT6cYF8jidgfqA
J44YxjK8thQtcsHNigHY2nPsyvVfipg2vNz1YdgVdSqRXQgvExA6h0HuYiDBe7t4
hqOqPGm+X8iVmwCTam+OovUtPy2is3uXxwjePF1lbfVrWsmn/D7ZpG54Pdyi0v+O
WX65NVkZ5h+nwHWs5479V/Cpen6+3O/N+rrdijB1fjBNBWnX9FQ7PKSVC2mR/ugb
wvM3LJ2fiMHsDpryrbmsx8ADD7cl+jbVfbeqXDHS4QKBgQDYESJmvOpaNzIz2Ri2
20LiCLG+AtEaFmMOobZ7nNONjW0P3N6HMkCwTGU6omnLXKLqs0aXnVlWBy8CF4yj
iES7OjAQ7i604gpc3vjJkElj3eAStK3kx0N/1tTOnNcOzGHu3Dl8eIJCOjxWeBbC
+KfLtqET2xxdvFG9tIvOE+NPGwKBgQDJY2GHIXWFCm3xK+9/D/CC9N7Snrs+7PeN
AWxqvT5UCI+S3LGnXZ5sWShIJWRHix7Ke2oK7ZRdodzMBfOCES8UnbrXS5RHze2X
VAkqho6HiyxMpVU84kFh3vAsXRpEKvfG2rzzYya/sSzotCabrArIjr1fJvdh2ioo
kapKpR2mGwKBgGSoHtGj4r1ih2W2FphhLxhkGoG9iDJSCZWwanXNypRgNVW1fImZ
NJ+tB1+4d/bAUjlqiVFqgUrdj922oNMyUWqzod7RRzsHLvKzAU3NhRMcMx4jw/sX
hW+R4pPaZynCt0DyoWlGLtCxlphl25y7AFib3RCF/AIDEEWDTboUc8nPAoGBAKqW
rlRi+UNa1EpIJzUAcYDcn6rVnlLtM7yTihzYdOWF4uhKXYoh+UJaO47xbYJUzB5E
cE0Vdmnh5EBGgkCZAcJ64Xvhn5c7TpizLJiDJlSWhU3fdtZ96VhYGiXaL5eytfQR
8aBRSs9x61Kq11FiaDf/AVaKkV6oCLIYwaE9QGIlAoGBAL1JAn9QxaZk2qkcir94
7fZtvuVA5U5WUDau2qhdYgPAefVBn1ID65Em52juFQVX2/QpxMdK6NfQurtof731
XoLUnqB5cf1etuL0ihKVgBQsJ4x996Ht8ledwDh8uMc1nyd4IIbgo4TU2b4hjRPO
U/7juGQEOUE03MnBpVgGz9YU
-----END PRIVATE KEY-----

+ 9
- 9
jeecg-boot-module-system/src/main/resources/application-prod.yml View File

@ -136,7 +136,7 @@ spring:
master: master:
url: jdbc:mysql://8.138.162.67:3306/employ2?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false url: jdbc:mysql://8.138.162.67:3306/employ2?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false
username: root username: root
password: F^E5!Kfd
password: Fk4q*h@V
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置 # 多数据源配置
#multi-datasource1: #multi-datasource1:
@ -333,8 +333,8 @@ third-app:
wechat: wechat:
mpAppId: wx6931d85f7371b032 mpAppId: wx6931d85f7371b032
mpAppSecret: 4bc2d5bdfec7023818ece6ee41613f18 mpAppSecret: 4bc2d5bdfec7023818ece6ee41613f18
mchId:
mchKey:
mchId: 1704045304
mchKey: 0fdb77429ffdf206c151af76a663041c
keyPath: /usr/local/cert/apiclient_cert.p12 keyPath: /usr/local/cert/apiclient_cert.p12
notifyRechargeUrl: https://employadmin.hhlm1688.com/employ-api/pay/payRechargeNotify notifyRechargeUrl: https://employadmin.hhlm1688.com/employ-api/pay/payRechargeNotify
notifyUrl: https://employadmin.hhlm1688.com/employ-api/pay/notify notifyUrl: https://employadmin.hhlm1688.com/employ-api/pay/notify
@ -344,20 +344,20 @@ wechat:
savePath: WxCodeFile savePath: WxCodeFile
keyPemPath: apiclient_key.pem keyPemPath: apiclient_key.pem
serialNo: serialNo:
apiV3Key:
apiV3Key: 0fdb77429ffdf206c151af76a663041c
baseUrl: https://api.mch.weixin.qq.com/v3 baseUrl: https://api.mch.weixin.qq.com/v3
`
wxpay: wxpay:
#应用编号 #应用编号
appId:
appId: wx6931d85f7371b032
#商户号 #商户号
mchId:
mchId: 1704045304
# APIv2密钥 # APIv2密钥
apiKey:
apiKey: 0fdb77429ffdf206c151af76a663041c
# APIv3密钥 # APIv3密钥
apiV3Key:
apiV3Key: 0fdb77429ffdf206c151af76a663041c
# 微信支付V3-url前缀 # 微信支付V3-url前缀
baseUrl: https://api.mch.weixin.qq.com/v3 baseUrl: https://api.mch.weixin.qq.com/v3
# 密钥路径,resources根目录下 # 密钥路径,resources根目录下


Loading…
Cancel
Save