From 63d035d8d2369337dd7938b053ec050a25e1865c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 22 Dec 2023 14:53:12 +0800
Subject: [PATCH] 富文本框输入版本变化
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java | 11 +
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 28 ++++
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 24 ++--
src/main/resources/templates/febs/views/modules/system/xcxSetting.html | 49 ++++---
src/main/java/cc/mrbird/febs/mall/dto/XcxSettingDto.java | 12 ++
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 31 +++++
src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java | 154 ++++++++++++++++++++-----
src/main/java/cc/mrbird/febs/pay/configure/WxPayConfiguration.java | 1
src/test/java/cc/mrbird/febs/PayTest.java | 26 ++--
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1
10 files changed, 255 insertions(+), 82 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
index fd186af..aa89c45 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -29,5 +29,6 @@
registration.excludePathPatterns("/api/leader/noLoginLeaderTitle");
registration.excludePathPatterns("/api/xcxPay/wxpayCallback");
registration.excludePathPatterns("/api/xcxPay/rechargeCallBack");
+ registration.excludePathPatterns("/api/xcxPay/xcxCodePayCallBack");
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
index 03153f4..32f60b3 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -3,6 +3,8 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.mall.dto.CashOutSettingDto;
+import cc.mrbird.febs.mall.dto.XcxSettingDto;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.ISystemService;
import lombok.RequiredArgsConstructor;
@@ -27,6 +29,7 @@
private ISystemService systemService;
private final ICommonService commonService;
+ private final DataDictionaryCustomMapper dictionaryCustomMapper;
@PostMapping(value = "/bonusSystemSetting")
public FebsResponse bonusSystemSetting(@RequestBody Map<String, Object> map) {
@@ -39,4 +42,29 @@
commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置");
return new FebsResponse().success();
}
+
+ @PostMapping(value = "/xcxSetting")
+ public FebsResponse cashOutSetting(XcxSettingDto xcxSettingDto) {
+ dictionaryCustomMapper.updateDicValueByTypeAndCode(
+ DataDictionaryEnum.XCX_APP_ID.getType(),
+ DataDictionaryEnum.XCX_APP_ID.getCode(),
+ xcxSettingDto.getAppId());
+ dictionaryCustomMapper.updateDicValueByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_ID.getType(),
+ DataDictionaryEnum.XCX_MCH_ID.getCode(),
+ xcxSettingDto.getMchId());
+ dictionaryCustomMapper.updateDicValueByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY.getCode(),
+ xcxSettingDto.getMchKey());
+ dictionaryCustomMapper.updateDicValueByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode(),
+ xcxSettingDto.getKeyPath());
+ dictionaryCustomMapper.updateDicValueByTypeAndCode(
+ DataDictionaryEnum.XCX_NOTICE_URL.getType(),
+ DataDictionaryEnum.XCX_NOTICE_URL.getCode(),
+ xcxSettingDto.getNotifyUrl());
+ return new FebsResponse().success();
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index 3f5d22d..bd53a6b 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -5,6 +5,7 @@
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.mall.dto.CashOutSettingDto;
import cc.mrbird.febs.mall.dto.ScoreSettingDto;
+import cc.mrbird.febs.mall.dto.XcxSettingDto;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import com.alibaba.fastjson.JSONObject;
@@ -40,7 +41,35 @@
@GetMapping("xcxSetting")
- public String xcxSetting() {
+ @RequiresPermissions("xcxSetting:update")
+ public String xcxSetting(Model model) {
+ String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_APP_ID.getType(),
+ DataDictionaryEnum.XCX_APP_ID.getCode()
+ ).getValue();
+ String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_ID.getType(),
+ DataDictionaryEnum.XCX_MCH_ID.getCode()
+ ).getValue();
+ String mchKey = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY.getCode()
+ ).getValue();
+ String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
+ ).getValue();
+ String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_NOTICE_URL.getType(),
+ DataDictionaryEnum.XCX_NOTICE_URL.getCode()
+ ).getValue();
+ XcxSettingDto xcxSettingDto = new XcxSettingDto();
+ xcxSettingDto.setAppId(appId);
+ xcxSettingDto.setMchId(mchId);
+ xcxSettingDto.setMchKey(mchKey);
+ xcxSettingDto.setKeyPath(keyPath);
+ xcxSettingDto.setNotifyUrl(notifyUrl);
+ model.addAttribute("xcxSetting", xcxSettingDto);
return FebsUtil.view("modules/system/xcxSetting");
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/XcxSettingDto.java b/src/main/java/cc/mrbird/febs/mall/dto/XcxSettingDto.java
new file mode 100644
index 0000000..42790b3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/XcxSettingDto.java
@@ -0,0 +1,12 @@
+package cc.mrbird.febs.mall.dto;
+
+import lombok.Data;
+
+@Data
+public class XcxSettingDto {
+ private String appId;
+ private String mchId;
+ private String mchKey;
+ private String notifyUrl;
+ private String keyPath;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
index 71d52c0..9ed8e8f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
@@ -324,8 +324,17 @@
@Override
public FebsResponse wxCodePay(ApiWxCodePayDto wxCodePayDto) {
Long orderId = wxCodePayDto.getOrderId();
- MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
String wxPayCode = wxCodePayDto.getWxPayCode();
+ /**
+ * auth_code 扫码支付付款码 微信付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头
+ */
+ String regex = "^(10|11|12|13|14|15)\\d{16}$";
+ boolean flag = wxPayCode.matches(regex);
+ if(!flag){
+ throw new FebsException("请打开微信付款码!");
+ }
+
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
mallOrderInfo.setTakeCode(wxPayCode);
List<ApiGetOrderOrderItemVo> appOrderItemByOrderId = mallOrderItemMapper.getAppOrderItemByOrderId(orderId);
if(CollUtil.isEmpty(appOrderItemByOrderId)){
diff --git a/src/main/java/cc/mrbird/febs/pay/configure/WxPayConfiguration.java b/src/main/java/cc/mrbird/febs/pay/configure/WxPayConfiguration.java
index 2ed1c3c..712cc5a 100644
--- a/src/main/java/cc/mrbird/febs/pay/configure/WxPayConfiguration.java
+++ b/src/main/java/cc/mrbird/febs/pay/configure/WxPayConfiguration.java
@@ -1,7 +1,6 @@
package cc.mrbird.febs.pay.configure;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cn.hutool.core.util.StrUtil;
import com.github.binarywang.wxpay.config.WxPayConfig;
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index caf30b6..de14692 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -73,11 +73,11 @@
@Autowired
private IApiMallMemberWalletService memberWalletService;
- @Autowired
- private WxPayService wxPayService;
-
- @Autowired
- private IXcxCodePayService xcxCodePayService;
+// @Autowired
+// private WxPayService wxPayService;
+//
+// @Autowired
+// private IXcxCodePayService xcxCodePayService;
@Autowired
private IXcxPayService iXcxPayService;
@@ -299,13 +299,13 @@
}
- @PostMapping(value = "/xcxCodePayCallBack")
- public String xcxCodePayCallBack(@RequestBody String xmlData) throws WxPayException {
- log.info("=======微信支付码付款回调:{}========", xmlData);
- WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
- xcxCodePayService.payCallback(notifyResult.toMap());
- return WxPayNotifyResponse.success("成功");
- }
+// @PostMapping(value = "/xcxCodePayCallBack")
+// public String xcxCodePayCallBack(@RequestBody String xmlData) throws WxPayException {
+// log.info("=======微信支付码付款回调:{}========", xmlData);
+// WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
+// xcxCodePayService.payCallback(notifyResult.toMap());
+// return WxPayNotifyResponse.success("成功");
+// }
}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
index 5cea005..d45e026 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
@@ -1,33 +1,39 @@
package cc.mrbird.febs.pay.service.impl;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.exception.FebsException;
-import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
-import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
-import cc.mrbird.febs.pay.model.JsApiPayBusiness;
-import cc.mrbird.febs.pay.model.JsApiPayReqData;
-import cc.mrbird.febs.pay.model.JsApiPayResData;
import cc.mrbird.febs.pay.service.IXcxCodePayService;
+import cc.mrbird.febs.pay.util.RandomStringGenerator;
+import cc.mrbird.febs.pay.util.Signature;
import cc.mrbird.febs.pay.util.WebUtil;
-import cn.hutool.core.date.DateField;
-import cn.hutool.core.date.DatePattern;
+import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
-import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
+import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
@Slf4j
@@ -36,37 +42,121 @@
public class xcxCodePayServiceImpl implements IXcxCodePayService {
private final MallOrderInfoMapper mallOrderInfoMapper;
- private final WxPayService wxService;
-
+ private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+ private final WeixinServiceUtil weixinServiceUtil;
+ private static final String PAY_SUCCESS = "SUCCESS";
+ private static final String PAY_USERPAYING = "USERPAYING";
@Override
public String pay(MallOrderInfo mallOrderInfo) {
- WxPayMicropayRequest request = new WxPayMicropayRequest();
- request
- request.setAppid(wxPayProperties.getAppId());
- request.setMchId(wxPayProperties.getMchId());
- request.setNotifyUrl(wxPayProperties.getNoticeUrl());
- request.setBody(orderInfo.getName());
- request.setOutTradeNo(orderInfo.getOrderNo());
- request.setTimeExpire(DateUtil.format(DateUtil.offset(new Date(), DateField.MINUTE, 15), DatePattern.PURE_DATETIME_PATTERN));
- request.setSpbillCreateIp("127.0.0.1");
- request.setTradeType("APP");
-// if ("dev".equals(active) || "test".equals(active)) {
- if ("dev".equals(active)) {
- request.setTotalFee(1);
- } else {
- request.setTotalFee(orderInfo.getAmount().add(orderInfo.getCarriage()).multiply(new BigDecimal(100)).intValue());
- }
+ String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_APP_ID.getType(),
+ DataDictionaryEnum.XCX_APP_ID.getCode()
+ ).getValue();
+ String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_ID.getType(),
+ DataDictionaryEnum.XCX_MCH_ID.getCode()
+ ).getValue();
+ String paySecret = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY.getCode()
+ ).getValue();
+ String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
+ DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
+ ).getValue();
+ String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.XCX_NOTICE_URL.getType(),
+ DataDictionaryEnum.XCX_NOTICE_URL.getCode()
+ ).getValue();
+ WxPayConfig payConfig = new WxPayConfig();
+ payConfig.setAppId(StrUtil.trim(appId));
+ payConfig.setMchId(StrUtil.trim(mchId));
+ payConfig.setMchKey(StrUtil.trim(paySecret));
+ payConfig.setKeyPath(StrUtil.trim(keyPath));
+ payConfig.setNotifyUrl(StrUtil.trim(notifyUrl));
+
+ // 可以指定是否使用沙箱环境
+ payConfig.setUseSandboxEnv(false);
+
+ WxPayService wxPayService = new WxPayServiceImpl();
+ wxPayService.setConfig(payConfig);
+ WxPayMicropayRequest request = new WxPayMicropayRequest();
+ /**
+ *
+ Map<String, String> map = new HashMap<>(16);
+ map.put("attach", "订单额外描述");
+ map.put("auth_code", auth_code);
+ map.put("body", "付款码支付测试");
+ map.put("device_info", "1000");
+ map.put("nonce_str", WXPayUtil.generateNonceStr());
+ map.put("out_trade_no", out_trade_no);
+ map.put("spbill_create_ip", "14.17.22.52");
+ map.put("total_fee", "2");
+ //生成签名
+ String sign = WXPayUtil.generateSignature(map, config.getKey());
+ map.put("sign", sign);
+ */
+ request.setAppid(appId);
+ request.setMchId(mchId);
+ request.setNonceStr(RandomStringGenerator.getRandomStringByLength(32));
+ request.setBody(mallOrderInfo.getName());
+ request.setOutTradeNo(mallOrderInfo.getOrderNo());
+ int totalFee = mallOrderInfo.getAmount().subtract(mallOrderInfo.getCarriage()).multiply(new BigDecimal(100)).intValue();
+ request.setTotalFee(totalFee);
+ request.setSpbillCreateIp(weixinServiceUtil.getIpAddr(WebUtil.getRequest()));
+ request.setAuthCode(mallOrderInfo.getTakeCode());
try {
- WxPayMicropayResult micropay = wxService.micropay(request);
- return JSONObject.toJSONString(micropay);
+ request.setSign(Signature.getSign(request,paySecret));
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ throw new FebsException("签名异常");
+ }
+ try {
+ WxPayMicropayResult micropay = wxPayService.micropay(request);
+ String returnCode = micropay.getReturnCode();
+ String resultCode = micropay.getResultCode();
+ String errCode = micropay.getErrCode();
+ String outTradeNo = micropay.getOutTradeNo();
+ String errCodeDes = micropay.getErrCodeDes();
+ /**
+ * 交易成功判断条件:return_code和result_code都为SUCCESS且trade_type为MICROPAY
+ */
+
+ if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
+ log.info("微信免密支付成功");
+ return PAY_SUCCESS;
+ } else if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
+ for(int i = 0; i < 4; i++){
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ //调用微信的查询接口
+ /**
+ * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
+ */
+ WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
+ wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
+ WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
+ String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
+ String resultCodePaying = wxPayOrderQueryResult.getResultCode();
+ String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
+ if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(resultCodePaying)){
+ log.info("微信加密支付成功!");
+ return PAY_SUCCESS;
+ }
+ log.info("正在支付" + wxPayOrderQueryResult.getDetail());
+ }
+ }
+ log.error("微信支付失败!");
+ return errCodeDes;
} catch (WxPayException e) {
e.printStackTrace();
- throw new FebsException("支付异常, 请检查");
+ throw new FebsException("支付异常");
}
- return null;
-
}
@Override
diff --git a/src/main/resources/templates/febs/views/modules/system/xcxSetting.html b/src/main/resources/templates/febs/views/modules/system/xcxSetting.html
index b936063..fc33d06 100644
--- a/src/main/resources/templates/febs/views/modules/system/xcxSetting.html
+++ b/src/main/resources/templates/febs/views/modules/system/xcxSetting.html
@@ -1,36 +1,40 @@
-<div class="layui-fluid layui-anim febs-anim" id="xcx-setting" lay-title="小程序设置">
+<div class="layui-fluid layui-anim febs-anim" id="xcx-setting" lay-title="微信收款码支付设置">
<div class="layui-row layui-col-space8 febs-container">
<form class="layui-form" action="" lay-filter="xcx-setting-form">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-form-item">
- <label class="layui-form-label ">每次最小提现金额:</label>
+ <label class="layui-form-label ">APPID:</label>
<div class="layui-input-block">
- <input type="text" name="minCashOut" data-th-id="${cashout.minCashOut}"
- lay-verify="number" autocomplete="off" class="layui-input" >
+ <input type="text" name="appId" lay-verify="text" autocomplete="off" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
- <label class="layui-form-label ">每日提现上限:</label>
+ <label class="layui-form-label ">MCHID:</label>
<div class="layui-input-block">
- <input type="text" name="allCashOut" data-th-id="${cashout.allCashOut}"
- lay-verify="number" autocomplete="off" class="layui-input" >
+ <input type="text" name="mchId" lay-verify="text" autocomplete="off" class="layui-input" >
</div>
+ <div class="layui-word-aux" style="margin-left: 150px;">商户号</div>
</div>
<div class="layui-form-item">
- <label class="layui-form-label ">提现手续费:</label>
+ <label class="layui-form-label ">MCHKEY:</label>
<div class="layui-input-block">
- <input type="text" name="serviceFee" data-th-id="${cashout.serviceFee}"
- lay-verify="text" autocomplete="off" class="layui-input" >
+ <input type="text" name="mchKey" lay-verify="text" autocomplete="off" class="layui-input" >
</div>
- <div class="layui-word-aux" style="margin-left: 150px;">提现手续费:直接输入百分比,例如25%,直接输入25</div>
+ <div class="layui-word-aux" style="margin-left: 150px;">商户支付密钥</div>
</div>
<div class="layui-form-item">
- <label class="layui-form-label">提现时间:</label>
+ <label class="layui-form-label">证书地址:</label>
<div class="layui-input-block">
- <input type="radio" name="workingDays" value="1" title="工作日">
- <input type="radio" name="workingDays" value="2" title="每一天">
+ <input type="text" name="keyPath" lay-verify="text" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-word-aux" style="margin-left: 150px;">证书地址p12,服务器路径</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">回调地址:</label>
+ <div class="layui-input-block">
+ <input type="text" name="notifyUrl" lay-verify="text" autocomplete="off" class="layui-input" >
</div>
</div>
</div>
@@ -60,28 +64,29 @@
var $ = layui.jquery,
febs = layui.febs,
form = layui.form,
- cashout = [[${cashout}]],
+ xcxSetting = [[${xcxSetting}]],
validate = layui.validate,
$view = $('#xcx-setting');
form.verify(validate);
- initCashoutValue();
+ xcxSettingValue();
form.render();
- function initCashoutValue() {
+ function xcxSettingValue() {
form.val("xcx-setting-form", {
- "minCashOut": cashout.minCashOut,
- "allCashOut": cashout.allCashOut,
- "serviceFee": cashout.serviceFee,
- "workingDays": cashout.workingDays
+ "appId": xcxSetting.appId,
+ "mchId": xcxSetting.mchId,
+ "mchKey": xcxSetting.mchKey,
+ "keyPath": xcxSetting.keyPath,
+ "notifyUrl": xcxSetting.notifyUrl
});
}
form.on('submit(xcx-setting-form-submit)', function (data) {
console.log(data);
- febs.post(ctx + 'admin/system/cashOutSetting', data.field, function (res) {
+ febs.post(ctx + 'admin/system/xcxSetting', data.field, function (res) {
febs.alert.success('设置成功');
});
window.location.reload();
diff --git a/src/test/java/cc/mrbird/febs/PayTest.java b/src/test/java/cc/mrbird/febs/PayTest.java
index ede5efa..0c965f2 100644
--- a/src/test/java/cc/mrbird/febs/PayTest.java
+++ b/src/test/java/cc/mrbird/febs/PayTest.java
@@ -17,17 +17,17 @@
@SpringBootTest
public class PayTest {
- @Test
- public void aliPay() throws AlipayApiException {
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
- model.setBody("这是测试用");
- model.setSubject("支付测试用的");
- model.setOutTradeNo("2021092712215802974");
- model.setTimeoutExpress("15m");
- model.setTotalAmount("0.01");
- model.setPassbackParams("callback params");
- model.setProductCode("QUICK_MSECURITY_PAY");
- AlipayTradeAppPayResponse resp = AliPayApi.appPayToResponse(model, "");
- log.info("=====>>>{}", JSONObject.toJSONString(resp));
- }
+// @Test
+// public void aliPay() throws AlipayApiException {
+// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+// model.setBody("这是测试用");
+// model.setSubject("支付测试用的");
+// model.setOutTradeNo("2021092712215802974");
+// model.setTimeoutExpress("15m");
+// model.setTotalAmount("0.01");
+// model.setPassbackParams("callback params");
+// model.setProductCode("QUICK_MSECURITY_PAY");
+// AlipayTradeAppPayResponse resp = AliPayApi.appPayToResponse(model, "");
+// log.info("=====>>>{}", JSONObject.toJSONString(resp));
+// }
}
--
Gitblit v1.9.1