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