server/README.md
@@ -1,25 +1,18 @@ 一、打包注意事项: 1、打包pro环境,开启ScheduleTool定时器任务,命名:tielangtou.jar 2、打包proTwo环境,关闭ScheduleTool定时器任务,命名:tielangtou12.jar 3、打包proThree环境,关闭ScheduleTool定时器任务,命名:tielangtou13.jar 1、打包服务端接口pro环境,命名:bike_admin_api.jar 3、打包客户端接口pro环境,命名:bike_h5_api.jar 二、启动命令: 1、查看当前运行进程,ps -ef | grep java 2、关闭三个java进程,kill -9 xxxx 3、jar存放目录 /usr/local/static_resources 3、jar存放目录 /usr/local/parks 4、启动命令: nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou.jar >/usr/local/static_resources/log.log 2>/usr/local/static_resources/err.log & nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou12.jar >/usr/local/static_resources/log12.log 2>/usr/local/static_resources/err12.log & nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou13.jar >/usr/local/static_resources/log13.log 2>/usr/local/static_resources/err13.log & nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou14.jar >/usr/local/static_resources/log14.log 2>/usr/local/static_resources/err14.log & nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou15.jar >/usr/local/static_resources/log15.log 2>/usr/local/static_resources/err15.log & nohup java -Xms2g -Xmx2g -Xmn2g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/static_resources/tielangtou16.jar >/usr/local/static_resources/log16.log 2>/usr/local/static_resources/err16.log & nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/parks/bike_admin_api.jar >/usr/local/parks/log.log 2>/usr/local/parks/err.log & nohup java -Xms3g -Xmx3g -Xmn3g -XX:MetaspaceSize=1536m -XX:MaxMetaspaceSize=1536m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -jar /usr/local/parks/bike_h5_api.jar >/usr/local/parks/log.log 2>/usr/local/parks/err.log & 5、再次查看当前运行进程,ps -ef | grep java,三个进程是否正常 三、日志查看命令: tail -f /usr/local/static_resources/log.log tail -f /usr/local/static_resources/log12.log tail -f /usr/local/static_resources/log13.log tail -f /usr/local/parks/log.log tail -f /usr/local/parks/error.log server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -70,12 +70,11 @@ * 測試 * @throws Exception */ @Scheduled(cron = "0 0 21 * * ? ") @Scheduled(cron = "0 30 13 * * ? ") public void getYesterdayBill() throws Exception { log.info("=====================开始每天自动结算======================="); goodsorderService.autoCloseOrder(); log.info("=====================结束每天自动结算======================="); } /** @@ -117,7 +116,7 @@ String appSecret = wxPayProperties.getAppSecret(); if(wxPayProperties.getExistsSub() ==1){ //如果是服务商支付,取子商户信息 appId = StringUtils.trimToNull(wxPayProperties.getSubMchId()); appId = StringUtils.trimToNull(wxPayProperties.getSubAppId()); appSecret =StringUtils.trimToNull(wxPayProperties.getSubAppSecret()); } //生成微信token @@ -137,7 +136,7 @@ @Scheduled(fixedDelay = 1000L * 60L ) public void autoCancelRefunOrder(){ log.info("=====================开始 自動取消未推送退款状态的退款单状态======================="); refundService.autoCancelRefunOrder();; goodsorderService.autoCancelRefunOrder();; log.info("=====================结束 自動取消未推送退款状态的退款单状态======================="); } server/platform/src/main/resources/application.yml
@@ -9,7 +9,7 @@ # application: # name: parkbike profiles: active: test active: pro # JSON返回配置 jackson: # 默认时区 server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
@@ -16,6 +16,7 @@ import com.doumee.dao.system.model.SystemDictData; import com.wechat.pay.java.service.refund.model.AmountReq; import com.wechat.pay.java.service.refund.model.CreateRequest; import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -82,7 +83,9 @@ amountReq.setCurrency("CNY"); request.setAmount(amountReq); try { log.error("=============="+JSONObject.toJSONString(request)); com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.create(request); log.error("=============="+JSONObject.toJSONString(response)); if ("SUCCESS".equals(response.getStatus().name()) || "PROCESSING".equals(response.getStatus().name()) ) { return true; @@ -95,6 +98,27 @@ } } @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public com.wechat.pay.java.service.refund.model.Refund isSuucessRefund(String outTradeNo) { // 发送退款请求 QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); request.setOutRefundNo(outTradeNo); request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); try { log.error("=============="+JSONObject.toJSONString(request)); com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.queryByOutRefundNo(request); log.error("=============="+JSONObject.toJSONString(response)); if ("SUCCESS".equals(response.getStatus().name()) || "PROCESSING".equals(response.getStatus().name()) ) { return response; } }catch (Exception e){ e.printStackTrace(); } return null; } public Refund wxRefundOld(RefundDTO refundDTO) { // 发送退款请求 String refNum = ID.nextGUID(); server/services/src/main/java/com/doumee/dao/business/web/response/HomeResponse.java
@@ -38,7 +38,7 @@ private String leaseNotice; @ApiModelProperty(value = "押金状态:0=未支付押金;1=已支付押金;") @ApiModelProperty(value = "押金状态:0=未支付押金;1=已支付押金; 2=退款中") private Integer depositStatus = 0; @ApiModelProperty(value = "订单主键") server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -188,4 +188,6 @@ void goodsOrderSettlement(String memberId); void autoCloseOrder(); void autoCancelRefunOrder(); } server/services/src/main/java/com/doumee/service/business/RefundService.java
@@ -102,5 +102,4 @@ List<RefundPlatExportVO> findPlatExportPage( Refund pageWrap); void autoCancelRefunOrder(); } server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -45,6 +45,7 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension; import com.wechat.pay.java.service.partnerpayments.jsapi.model.*; import com.wechat.pay.java.service.refund.model.RefundNotification; import com.wechat.pay.java.service.refund.model.Status; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -373,8 +374,19 @@ .eq("member_id",memberId) .eq("status",Constants.goodsorderStatus.pay) .last(" limit 1 ")); if(!Objects.isNull(goodsorder)&&goodsorder.getStatus().equals(Constants.goodsorderStatus.pay)){ homeResponse.setDepositStatus(Constants.goodsorderStatus.pay); homeResponse.setDepositStatus(Constants.ZERO); if(goodsorder!=null){ Refund r = this.refundMapper.selectOne(new QueryWrapper<Refund>().lambda() .eq(Refund::getObjId,goodsorder.getId()) .eq(Refund::getIsdeleted,Constants.ZERO) .eq(Refund::getStatus,Constants.ZERO) .last("limit 1" )); if(r!=null){ homeResponse.setDepositStatus(Constants.TWO); }else{ homeResponse.setDepositStatus(Constants.ONE); } if( goodsorder.getStatus().equals(Constants.goodsorderStatus.pay)){ homeResponse.setGoodsOrderId(goodsorder.getId()); //查询当前骑行状态 MemberRides memberRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().lambda() @@ -408,6 +420,9 @@ homeResponse.setMemberRidesResponse(memberRidesResponse); } } } return homeResponse; } @@ -504,6 +519,7 @@ memberRides.get(0).setActualPrice(closeMoney); } int refundMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(closeMoney)).intValue();//计算价格 if(refundMoney>0){ RefundDTO refundDTO = new RefundDTO(); refundDTO.setOrderId(goodsorder.getId()); refundDTO.setCanBalance(goodsorder.getMoney()); @@ -513,9 +529,78 @@ refundDTO.setReason(Constants.REFUND_TYPE.get(type).getName()); refundDTO.setCreator(goodsorder.getEditor()); refundDTO.setType(type); wxMiniUtilService.wxRefund(refundDTO); boolean res = wxMiniUtilService.wxRefund(refundDTO); }else{ //无退款结算 closeGoodsorderDoneNoRefund(goodsorder,type,new BigDecimal(0),null); } } public void closeGoodsorderDoneNoRefund(Goodsorder goodsorder,int type,BigDecimal refundMoney,String closeId) { log.error("========================================"+JSONObject.toJSONString(goodsorder)); if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){ return; } BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refundMoney)); //进行订单结算业务处理 List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId()); //默认结算为押金金额 if (!CollectionUtils.isEmpty(memberRides)){ //骑行总时长 for(MemberRides model :memberRides){ MemberRides up = new MemberRides(); up.setId(model.getId()); up.setActualPrice(model.getActualPrice()); up.setCloseDate(goodsorder.getEditDate()); up.setCloseStatus(Constants.ONE); up.setEditor(goodsorder.getEditor()); up.setEditDate(goodsorder.getEditDate()); //更新骑行记录的计算金额和状态 memberRidesJoinMapper.updateById(up); } } // BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney())); //退款乐行 // int type =Constants.formatIntegerNum(refund.getType()); Goodsorder update = new Goodsorder(); update.setId(goodsorder.getId()); update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); update.setCloseMoney(closeMoney); update.setCloseStatus(Constants.ONE); update.setCloseDate(new Date()); update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo()); update.setCloseUserId(goodsorder.getEditor()); if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ //如果是强制结算 update.setCloseType(Constants.ONE); // LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); // update.setEditor(principal.getId()); }else if(Constants.REFUND_TYPE.NORMAL.getKey() == type){ //如果是自行結算 update.setCloseType(Constants.ZERO); }else{ //如果是平台自动结算 update.setCloseType(Constants.TWO); } update.setCloseId(closeId); //存储 消费交易流水 Transactions transactions = new Transactions(); transactions.setId(Constants.getUUID()); transactions.setMemberId(goodsorder.getMemberId()); transactions.setCreateDate(new Date()); transactions.setIsdeleted(Constants.ZERO); transactions.setOrderId(goodsorder.getId()); transactions.setMoney(closeMoney); transactions.setType(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getKey()); transactions.setDoneDate(new Date()); transactions.setTitle(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getName()); transactions.setContent(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getInfo()); transactions.setBalance(BigDecimal.ZERO); transactions.setObjId(goodsorder.getId()); transactions.setObjType(Constants.ONE); transactionsMapper.insert(transactions); //修改订单信息 goodsorderMapper.updateById(update); } /** * 退款成功回调 */ @@ -541,9 +626,12 @@ } refund.setOnlineOrderid(param.getTransactionId()); doRefundTransactions(refund); //退款乐行 int type =Constants.formatIntegerNum(refund.getType()); Goodsorder goodsorder = goodsorderMapper.selectById(refund.getObjId()); if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getCloseStatus()) != Constants.ZERO){ closeGoodsorderDoneNoRefund(goodsorder,refund.getType(),refund.getMoney(),refund.getId()); /* log.error("========================================"+JSONObject.toJSONString(goodsorder)); if(goodsorder ==null || Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.HAVING_PAY.getKey()){ return; } //进行订单结算业务处理 @@ -563,21 +651,20 @@ memberRidesJoinMapper.updateById(up); } } BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney())); //退款乐行 int type =Constants.formatIntegerNum(refund.getType()); Goodsorder update = new Goodsorder(); update.setId(goodsorder.getId()); update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); update.setCloseMoney(closeMoney); update.setCloseStatus(Constants.ONE); update.setCloseDate(new Date()); update.setCloseInfo(Constants.REFUND_TYPE.get(refund.getType()).getInfo()); update.setCloseUserId(goodsorder.getEditor()); if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ //如果是强制结算 update.setCloseType(Constants.ONE); LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); update.setEditor(principal.getId()); // LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); // update.setEditor(principal.getId()); }else if(Constants.REFUND_TYPE.NORMAL.getKey() == type){ //如果是自行結算 update.setCloseType(Constants.ZERO); @@ -603,7 +690,7 @@ transactions.setObjType(Constants.ONE); transactionsMapper.insert(transactions); //修改订单信息 goodsorderMapper.updateById(update); goodsorderMapper.updateById(update);*/ } private void doRefundTransactions(Refund refund ) { @@ -999,6 +1086,39 @@ } @Override public void autoCancelRefunOrder(){ Date date = new Date(System.currentTimeMillis()-5*60L*1000L); List<Refund> list = refundMapper.selectList(new QueryWrapper<Refund>().lambda() .eq(Refund::getStatus,Constants.ZERO) .lt(Refund::getCreateDate,date)); if(list !=null && list.size()>0){ List<String> cancelIds = new ArrayList<>(); for(Refund r:list){ com.wechat.pay.java.service.refund.model.Refund res =wxMiniUtilService.isSuucessRefund(r.getId()); if(res !=null){ //如果退款成功 RefundNotification param = new RefundNotification(); param.setRefundStatus(Status.SUCCESS); param.setOutRefundNo(r.getId()); param.setTransactionId(res.getTransactionId()); //执行关闭订单业务 closeGoodsorderDone(param); }else{ //放入取消集合中 cancelIds.add(r.getId()); } } if(cancelIds.size()>0){ refundMapper.update(null, new UpdateWrapper<Refund>().lambda() .in(Refund::getId,cancelIds) .set(Refund::getStatus,Constants.ONE) .set(Refund::getEditDate,new Date()) .set(Refund::getInfo,"超时未回调,自动取消") ); } } } @Override public void autoCloseOrder( ) { server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2,6 +2,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -25,6 +26,7 @@ import com.doumee.dao.business.web.response.HomeResponse; import com.doumee.dao.business.web.response.UserResponse; import com.doumee.service.business.MemberService; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; @@ -46,6 +48,7 @@ * @date 2023/09/27 18:06 */ @Service @Slf4j public class MemberServiceImpl implements MemberService { @Autowired @@ -57,6 +60,7 @@ memberMapper.insert(member); return member.getId(); } @Override public String createManageMember(Member member) { @@ -315,9 +319,11 @@ */ @Override public AccountResponse wxLogin(String code) { log.error("================================"+code+ JSONObject.toJSONString( WxMiniConfig.wxMaService.getWxMaConfig())); try { //获取微信敏感数据 WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code); log.error("================================"+ JSONObject.toJSONString(session)); String openId = session.getOpenid(); String unionId = session.getUnionid(); if (StringUtils.isBlank(openId)) { @@ -349,6 +355,7 @@ accountResponse.setUserResponse(userResponse); return accountResponse; } catch (WxErrorException e) { log.error(e.getMessage()); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "微信登录异常!请联系管理员"); } } server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
@@ -4,6 +4,7 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.core.wx.WxMiniUtilService; import com.doumee.dao.business.RefundMapper; import com.doumee.dao.business.TransactionsMapper; import com.doumee.dao.business.join.RefundJoinMapper; @@ -18,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.wechat.pay.java.service.refund.model.RefundNotification; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,6 +46,7 @@ private RefundJoinMapper refundJoinMapper; @Autowired private TransactionsMapper transactionsMapper; @Override public String create(Refund refund) { @@ -123,17 +126,7 @@ } return PageData.from(refundIPage); } @Override public void autoCancelRefunOrder(){ Date date = new Date(System.currentTimeMillis()-5*60L*1000L); refundMapper.update(null, new UpdateWrapper<Refund>().lambda() .eq(Refund::getStatus,Constants.ZERO) .lt(Refund::getCreateDate,date) .set(Refund::getStatus,Constants.ONE) .set(Refund::getEditDate,new Date()) .set(Refund::getInfo,"超时未回调,自动取消") ); } @Override public List<RefundPlatExportVO> findPlatExportPage( Refund pageWrap) { pageWrap.setTypeList(new ArrayList<>()); server/services/src/main/resources/application-dev.yml
@@ -43,6 +43,7 @@ ########################微信支付相关配置######################## wx: pay: #服务商---------start------- appId: wx48fd8faa35cc8277 mchId: 1661770902 apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT @@ -53,12 +54,15 @@ keyPath: D://apiclient_cert.p12 privateCertPath: D://apiclient_cert.pem privateKeyPath: D://apiclient_key.pem #服务商-------------end--- existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 #子商户------------start---- subAppId: wxcd2b89fd2ff065f8 subAppSecret: 49c4a52f9ad87ba98307972664fe33b3 subAppSecret: 3336812504c830b1c3c5243f9ece407a subMchId: 1661772003 subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS #子商户------------end---- # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM typeId: gybike ########################mqtt相关配置######################## server/services/src/main/resources/application-pro.yml
@@ -1,6 +1,3 @@ # WEB服务器配置 server: port: 10012 spring: # 数据源配置 @@ -42,16 +39,32 @@ # 禁用swagger时的重定向地址 redirect-uri: / ########################微信支付相关配置######################## wx: pay: appId: wxcd2b89fd2ff065f8 #服务商---------start------- appId: wx48fd8faa35cc8277 mchId: 1661770902 apiV3Key: iF3kC8pL8dZ9iU3hN5fX9zI6eF4xQ6fT serialNumer: 368B835A194384FD583B83B77977B84127D2F655 notifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/wxPayNotify refundNotifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/wxRefundNotify # notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify keyPath: /usr/local/parks/cert/apiclient_cert.p12 privateCertPath: /usr/local/parks/cert/apiclient_cert.pem privateKeyPath: /usr/local/parks/cert/apiclient_key.pem #服务商-------------end--- existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 mchId: 1229817002 mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM notifyUrl: https://bikes.yxbhlt.cn/bike_h5_api/api/wxPayNotify keyPath: /usr/local/apiclient_cert.p12 #子商户------------start---- subAppId: wxf493d72d7e5ffe76 subAppSecret: a347bce54fd2f77a5272cc32b51264b0 subMchId: 1662894737 subMchKey: twTtOZJ28eqEvyMkv0WTJmhpgqaM9mmT #子商户------------end---- # mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM typeId: gybike ########################mqtt相关配置######################## mqtt: host: tcp://39.100.125.239:1883 server/services/src/main/resources/application-test.yml
@@ -49,13 +49,14 @@ serialNumer: 368B835A194384FD583B83B77977B84127D2F655 notifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxPayNotify refundNotifyUrl: https://dmtest.ahapp.net/bike_h5_api/api/wxRefundNotify # refundNotifyUrl: http://xiaopiqiu2.natapp1.cc/api/wxRefundNotify keyPath: /usr/local/apiclient_cert.p12 privateCertPath: /usr/local/apiclient_cert.pem privateKeyPath: /usr/local/apiclient_key.pem existsSub: 1 appSecret: 1ceb7c9dff3c4330d653adc3ca55ea24 subAppId: wxcd2b89fd2ff065f8 subAppSecret: 49c4a52f9ad87ba98307972664fe33b3 subAppSecret: 3336812504c830b1c3c5243f9ece407a subMchId: 1661772003 subMchKey: EVM8E15TKXE0OEMJFC0V6UFVIOZ5CSQS typeId: gybike server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
@@ -13,6 +13,8 @@ import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import com.wechat.pay.java.service.refund.model.RefundNotification; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.apache.shiro.mgt.DefaultSecurityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; @@ -109,7 +111,10 @@ } @PostMapping("/api/wxRefundNotify") public ApiResponse wxRefundNotify(HttpServletRequest request) { log.error("微信退款回调结果开始===========" ); try { DefaultSecurityManager securityManager = new DefaultSecurityManager(); SecurityUtils.setSecurityManager(securityManager); ServletInputStream inputStream = request.getInputStream(); StringBuffer stringBuffer = new StringBuffer(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); server/web/src/main/resources/application.yml
@@ -9,7 +9,7 @@ # application: # name: parkbike profiles: active: test active: pro # JSON返回配置 jackson: # 默认时区