提交代码

yy_dev
胡锐 1 year ago
parent c85be0e647
commit 5956ab89d3
  1. 3
      cweb/src/main/java/com/cweb/config/AuthConfig.java
  2. 66
      cweb/src/main/java/com/cweb/controller/BsMerController.java
  3. 33
      cweb/src/main/java/com/cweb/controller/BsMerPlatformNoController.java
  4. 70
      cweb/src/main/java/com/cweb/controller/BsTradeOrderController.java
  5. 113
      cweb/src/main/java/com/cweb/controller/PayController.java
  6. 23
      cweb/src/main/java/com/cweb/controller/TestController.java
  7. 91
      cweb/src/main/java/com/cweb/notify/TianQueController.java
  8. 83
      open-api/src/main/java/com/api/controller/v1/NotifyController.java
  9. 2
      open-api/src/main/resources/dev/application.yml
  10. 16
      schedule/src/main/java/com/hfkj/schedule/Merchant.java
  11. 175
      schedule/src/main/java/com/hfkj/schedule/TradeOrderSchedule.java
  12. 3
      service/src/main/java/com/hfkj/channel/lakala/LaKaLaTradeService.java
  13. 428
      service/src/main/java/com/hfkj/channel/saas/SaasMerService.java
  14. 7
      service/src/main/java/com/hfkj/channel/saas/config/SaasConfig.java
  15. 2
      service/src/main/java/com/hfkj/channel/tianque/service/TianQueMerElecSignService.java
  16. 800
      service/src/main/java/com/hfkj/channel/tianque/service/TianQueMerService.java
  17. 326
      service/src/main/java/com/hfkj/channel/tianque/service/TianQueTradeService.java
  18. 10
      service/src/main/java/com/hfkj/config/CommonSysConfig.java
  19. 10
      service/src/main/java/com/hfkj/dao/BsMerContractRecordMsgMapperExt.java
  20. 77
      service/src/main/java/com/hfkj/dao/BsMerMapper.java
  21. 19
      service/src/main/java/com/hfkj/dao/BsMerPlatformNoMapper.java
  22. 14
      service/src/main/java/com/hfkj/dao/BsMerPlatformNoSqlProvider.java
  23. 42
      service/src/main/java/com/hfkj/dao/BsMerSqlProvider.java
  24. 48
      service/src/main/java/com/hfkj/entity/BsMer.java
  25. 190
      service/src/main/java/com/hfkj/entity/BsMerExample.java
  26. 16
      service/src/main/java/com/hfkj/entity/BsMerPlatformNo.java
  27. 60
      service/src/main/java/com/hfkj/entity/BsMerPlatformNoExample.java
  28. 5
      service/src/main/java/com/hfkj/model/StoreModel.java
  29. 28
      service/src/main/java/com/hfkj/openapi/v1/service/impl/OpenApiTradeOrderServiceImpl.java
  30. 46
      service/src/main/java/com/hfkj/openapi/v1/utils/SignatureUtil.java
  31. 3
      service/src/main/java/com/hfkj/service/BsMerContractRecordMsgService.java
  32. 7
      service/src/main/java/com/hfkj/service/BsMerContractRecordService.java
  33. 3
      service/src/main/java/com/hfkj/service/BsMerContractService.java
  34. 17
      service/src/main/java/com/hfkj/service/BsMerPlatformNoService.java
  35. 5
      service/src/main/java/com/hfkj/service/impl/BsMerContractRecordMsgServiceImpl.java
  36. 11
      service/src/main/java/com/hfkj/service/impl/BsMerContractRecordServiceImpl.java
  37. 33
      service/src/main/java/com/hfkj/service/impl/BsMerContractServiceImpl.java
  38. 49
      service/src/main/java/com/hfkj/service/impl/BsMerPlatformNoServiceImpl.java
  39. 12
      service/src/main/java/com/hfkj/service/impl/BsMerServiceImpl.java
  40. 12
      service/src/main/java/com/hfkj/service/impl/BsTradeOrderRefundServiceImpl.java
  41. 14
      service/src/main/java/com/hfkj/service/impl/BsTradeOrderServiceImpl.java
  42. 51
      service/src/main/java/com/hfkj/sysenum/MerOnlineType.java
  43. 49
      service/src/main/java/com/hfkj/sysenum/MerOperateType.java
  44. 52
      service/src/main/resources/dev/commonConfig.properties
  45. 8
      service/src/main/resources/prod-9606/commonConfig.properties
  46. 8
      service/src/main/resources/prod/commonConfig.properties

@ -101,6 +101,7 @@ public class AuthConfig implements WebMvcConfigurer {
.excludePathPatterns("/pay/jsapiPay")
.excludePathPatterns("/pay/rotationQueryTrade")
.excludePathPatterns("/laKaLaNotify/*")
.excludePathPatterns("/tianqueNotify/*")
.excludePathPatterns("/weiXinNotify/*")
.excludePathPatterns("/deviceOrderPay/orderNotify")
.excludePathPatterns("/storeDiscountActivityPartakeUser/*")
@ -111,7 +112,7 @@ public class AuthConfig implements WebMvcConfigurer {
.excludePathPatterns("/common/*")
.excludePathPatterns("/mer/*")
.excludePathPatterns("/tradeOrder/calculation")
.excludePathPatterns("/tradeOrder/getLkLUnionUserId")
.excludePathPatterns("/tradeOrder/getUnionUserId")
.excludePathPatterns("/login/*")
.excludePathPatterns("/test/*")
.excludePathPatterns("/sms/*")

@ -54,16 +54,16 @@ public class BsMerController {
@Resource
private BsMerService merService;
@Resource
private CommonService commonService;
@Resource
private BsIndustryService industryService;
@Resource
private BsLklMccService mccService;
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Resource
private BsMerContractRecordMsgService merContractRecordMsgService;
@Resource
private BsStoreService storeService;
@ -181,6 +181,7 @@ public class BsMerController {
|| StringUtils.isBlank(mer.getMerName())
|| StringUtils.isBlank(mer.getMerAbbreviate())
|| StringUtils.isBlank(mer.getMerMccCode())
|| mer.getMerOperateType() == null
|| StringUtils.isBlank(mer.getLarName())
|| StringUtils.isBlank(mer.getLarIdCard())
@ -215,22 +216,24 @@ public class BsMerController {
|| mer.getBlisPeriodType() == null
|| StringUtils.isBlank(mer.getBlisPeriodStart())
|| StringUtils.isBlank(mer.getBlisPeriodEnd())) {
log.error("configMerBasis error!","参数错误");
log.error("configMerBasis error!","需要上传营业执照");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "需要上传营业执照");
}
}
if (mer.getMerOperateType().equals(MerOperateType.type2.getNumber())) {
if (mer.getMerOnlineType() == null || StringUtils.isBlank(mer.getMerOnlineName())) {
log.error("configMerBasis error!","需要上传线上产品类型和产品名称");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "需要上传线上产品类型和产品名称");
}
}
// 查询商户详情
BsMer bsMer = merService.getMer(mer.getId());
if (bsMer == null) {
log.error("configMerBasis error!","未知商户类型");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知商户类型");
}
if ((!bsMer.getMerStatus().equals(MerStatusEnum.status2.getNumber())
&& !bsMer.getMerStatus().equals(MerStatusEnum.status4.getNumber()))) {
log.error("configMerBasis error!","状态错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.STATUS_ERROR, "");
}
// MCC编码
BsLklMcc mcc = mccService.getMccByCode(mer.getMerMccCode());
@ -269,6 +272,9 @@ public class BsMerController {
bsMer.setMerName(mer.getMerName());
bsMer.setMerAbbreviate(mer.getMerAbbreviate());
bsMer.setMerMccCode(mer.getMerMccCode());
bsMer.setMerOperateType(mer.getMerOperateType());
bsMer.setMerOnlineType(mer.getMerOnlineType());
bsMer.setMerOnlineName(mer.getMerOnlineName());
bsMer.setBlisUrl(mer.getBlisUrl());
bsMer.setBlisName(mer.getBlisName());
@ -358,11 +364,6 @@ public class BsMerController {
log.error("configMerBasis error!","未知商户");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知商户");
}
if ((!bsMer.getMerStatus().equals(MerStatusEnum.status2.getNumber())
&& !bsMer.getMerStatus().equals(MerStatusEnum.status4.getNumber()))) {
log.error("configMerBasis error!","状态错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.STATUS_ERROR, "");
}
// 对私非法人结算
if (merSettleAcct.getSettleType().equals(MerSettleType.status3.getNumber())) {
@ -431,11 +432,6 @@ public class BsMerController {
log.error("configMerBasis error!","参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
if ((!mer.getMerStatus().equals(MerStatusEnum.status2.getNumber())
&& !mer.getMerStatus().equals(MerStatusEnum.status4.getNumber()))) {
log.error("configMerBasis error!","状态错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.STATUS_ERROR, "");
}
if (storeModel.getId() == null) {
if (storeService.getStoreByMerId(mer.getId(), StoreCreateTypeEnum.type1).size() < 0) {
log.error("configMerBasis error!","已经创建了门店");
@ -538,10 +534,34 @@ public class BsMerController {
@RequestMapping(value="/getMerDetail",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询商户详情")
public ResponseData getMerDetail(@RequestParam(value = "merId" , required = true) Long merId) {
public ResponseData getMerDetail(@RequestParam(value = "merId" , required = true) Long merId,
@RequestParam(value = "merPlatformType" , required = false) Integer merPlatformType) {
try {
return ResponseMsgUtil.success(merService.getMerDetail(merId));
// 查询商户
MerBasisModel merDetail = merService.getMerDetail(merId);
if (merDetail == null) {
log.error("getMerDetail error!","未知的商户");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商户");
}
// 查询错误消息
if (merDetail.getMerStatus().equals(MerStatusEnum.status4.getNumber())) {
Map<String, Object> recordMsg = merContractRecordMsgService.getMerContractRecordMsg(merDetail.getId(), null);
recordMsg.put("response_msg", recordMsg.get("response_msg"));
merDetail.setMerContractFailMsg(recordMsg);
merDetail.setCompleteStatus(MerCompleteStatusEnum.status2.getNumber());
merDetail.setMerStatus(MerStatusEnum.status4.getNumber());
}
if (merPlatformType != null) {
BsMerPlatformNo platformNo = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.getDataByNumber(merPlatformType), MerPlatformNoStatusEnum.status3);
if (platformNo != null) {
Map<String, Object> recordMsg = new HashMap<>();
recordMsg.put("response_msg", platformNo.getSuggestionReject());
merDetail.setMerContractFailMsg(recordMsg);
merDetail.setCompleteStatus(MerCompleteStatusEnum.status2.getNumber());
merDetail.setMerStatus(MerStatusEnum.status4.getNumber());
}
}
return ResponseMsgUtil.success(merDetail);
} catch (Exception e) {
log.error(e.getMessage(), e);

@ -1,5 +1,9 @@
package com.cweb.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.entity.BsMerPlatformTerm;
@ -9,13 +13,11 @@ import com.hfkj.service.BsMerPlatformTermService;
import com.hfkj.sysenum.PlatformTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import netscape.javascript.JSObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
@ -36,8 +38,6 @@ public class BsMerPlatformNoController {
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Resource
private BsMerPlatformTermService merPlatformTermService;
@RequestMapping(value="/getMerPlatformList",method = RequestMethod.GET)
@ResponseBody
@ -49,12 +49,25 @@ public class BsMerPlatformNoController {
Map<String, Object> param = new HashMap<>();
param.put("merId", merId);
param.put("platformType", platformType);
return ResponseMsgUtil.success(merPlatformNoService.getMerPlatformNoList(param));
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/switchPlatform",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "切换渠道")
public ResponseData switchPlatform(@RequestBody JSONObject body) {
try {
List<BsMerPlatformNo> merPlatformNoList = merPlatformNoService.getMerPlatformNoList(param);
for (BsMerPlatformNo merPlatformNo : merPlatformNoList) {
merPlatformNo.setMerPlatformTerm(merPlatformTermService.getMerPlatformTerm(merPlatformNo.getId(), "WECHAT_PAY"));
if (body == null || body.getLong("merId") == null || body.getInteger("platformType") == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.OPEN_API_REQ_PARAMS_ERR, "");
}
return ResponseMsgUtil.success(merPlatformNoList);
merPlatformNoService.switchPlatform(body.getLong("merId"),PlatformTypeEnum.getDataByNumber(body.getInteger("platformType")));
return ResponseMsgUtil.success("操作成功");
} catch (Exception e) {
log.error(e.getMessage(), e);

@ -5,6 +5,7 @@ import com.alipay.api.domain.PayModeModel;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hfkj.channel.lakala.LaKaLaTradeService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
@ -69,9 +70,10 @@ public class BsTradeOrderController {
@Resource
private BsMerPlatformTermService platformTermService;
@Resource
private LaKaLaTradeService laKaLaTradeService;
@Resource
private TianQueTradeService tianQueTradeService;
@RequestMapping(value="/calculation",method = RequestMethod.GET)
@ResponseBody
@ -393,10 +395,10 @@ public class BsTradeOrderController {
}
}
@RequestMapping(value="/getLkLUnionUserId",method = RequestMethod.POST)
@RequestMapping(value="/getUnionUserId",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取拉卡拉银联用户id")
public ResponseData getLkLUnionUserId(@RequestBody JSONObject body) {
public ResponseData getUnionUserId(@RequestBody JSONObject body) {
try {
System.out.println(body);
if (body == null
@ -419,28 +421,54 @@ public class BsTradeOrderController {
log.error("BsPayQrCodeController error!","支付码已被停用");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付码已被停用");
}
// 查询商户号
BsMerPlatformNo platformNo = platformNoService.getPlatformNo(qrCode.getMerId(), PlatformTypeEnum.type1);
if (platformNo == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户号");
}
// 查询终端号
BsMerPlatformTerm merPlatformTerm = platformTermService.getMerPlatformTerm(platformNo.getId(), "WECHAT_PAY");
if (merPlatformTerm == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户终端号");
}
return ResponseMsgUtil.success(laKaLaTradeService.openidQuery(
platformNo.getCupNo(),
merPlatformTerm.getTermNo(),
body.getString("userAuthCode"),
"030304",
null,
body.getString("appUpIdentifier")
));
BsMerPlatformNo platform = platformNoService.getCurrentPlatform(qrCode.getMerId());
if (platform == null) {
log.error("BsPayQrCodeController error!","商户无法支付,未配置支付平台");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户无法支付,未配置支付平台");
}
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
// 查询商户号
BsMerPlatformNo platformNo = platformNoService.getPlatformNo(qrCode.getMerId(), PlatformTypeEnum.type1);
if (platformNo == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户号");
}
// 查询终端号
BsMerPlatformTerm merPlatformTerm = platformTermService.getMerPlatformTerm(platformNo.getId(), "WECHAT_PAY");
if (merPlatformTerm == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户终端号");
}
return ResponseMsgUtil.success(laKaLaTradeService.openidQuery(
platformNo.getCupNo(),
merPlatformTerm.getTermNo(),
body.getString("userAuthCode"),
"030304",
null,
body.getString("appUpIdentifier")
));
} else if (platform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
JSONObject unionInfo = tianQueTradeService.getUnionInfo(body.getString("userAuthCode"), body.getString("appUpIdentifier"));
// 返回格式
Map<String,Object> param = new HashMap<>();
param.put("retCode","BBS00000");
param.put("resMsg","处理成功");
Map<String,Object> respData = new HashMap<>();
respData.put("openld", unionInfo.getString("data"));
respData.put("subOpenld", unionInfo.getString("data"));
respData.put("userld", unionInfo.getString("data"));
param.put("respData", respData);
return ResponseMsgUtil.success(param);
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的平台");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMsgUtil.exception(e);
}
}
}

@ -2,18 +2,21 @@ package com.cweb.controller;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.ccb.CCBTradeService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.channel.weixin.WeiXinPayService;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.entity.BsPlatform;
import com.hfkj.channel.lakala.LaKaLaTradeService;
import com.hfkj.entity.BsTradeOrder;
import com.hfkj.model.ResponseData;
import com.hfkj.service.BsMerPlatformNoService;
import com.hfkj.service.BsPlatformService;
import com.hfkj.sysenum.PlatformTypeEnum;
import com.hfkj.sysenum.StoreDiscountActivityTypeEnum;
import com.hfkj.sysenum.UserDiscountTypeEnum;
import com.hfkj.service.BsTradeOrderService;
import com.hfkj.sysenum.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.MapUtils;
@ -34,18 +37,18 @@ import java.util.Map;
public class PayController {
private static Logger log = LoggerFactory.getLogger(PayController.class);
@Resource
private BsPlatformService platformService;
private BsTradeOrderService tradeOrderService;
@Resource
private LaKaLaTradeService laKaLaTradeService;
@Resource
private TianQueTradeService tianQueTradeService;
@Resource
private WeiXinPayService weiXinPayService;
@Resource
private CCBTradeService ccbTradeService;
@Resource
private BsMerPlatformNoService merPlatformNoService;
@RequestMapping(value="/microPay",method = RequestMethod.POST)
@ResponseBody
@ -59,34 +62,28 @@ public class PayController {
log.error("configStore error!","参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
// 查询当前支付
List<BsPlatform> platformList = platformService.getPlatformList();
for (BsPlatform platform : platformList) {
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
try {
Map<String, Object> order = laKaLaTradeService.microPay(body.getString("outTradeNo"), body.getString("authCode"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("拉卡拉支付失败", e.getMessage());
}
}
if (platform.getPlatformType().equals(PlatformTypeEnum.type3.getNumber())) {
try {
Map<String, Object> order = ccbTradeService.b2cPay(body.getString("outTradeNo"), body.getString("authCode"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("建行支付失败", e.getMessage());
// 查询交易
BsTradeOrder trade = tradeOrderService.getOrderByOutTradeNo(body.getString("outTradeNo"));
if (trade == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
if (!trade.getStatus().equals(TradeOrderStatusEnum.status1.getNumber())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单不处于待支付状态");
}
// 查询交易渠道
BsMerPlatformNo merPlatform = merPlatformNoService.getCurrentPlatform(trade.getMerId());
if (merPlatform == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知交易渠道");
}
if (merPlatform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
try {
Map<String, Object> order = laKaLaTradeService.microPay(body.getString("outTradeNo"), body.getString("authCode"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("拉卡拉支付失败", e.getMessage());
}
}
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付失败");
@ -105,25 +102,41 @@ public class PayController {
log.error("configStore error!","参数错误");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
// return ResponseMsgUtil.success(weiXinPayService.preorder(body.getString("outTradeNo")));
// 查询当前支付
List<BsPlatform> platformList = platformService.getPlatformList();
for (BsPlatform platform : platformList) {
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
try {
Map<String, Object> order = laKaLaTradeService.preorder(body.getString("outTradeNo"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("拉卡拉支付失败", e.getMessage());
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
// 查询交易
BsTradeOrder trade = tradeOrderService.getOrderByOutTradeNo(body.getString("outTradeNo"));
if (trade == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
if (!trade.getStatus().equals(TradeOrderStatusEnum.status1.getNumber())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单不处于待支付状态");
}
// 查询交易渠道
BsMerPlatformNo merPlatform = merPlatformNoService.getCurrentPlatform(trade.getMerId());
if (merPlatform == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知交易渠道");
}
if (merPlatform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
try {
Map<String, Object> order = laKaLaTradeService.preorder(body.getString("outTradeNo"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("拉卡拉支付失败", e.getMessage());
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
} else if (merPlatform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
try {
Map<String, Object> order = tianQueTradeService.preorder(body.getString("outTradeNo"));
if (StringUtils.isNotBlank(MapUtils.getString(order, "order"))) {
return ResponseMsgUtil.success(order);
}
} catch (Exception e) {
log.error("随行付支付失败", e.getMessage());
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, e.getMessage());
}
}
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "支付失败");
} catch (Exception e) {

@ -11,7 +11,9 @@ import com.hfkj.channel.saas.SaasActivityService;
import com.hfkj.channel.saas.SaasMerService;
import com.hfkj.channel.saas.utils.SaasCommon;
import com.hfkj.channel.saas.utils.SaasMerRequest;
import com.hfkj.channel.tianque.service.TianQueMerElecSignService;
import com.hfkj.channel.tianque.service.TianQueMerService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.channel.weixin.WeiXinMerService;
import com.hfkj.channel.weixin.utils.WxUtils;
import com.hfkj.channel.weixin.utils.sdk.WXPayConstants;
@ -97,6 +99,9 @@ public class TestController {
@Resource
private LaKaLaLedgerService laKaLaLedgerService;
@Resource
private BsMerContractService merContractService;
@Resource
private LaKaLaWalletService laKaLaWalletService;
@ -247,6 +252,10 @@ public class TestController {
@Resource
private TianQueMerService tianQueMerService;
@Resource
private TianQueTradeService tianQueTradeService;
@Resource
private TianQueMerElecSignService tianQueMerElecSignService;
@RequestMapping(value="/tianQueTest",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "tianQueTest")
@ -254,7 +263,11 @@ public class TestController {
try {
// tianQueMerService.addMer(Long.parseLong(code));
return ResponseMsgUtil.success(tianQueMerService.queryMerchantInfo(code));
// return ResponseMsgUtil.success(laKaLaTradeService.queryTrade(code));
// return ResponseMsgUtil.success(tianQueTradeService.preorder(code));
// return ResponseMsgUtil.success(tianQueTradeService.queryTrade(code));
// return ResponseMsgUtil.success(tianQueTradeService.poundageQuery("399200427027644",code));
// return ResponseMsgUtil.success(tianQueTradeService.refund(code, new BigDecimal("0.01")));
// return ResponseMsgUtil.success(tianQueTradeService.refundQuery(code));
// return ResponseMsgUtil.success("");
// 1200
// return ResponseMsgUtil.success(saasCommon.fileUpload(new HashMap<>()));
@ -729,13 +742,13 @@ public class TestController {
public ResponseData uniPush(@RequestParam(name = "storeId", required = true) Long storeId,@RequestParam(name = "price", required = true) BigDecimal price) {
try {
// merContractService.addMerContract(storeId, null);
// tianQueMerService.queryMerchantInfo("75a7161a441f49568b55bca14c03e743");
JSONObject object = new JSONObject();
/*
object.put("price", price);
object.put("storeId", storeId);
bsStoreCidService.storePush(object);
bsStoreCidService.storePush(object);*/
return ResponseMsgUtil.success("成功");

@ -1,9 +1,11 @@
package com.cweb.notify;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.lakala.LaKaLaLedgerService;
import com.hfkj.channel.lakala.LaKaLaWalletService;
import com.hfkj.channel.tianque.service.TianQueMerElecSignService;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.config.CommonSysConst;
import com.hfkj.entity.*;
import com.hfkj.service.*;
@ -22,6 +24,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -46,6 +49,8 @@ public class TianQueController {
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Resource
private BsMerPlatformTermService merPlatformTermService;
@Resource
private BsStoreService storeService;
@Resource
private BsMerContractRecordService merContractRecordService;
@ -65,55 +70,40 @@ public class TianQueController {
JSONObject body = JSONObject.parseObject(reqBody);
// 请求记录
BsTradeOrderMsg orderMsg = new BsTradeOrderMsg();
orderMsg.setOutTradeNo(body.getString("out_trade_no"));
orderMsg.setOutTradeNo(body.getString("ordNo"));
orderMsg.setType(TradeOrderMsgTypeEnum.type2.getNumber());
orderMsg.setResponseContent(reqBody);
tradeOrderMsgService.editTradeOrderMsg(orderMsg);
// 查询订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(body.getString("out_trade_no"));
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(body.getString("ordNo"));
if (order != null) {
Map<String,Object> other = new HashMap<>();
other.put("log_no", body.getString("log_no"));
other.put("acc_trade_no", body.getString("acc_trade_no"));
other.put("card_type", body.getString("card_type"));
other.put("acc_trade_no", body.getString("transactionId"));
other.put("card_type", body.getString("drType"));
if (body.getString("acc_settle_amount") != null) {
other.put("acc_settle_amount", body.getBigDecimal("acc_settle_amount").divide(new BigDecimal("100")));
other.put("acc_settle_amount", body.getBigDecimal("amt"));
}
if (body.getString("pointAmount") != null) {
other.put("acc_discount_amount", body.getBigDecimal("pointAmount"));
}
if (body.getString("acc_discount_amount") != null) {
other.put("acc_discount_amount", body.getBigDecimal("acc_discount_amount").divide(new BigDecimal("100")));
if (body.getString("clearDt") != null) {
other.put("settleDate", DateUtil.format(body.getString("clearDt"), "yyyyMMdd").getTime());
}
if (body.getString("acc_mdiscount_amount") != null) {
other.put("acc_mdiscount_amount", body.getBigDecimal("acc_mdiscount_amount").divide(new BigDecimal("100")));
if (body.getString("settleAmt") != null) {
other.put("settleAmount", body.getBigDecimal("settleAmt"));
}
tradeOrderService.paySuccess(
body.getString("out_trade_no"),
body.getString("trade_no"),
PlatformTypeEnum.type1,
TradeOrderPayModeEnum.getNameByCode(body.getString("account_type")),
body.getBigDecimal("total_amount").divide(new BigDecimal("100")),
body.getString("merchant_no"),
body.getString("ordNo"),
body.getString("uuid"),
PlatformTypeEnum.type5,
TradeOrderPayModeEnum.getNameByCode(body.getString("payType")),
body.getBigDecimal("totalOffstAmt"),
body.getString("mno"),
other
);
/* order.setPayMode(body.getString("account_type"));
order.setPlatformType(PlatformTypeEnum.type1.getNumber());
order.setPlatformTradeNo(body.getString("trade_no"));
order.setPlatformLogNo(body.getString("log_no"));
order.setAccTradeNo(body.getString("acc_trade_no"));
order.setTradeActualAmount(body.getBigDecimal("payer_amount").divide(new BigDecimal("100")));
order.setCardType(body.getString("card_type"));
order.setStatus(TradeOrderStatusEnum.status3.getNumber());
order.setPayTime(new Date());
if (body.getString("acc_discount_amount") != null) {
order.setAccDiscountAmount(body.getBigDecimal("acc_discount_amount").divide(new BigDecimal("100")));
}
if (body.getString("acc_mdiscount_amount") != null) {
order.setAccMdiscountAmount(body.getBigDecimal("acc_mdiscount_amount").divide(new BigDecimal("100")));
}
tradeOrderService.editOrder(order);*/
}
} catch (Exception e) {
@ -122,8 +112,8 @@ public class TianQueController {
try {
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
JSONObject result = new JSONObject();
result.put("code", "SUCCESS");
result.put("message", "执行成功");
result.put("code", "success");
result.put("message", "成功");
out.write(result.toJSONString().getBytes());
out.flush();
out.close();
@ -134,7 +124,7 @@ public class TianQueController {
}
}
@RequestMapping(value="/applyLedgerMer",method = RequestMethod.POST)
@RequestMapping(value="/merInbound",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "商户进件通知")
public void merInbound(@RequestBody String reqBody, HttpServletResponse response) {
@ -144,8 +134,8 @@ public class TianQueController {
JSONObject respData = JSONObject.parseObject(reqBody);
BsMerContractRecord merContractRecord = merContractRecordService.getRecordByOrderNo(respData.getString("applicationId"));
if (merContractRecord != null) {
BsMerContractRecord merContractRecord = merContractRecordService.getRecordByContractId(respData.getString("applicationId"));
if (merContractRecord != null && merContractRecord.getStatus().equals(1)) {
// 审核状态,枚举值 取值范围:1 入驻通过 2 入驻驳回 5 商户修改通过 6 商户修改驳回
if (respData.getString("taskStatus").equals("1") || respData.getString("taskStatus").equals("5")) {
merContractRecord.setStatus(2);
@ -158,12 +148,13 @@ public class TianQueController {
merContractRecordMsg.setOrderNo(merContractRecord.getOrderNo());
merContractRecordMsg.setType(1);
merContractRecordMsg.setResponseCode(merContractRecord.getStatus().equals(2)?"SUCCESS":"REJECT");
merContractRecordMsg.setResponseContent(reqBody);
merContractRecordMsg.setResponseMsg(respData.getString("suggestion"));
merContractRecordMsgService.insertRecordMsg(merContractRecordMsg);
// 查询商户
BsMer mer = merService.getMer(merContractRecord.getMerId());
if (mer != null && mer.getMerStatus().equals(MerStatusEnum.status3.getNumber())) {
if (mer != null) {
if (merContractRecord.getStatus().equals(2)) {
mer.setMerStatus(MerStatusEnum.status1.getNumber());
merService.editMer(mer);
@ -175,18 +166,32 @@ public class TianQueController {
storeService.editStore(store);
}
BsMerPlatformNo merPlatformNo = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type5);
BsMerPlatformNo merPlatformNo = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type5, MerPlatformNoStatusEnum.status2);
if (merPlatformNo != null) {
merPlatformNo.setStatus(MerPlatformNoStatusEnum.status1.getNumber());
merPlatformNoService.editMerPlatformNo(merPlatformNo);
}
JSONArray repoInfoArray = respData.getJSONArray("repoInfo");
for (Object obj : repoInfoArray) {
JSONObject repoInfo = (JSONObject) obj;
BsMerPlatformTerm merPlatformTerm = new BsMerPlatformTerm();
merPlatformTerm.setMerPlatformNoId(merPlatformNo.getId());
merPlatformTerm.setMerId(merPlatformNo.getMerId());
merPlatformTerm.setBusiTypeCode(repoInfo.getString("childNoType"));
merPlatformTerm.setBusiTypeName(repoInfo.getString("childNoType"));
merPlatformTerm.setShopId(repoInfo.getString("channelId"));
merPlatformTerm.setTermNo(repoInfo.getString("childNo"));
merPlatformTermService.editMerPlatformTerm(merPlatformTerm);
}
// 签署协议
tianQueMerElecSignService.openElecSignature(respData.getString("mno"));
} else {
mer.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(mer);
if (mer.getMerStatus().intValue() != MerStatusEnum.status1.getNumber().intValue()) {
mer.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(mer);
}
List<BsStore> storeList = storeService.getStoreByMerId(mer.getId(), StoreCreateTypeEnum.type1);
if (storeList.size() > 0) {
@ -195,7 +200,7 @@ public class TianQueController {
storeService.editStore(store);
}
BsMerPlatformNo merPlatformNo = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type5);
BsMerPlatformNo merPlatformNo = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type5,MerPlatformNoStatusEnum.status2);
if (merPlatformNo != null) {
merPlatformNo.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
merPlatformNo.setSuggestionReject(respData.getString("suggestion"));

@ -1,6 +1,7 @@
package com.api.controller.v1;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.common.utils.HttpsUtils;
import com.hfkj.entity.BsTradeOrder;
import com.hfkj.openapi.v1.model.response.ResponseQueryTradeModel;
@ -119,4 +120,86 @@ public class NotifyController {
}
}
@RequestMapping(value="/tianque",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "天阙【随行付】交易通知")
public void tianque(@RequestBody String reqBody, HttpServletResponse response) {
try {
log.info("========= Start 天阙【随行付】交易通知 Start ===========");
log.info("平台接收天阙【随行付】交易通知:" + reqBody);
System.out.println(reqBody);
JSONObject body = JSONObject.parseObject(reqBody);
// 查询订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(body.getString("ordNo"));
if (order != null && order.getStatus().equals(TradeOrderStatusEnum.status1.getNumber())) {
Map<String,Object> other = new HashMap<>();
other.put("acc_trade_no", body.getString("transactionId"));
other.put("card_type", body.getString("drType"));
if (body.getString("acc_settle_amount") != null) {
other.put("acc_settle_amount", body.getBigDecimal("amt"));
}
if (body.getString("pointAmount") != null) {
other.put("acc_discount_amount", body.getBigDecimal("pointAmount"));
}
if (body.getString("clearDt") != null) {
other.put("settleDate", DateUtil.format(body.getString("clearDt"), "yyyyMMdd").getTime());
}
if (body.getString("settleAmt") != null) {
other.put("settleAmount", body.getBigDecimal("settleAmt"));
}
tradeOrderService.paySuccess(
body.getString("ordNo"),
body.getString("uuid"),
PlatformTypeEnum.type5,
TradeOrderPayModeEnum.getNameByCode(body.getString("payType")),
body.getBigDecimal("totalOffstAmt"),
body.getString("mno"),
other
);
}
if (StringUtils.isNotBlank(order.getPayNotifyUrl())) {
BsTradeOrder tradeOrder = openApiTradeOrderService.getOrderByOutTradeNo(order.getOutTradeNo());
ResponseQueryTradeModel responseQueryTradeModel = new ResponseQueryTradeModel();
responseQueryTradeModel.setMerchantNo(tradeOrder.getMerNo());
responseQueryTradeModel.setOutTradeNo(tradeOrder.getOutTradeNo());
responseQueryTradeModel.setAccTradeNo(tradeOrder.getAccTradeNo());
responseQueryTradeModel.setUserId(tradeOrder.getPayUserId());
responseQueryTradeModel.setPayMode(tradeOrder.getPayMode());
responseQueryTradeModel.setTradeAmount(tradeOrder.getTradeAmount());
responseQueryTradeModel.setTradeActualAmount(tradeOrder.getTradeActualAmount());
responseQueryTradeModel.setStatus(tradeOrder.getStatus());
responseQueryTradeModel.setCreateTime(tradeOrder.getCreateTime());
responseQueryTradeModel.setPayTime(tradeOrder.getPayTime());
responseQueryTradeModel.setAttach(tradeOrder.getAttach());
responseQueryTradeModel.setSign(SignatureUtil.createSign(responseQueryTradeModel, merKeyService.getKeyByMerNo(tradeOrder.getMerNo())));
log.info("发送URL:" + order.getPayNotifyUrl());
log.info("发送参数:" + JSONObject.toJSONString(responseQueryTradeModel));
JSONObject result = HttpsUtils.doPost(order.getPayNotifyUrl(), JSONObject.toJSONString(responseQueryTradeModel));
if (result != null) {
log.info("响应参数:" + result);
if (result.getString("code").equals("SUCCESS")
&& result.getString("message").equals("执行成功")) {
result.put("code", "success");
result.put("message", "成功");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
out.write(result.toJSONString().getBytes());
out.flush();
out.close();
}
} else {
log.info("响应参数:null");
}
}
} catch (Exception e) {
log.info("出现异常", e);
} finally {
log.info("========= END 天阙【随行付】交易通知 END ===========");
}
}
}

@ -9,7 +9,7 @@ debug: false
#datasource数据源设置
spring:
datasource:
url: jdbc:mysql://139.9.154.68:3306/gratia_pay_prod?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
url: jdbc:mysql://139.9.154.68:3306/gratia_pay?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: HF123456.
type: com.alibaba.druid.pool.DruidDataSource

@ -192,9 +192,9 @@ public class Merchant {
for (BsMerContractRecord contractRecord : list) {
try {
BsMer mer = merService.getMer(contractRecord.getMerId());
if (mer != null && mer.getMerStatus().equals(MerStatusEnum.status3.getNumber())) {
if (mer != null) {
if (contractRecord.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type1);
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(mer.getId(), PlatformTypeEnum.type1, MerPlatformNoStatusEnum.status2);
if (platform != null) {
JSONObject merchantInfo = saasMerService.merchantInfo(platform.getPlatformNo());
// 查询申请记录
@ -219,6 +219,7 @@ public class Merchant {
store.setStatus(StoreStatusEnum.status2.getNumber());
storeService.editStore(store);
}
platform.setStatus(MerPlatformNoStatusEnum.status1.getNumber());
platform.setCupNo(customer.getString("externalCustomerNo"));
merPlatformNoService.editMerPlatformNo(platform);
@ -271,11 +272,18 @@ public class Merchant {
laKaLaLedgerService.applyLedgerReceiver(merLedger.getMerId());
}
} else if (customer.getString("customerStatus").equals("REJECT")) {
contractRecord.setStatus(3);
merContractRecordService.updateRecord(contractRecord);
mer.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(mer);
if (!mer.getMerStatus().equals(MerStatusEnum.status1.getNumber())) {
mer.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(mer);
}
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject(customer.getString("auditRemark"));
merPlatformNoService.editMerPlatformNo(platform);
BsMerContractRecordMsg merContractRecordMsg = new BsMerContractRecordMsg();
merContractRecordMsg.setOrderNo(contractRecord.getOrderNo());

@ -3,6 +3,7 @@ package com.hfkj.schedule;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.lakala.LaKaLaTradeSeparateService;
import com.hfkj.channel.lakala.LaKaLaTradeService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.channel.weixin.utils.WxOrderConfig;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.entity.*;
@ -41,6 +42,8 @@ public class TradeOrderSchedule {
@Resource
private LaKaLaTradeService laKaLaTradeService;
@Resource
private TianQueTradeService tianQueTradeService;
@Resource
private BsTradeSettleService tradeSettleService;
/**
@ -259,7 +262,7 @@ public class TradeOrderSchedule {
public void tradeOrderSettle() {
Map<String, Object> param = new HashMap<>();
param.put("statusList", "3,6");
param.put("settleAmountIsNull", true);
param.put("shdFeeAmtIsNull", true);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -2);
@ -268,13 +271,50 @@ public class TradeOrderSchedule {
List<BsTradeOrder> tradeOrderList = tradeOrderService.getTradeOrderList(param);
for (BsTradeOrder tradeOrder : tradeOrderList) {
try {
// 查询手续费
JSONObject queryTrans = laKaLaTradeService.queryTradeOrderTrans(tradeOrder.getOutTradeNo());
if (queryTrans != null && queryTrans.getString("trade_state").equals("03")) {
tradeOrder.setShdFeeAmt(queryTrans.getBigDecimal("fee_amount"));
tradeOrder.setSettleAmount(new BigDecimal(queryTrans.getString("settle_amount").replace(",","")));
tradeOrder.setSettleDate(queryTrans.getDate("clear_date"));
tradeOrder.setFeeRate(new BigDecimal(queryTrans.getString("fee_rate").split(",")[0]));
if (tradeOrder.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
// 查询手续费
JSONObject queryTrans = laKaLaTradeService.queryTradeOrderTrans(tradeOrder.getOutTradeNo());
if (queryTrans != null && queryTrans.getString("trade_state").equals("03")) {
tradeOrder.setShdFeeAmt(queryTrans.getBigDecimal("fee_amount"));
tradeOrder.setSettleAmount(new BigDecimal(queryTrans.getString("settle_amount").replace(",","")));
tradeOrder.setSettleDate(queryTrans.getDate("clear_date"));
tradeOrder.setFeeRate(new BigDecimal(queryTrans.getString("fee_rate").split(",")[0]));
tradeOrderService.editOrder(tradeOrder);
BsTradeSettle tradeSettle = new BsTradeSettle();
tradeSettle.setCompanyId(tradeOrder.getCompanyId());
tradeSettle.setAgentId(tradeOrder.getAgentId());
tradeSettle.setSalesmanId(tradeOrder.getSalesmanId());
tradeSettle.setSalesmanName(tradeOrder.getSalesmanName());
tradeSettle.setMerId(tradeOrder.getMerId());
tradeSettle.setMerNo(tradeOrder.getMerNo());
tradeSettle.setMerName(tradeOrder.getMerName());
tradeSettle.setMerAbbreviate(tradeOrder.getMerAbbreviate());
tradeSettle.setStoreId(tradeOrder.getStoreId());
tradeSettle.setStoreName(tradeOrder.getStoreName());
tradeSettle.setPlatformType(tradeOrder.getPlatformType());
tradeSettle.setPlatformMerNo(tradeOrder.getPlatformMerNo());
tradeSettle.setPlatformTradeNo(tradeOrder.getPlatformTradeNo());
tradeSettle.setPlatformLogNo(tradeOrder.getPlatformLogNo());
tradeSettle.setPayMode(tradeOrder.getPayMode());
tradeSettle.setOutTradeNo(tradeOrder.getOutTradeNo());
tradeSettle.setAccTradeNo(tradeOrder.getAccTradeNo());
tradeSettle.setTradeAmount(tradeOrder.getAccSettleAmount());
tradeSettle.setTradeType(TradeSettleTradeType.type1.getNumber());
tradeSettle.setSettleAmount(tradeOrder.getAccSettleAmount());
tradeSettle.setTradeTime(tradeOrder.getPayTime());
tradeSettle.setShdFeeAmt(tradeOrder.getShdFeeAmt());
tradeSettle.setSettleAmount(tradeOrder.getSettleAmount());
tradeSettle.setSettleDate(tradeOrder.getSettleDate());
tradeSettle.setFeeRate(tradeOrder.getFeeRate());
tradeSettleService.editData(tradeSettle);
}
} else if (tradeOrder.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
// 查询手续费
JSONObject queryTrans = tianQueTradeService.poundageQuery(tradeOrder.getPlatformMerNo(), tradeOrder.getOutTradeNo());
tradeOrder.setShdFeeAmt(queryTrans.getBigDecimal("recFeeAmt"));
tradeOrder.setFeeRate(new BigDecimal(queryTrans.getString("recFeeRate")));
tradeOrderService.editOrder(tradeOrder);
BsTradeSettle tradeSettle = new BsTradeSettle();
@ -319,59 +359,100 @@ public class TradeOrderSchedule {
public void tradeOrderRefundSettle() {
Map<String, Object> param = new HashMap<>();
param.put("status", TradeOrderRefundStatusEnum.status2.getNumber());
param.put("settleAmountIsNull", true);
param.put("shdFeeAmtIsNull", true);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, -2);
param.put("payTimeS", calendar.getTimeInMillis());
List<BsTradeOrderRefund> tradeOrderRefundList = tradeOrderRefundService.getRefundList(param);
for (BsTradeOrderRefund tradeOrderRefund : tradeOrderRefundList) {
try {
// 查询交易
BsTradeOrder tradeOrder = tradeOrderService.getOrderByOutTradeNo(tradeOrderRefund.getOutTradeNo());
if (tradeOrder != null && tradeOrder.getSettleAmount() != null) {
// 查询手续费
JSONObject queryTrans = laKaLaTradeService.queryTradeOrderRefundTrans(tradeOrderRefund.getRefundNo());
if (queryTrans != null) {
tradeOrderRefund.setShdFeeAmt(new BigDecimal(queryTrans.getString("fee_amount").replace("-","")));
tradeOrderRefund.setSettleAmount(new BigDecimal(queryTrans.getString("settle_amount").replace(",","").replace("-","")));
tradeOrderRefund.setSettleDate(queryTrans.getDate("clear_date"));
tradeOrderRefundService.editOrderRefund(tradeOrderRefund);
if (tradeOrder.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
// 查询手续费
JSONObject queryTrans = laKaLaTradeService.queryTradeOrderRefundTrans(tradeOrderRefund.getRefundNo());
if (queryTrans != null) {
tradeOrderRefund.setShdFeeAmt(new BigDecimal(queryTrans.getString("fee_amount").replace("-","")));
tradeOrderRefund.setSettleAmount(new BigDecimal(queryTrans.getString("settle_amount").replace(",","").replace("-","")));
tradeOrderRefund.setSettleDate(queryTrans.getDate("clear_date"));
tradeOrderRefundService.editOrderRefund(tradeOrderRefund);
BsTradeSettle tradeSettle = new BsTradeSettle();
tradeSettle.setCompanyId(tradeOrder.getCompanyId());
tradeSettle.setAgentId(tradeOrder.getAgentId());
tradeSettle.setSalesmanId(tradeOrder.getSalesmanId());
tradeSettle.setSalesmanName(tradeOrder.getSalesmanName());
tradeSettle.setMerId(tradeOrder.getMerId());
tradeSettle.setMerNo(tradeOrder.getMerNo());
tradeSettle.setMerName(tradeOrder.getMerName());
tradeSettle.setMerAbbreviate(tradeOrder.getMerAbbreviate());
tradeSettle.setStoreId(tradeOrder.getStoreId());
tradeSettle.setStoreName(tradeOrder.getStoreName());
tradeSettle.setPlatformType(tradeOrder.getPlatformType());
tradeSettle.setPlatformMerNo(tradeOrder.getPlatformMerNo());
tradeSettle.setPlatformTradeNo(tradeOrderRefund.getPlatformOrderNo());
tradeSettle.setPlatformLogNo(tradeOrderRefund.getPlatformLogNo());
tradeSettle.setPayMode(tradeOrder.getPayMode());
tradeSettle.setOutTradeNo(tradeOrderRefund.getRefundNo());
tradeSettle.setAccTradeNo(tradeOrderRefund.getAccTradeNo());
tradeSettle.setTradeType(TradeSettleTradeType.type2.getNumber());
tradeSettle.setTradeAmount(tradeOrderRefund.getRefundAmount());
tradeSettle.setTradeTime(tradeOrderRefund.getRefundTime());
tradeSettle.setShdFeeAmt(tradeOrderRefund.getShdFeeAmt());
tradeSettle.setSettleAmount(tradeOrderRefund.getSettleAmount());
tradeSettle.setSettleDate(tradeOrderRefund.getSettleDate());
tradeSettle.setFeeRate(tradeOrder.getFeeRate());
tradeSettle.setOrgOutTradeNo(tradeOrder.getOutTradeNo());
tradeSettleService.editData(tradeSettle);
BsTradeSettle tradeSettle = new BsTradeSettle();
tradeSettle.setCompanyId(tradeOrder.getCompanyId());
tradeSettle.setAgentId(tradeOrder.getAgentId());
tradeSettle.setSalesmanId(tradeOrder.getSalesmanId());
tradeSettle.setSalesmanName(tradeOrder.getSalesmanName());
tradeSettle.setMerId(tradeOrder.getMerId());
tradeSettle.setMerNo(tradeOrder.getMerNo());
tradeSettle.setMerName(tradeOrder.getMerName());
tradeSettle.setMerAbbreviate(tradeOrder.getMerAbbreviate());
tradeSettle.setStoreId(tradeOrder.getStoreId());
tradeSettle.setStoreName(tradeOrder.getStoreName());
tradeSettle.setPlatformType(tradeOrder.getPlatformType());
tradeSettle.setPlatformMerNo(tradeOrder.getPlatformMerNo());
tradeSettle.setPlatformTradeNo(tradeOrderRefund.getPlatformOrderNo());
tradeSettle.setPlatformLogNo(tradeOrderRefund.getPlatformLogNo());
tradeSettle.setPayMode(tradeOrder.getPayMode());
tradeSettle.setOutTradeNo(tradeOrderRefund.getRefundNo());
tradeSettle.setAccTradeNo(tradeOrderRefund.getAccTradeNo());
tradeSettle.setTradeType(TradeSettleTradeType.type2.getNumber());
tradeSettle.setTradeAmount(tradeOrderRefund.getRefundAmount());
tradeSettle.setTradeTime(tradeOrderRefund.getRefundTime());
tradeSettle.setShdFeeAmt(tradeOrderRefund.getShdFeeAmt());
tradeSettle.setSettleAmount(tradeOrderRefund.getSettleAmount());
tradeSettle.setSettleDate(tradeOrderRefund.getSettleDate());
tradeSettle.setFeeRate(tradeOrder.getFeeRate());
tradeSettle.setOrgOutTradeNo(tradeOrder.getOutTradeNo());
tradeSettleService.editData(tradeSettle);
tradeOrder.setShdFeeAmt(tradeOrder.getShdFeeAmt().subtract(tradeOrderRefund.getShdFeeAmt()));
tradeOrder.setSettleAmount(tradeOrder.getSettleAmount().subtract(tradeOrderRefund.getSettleAmount()));
tradeOrderService.editOrder(tradeOrder);
tradeOrder.setShdFeeAmt(tradeOrder.getShdFeeAmt().subtract(tradeOrderRefund.getShdFeeAmt()));
tradeOrder.setSettleAmount(tradeOrder.getSettleAmount().subtract(tradeOrderRefund.getSettleAmount()));
tradeOrderService.editOrder(tradeOrder);
}
} else if (tradeOrder.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
// 查询手续费
JSONObject queryTrans = tianQueTradeService.poundageQuery(tradeOrder.getPlatformMerNo(), tradeOrderRefund.getRefundNo());
if (queryTrans != null) {
tradeOrderRefund.setShdFeeAmt(new BigDecimal(queryTrans.getString("recFeeAmt")));
tradeOrderRefundService.editOrderRefund(tradeOrderRefund);
BsTradeSettle tradeSettle = new BsTradeSettle();
tradeSettle.setCompanyId(tradeOrder.getCompanyId());
tradeSettle.setAgentId(tradeOrder.getAgentId());
tradeSettle.setSalesmanId(tradeOrder.getSalesmanId());
tradeSettle.setSalesmanName(tradeOrder.getSalesmanName());
tradeSettle.setMerId(tradeOrder.getMerId());
tradeSettle.setMerNo(tradeOrder.getMerNo());
tradeSettle.setMerName(tradeOrder.getMerName());
tradeSettle.setMerAbbreviate(tradeOrder.getMerAbbreviate());
tradeSettle.setStoreId(tradeOrder.getStoreId());
tradeSettle.setStoreName(tradeOrder.getStoreName());
tradeSettle.setPlatformType(tradeOrder.getPlatformType());
tradeSettle.setPlatformMerNo(tradeOrder.getPlatformMerNo());
tradeSettle.setPlatformTradeNo(tradeOrderRefund.getPlatformOrderNo());
tradeSettle.setPlatformLogNo(tradeOrderRefund.getPlatformLogNo());
tradeSettle.setPayMode(tradeOrder.getPayMode());
tradeSettle.setOutTradeNo(tradeOrderRefund.getRefundNo());
tradeSettle.setAccTradeNo(tradeOrderRefund.getAccTradeNo());
tradeSettle.setTradeType(TradeSettleTradeType.type2.getNumber());
tradeSettle.setTradeAmount(tradeOrderRefund.getRefundAmount());
tradeSettle.setTradeTime(tradeOrderRefund.getRefundTime());
tradeSettle.setShdFeeAmt(tradeOrderRefund.getShdFeeAmt());
tradeSettle.setSettleAmount(tradeOrderRefund.getSettleAmount());
tradeSettle.setSettleDate(tradeOrderRefund.getSettleDate());
tradeSettle.setFeeRate(tradeOrder.getFeeRate());
tradeSettle.setOrgOutTradeNo(tradeOrder.getOutTradeNo());
tradeSettleService.editData(tradeSettle);
tradeOrder.setShdFeeAmt(tradeOrder.getShdFeeAmt().subtract(tradeOrderRefund.getShdFeeAmt()));
tradeOrder.setSettleAmount(tradeOrder.getSettleAmount().subtract(tradeOrderRefund.getSettleAmount()));
tradeOrderService.editOrder(tradeOrder);
}
}
}
} catch (Exception e) {
System.out.println(e);

@ -243,6 +243,8 @@ public class LaKaLaTradeService {
} else {
accBusiFieldsMap.put("sub_appid", order.getPayAppid());
}
} else if (order.getPayMode().equals(TradeOrderPayModeEnum.UQRCODEPAY.getCode())) {
accBusiFieldsMap.put("customerIp", order.getPayAppid());
}
accBusiFieldsMap.put("user_id", order.getPayUserId());
map.put("acc_busi_fields", accBusiFieldsMap);
@ -270,7 +272,6 @@ public class LaKaLaTradeService {
log.info("响应参数:", JSONObject.toJSONString(responseBody));
orderMsg.setResponseContent(responseBody.toJSONString());
tradeOrderMsgService.editTradeOrderMsg(orderMsg);
if (!responseBody.getString("code").equals("BBS00000")) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, responseBody.getString("msg"));
}

@ -6,6 +6,7 @@ import com.hfkj.channel.saas.utils.GenerateAgreementUtil;
import com.hfkj.channel.saas.utils.RSAUtil;
import com.hfkj.channel.saas.utils.SaasCommon;
import com.hfkj.channel.saas.utils.SaasMerRequest;
import com.hfkj.common.exception.BaseException;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
@ -60,6 +61,9 @@ public class SaasMerService {
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Resource
private BsPlatformService platformService;
@Resource
private BsMerAttachService merAttachService;
@ -77,212 +81,266 @@ public class SaasMerService {
* @param merId
* @throws Exception
*/
public void addMer(Long merId) throws Exception {
public void addMer(Long merId) {
String resStr = "";
String reqStr = "";
BsMerPlatformNo platform = null;
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type1.getNumber());
record.setOrderNo(System.currentTimeMillis()+"");
record.setStatus(1);
merContractRecordService.insertRecord(record);
MerBasisModel basisModel = merService.getMerDetail(merId);
try {
platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type1, null);
if (platform != null) {
platform.setStatus(MerPlatformNoStatusEnum.status0.getNumber());
merPlatformNoService.editMerPlatformNo(platform);
}
BsPlatform currentPlatform = platformService.getCurrentPlatform();
platform = new BsMerPlatformNo();
platform.setCompanyId(basisModel.getCompanyId());
platform.setAgentId(basisModel.getAgentId());
platform.setMerId(basisModel.getId());
platform.setMerNo(basisModel.getMerNo());
platform.setPlatformType(PlatformTypeEnum.type1.getNumber());
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
platform.setCurrentPlatform(currentPlatform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber()));
merPlatformNoService.editMerPlatformNo(platform);
SecRegion province = commonService.getRegionsById(basisModel.getMerRegion().getProvinceCode());
if (province == null || StringUtils.isBlank(province.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
SecRegion city = commonService.getRegionsById(basisModel.getMerRegion().getCityCode());
if (city == null || StringUtils.isBlank(city.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
SecRegion area = commonService.getRegionsById(basisModel.getMerRegion().getAreaCode());
if (area == null || StringUtils.isBlank(area.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
SecRegion province = commonService.getRegionsById(basisModel.getMerRegion().getProvinceCode());
if (province == null || StringUtils.isBlank(province.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
SecRegion city = commonService.getRegionsById(basisModel.getMerRegion().getCityCode());
if (city == null || StringUtils.isBlank(city.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
SecRegion area = commonService.getRegionsById(basisModel.getMerRegion().getAreaCode());
if (area == null || StringUtils.isBlank(area.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户地址未配置正确,请联系客服!");
}
// 经营内容
BsIndustry industry = industryService.getDetailById(basisModel.getMerIndustry().getChildId());
if (industry == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到经营范围");
}
Map<String,Object> body = new HashMap<>();
body.put("userNo",basisModel.getOrgNo());
body.put("email", basisModel.getRegEmail());
body.put("busiCode", "WECHAT_PAY");
body.put("merRegName", basisModel.getMerName());
body.put("merType", basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())?"TP_MERCHANT":"TP_PERSONAL");
body.put("merName", basisModel.getMerName());
body.put("merAddr", SaasMerService.dislodge(basisModel.getMerRegion().getAddress()));
body.put("provinceCode", province.getSaasCode());
body.put("cityCode", city.getSaasCode());
body.put("countyCode", area.getSaasCode());
body.put("licenseName", basisModel.getMerName());
// 小微商户可不传营业执照信息
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
body.put("licenseNo", basisModel.getBlisNo());
body.put("licenseDtStart", basisModel.getBlisPeriodStart().replace("年", "-").replace("月", "-").replace("日", ""));
if (basisModel.getBlisPeriodType().equals(2)) {
body.put("licenseDtEnd", "长期有效");
} else {
body.put("licenseDtEnd", basisModel.getBlisPeriodEnd().replace("年", "-").replace("月", "-").replace("日", ""));
}
}
// 经营内容
BsIndustry industry = industryService.getDetailById(basisModel.getMerIndustry().getChildId());
if (industry == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到经营范围");
}
Map<String,Object> body = new HashMap<>();
body.put("userNo",basisModel.getOrgNo());
body.put("email", basisModel.getRegEmail());
body.put("busiCode", "WECHAT_PAY");
body.put("merRegName", basisModel.getMerName());
body.put("merType", basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())?"TP_MERCHANT":"TP_PERSONAL");
body.put("merName", basisModel.getMerName());
body.put("merAddr", SaasMerService.dislodge(basisModel.getMerRegion().getAddress()));
body.put("provinceCode", province.getSaasCode());
body.put("cityCode", city.getSaasCode());
body.put("countyCode", area.getSaasCode());
body.put("licenseName", basisModel.getMerName());
// 小微商户可不传营业执照信息
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
body.put("licenseNo", basisModel.getBlisNo());
body.put("licenseDtStart", basisModel.getBlisPeriodStart().replace("年", "-").replace("月", "-").replace("日", ""));
if (basisModel.getBlisPeriodType().equals(2)) {
body.put("licenseDtEnd", "长期有效");
// 法人信息
body.put("larName", basisModel.getLarName());
body.put("larIdType", "01");
body.put("larIdCard", basisModel.getLarIdCard());
body.put("larIdCardStart", basisModel.getLarIdCardPeriodStart().replace(".", "-"));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
Calendar larIdCardEnd = Calendar.getInstance();
larIdCardEnd.set(Calendar.YEAR, 2099);
larIdCardEnd.set(Calendar.MONTH, 11);
larIdCardEnd.set(Calendar.DATE , 31);
body.put("larIdCardEnd", DateUtil.date2String(larIdCardEnd.getTime(), "yyyy-MM-dd"));
} else {
body.put("licenseDtEnd", basisModel.getBlisPeriodEnd().replace("年", "-").replace("月", "-").replace("日", ""));
body.put("larIdCardEnd", basisModel.getLarIdCardPeriodEnd().replace(".", "-"));
}
}
body.put("contactMobile", basisModel.getRegPhone());
body.put("contactName", basisModel.getRegName());
// 法人信息
body.put("larName", basisModel.getLarName());
body.put("larIdType", "01");
body.put("larIdCard", basisModel.getLarIdCard());
body.put("larIdCardStart", basisModel.getLarIdCardPeriodStart().replace(".", "-"));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
Calendar larIdCardEnd = Calendar.getInstance();
larIdCardEnd.set(Calendar.YEAR, 2099);
larIdCardEnd.set(Calendar.MONTH, 11);
larIdCardEnd.set(Calendar.DATE , 31);
body.put("larIdCardEnd", DateUtil.date2String(larIdCardEnd.getTime(), "yyyy-MM-dd"));
} else {
body.put("larIdCardEnd", basisModel.getLarIdCardPeriodEnd().replace(".", "-"));
}
body.put("contactMobile", basisModel.getRegPhone());
body.put("contactName", basisModel.getRegName());
/** --------- 结算信息---------- **/
SecRegion settleProvince = commonService.getRegionsById(basisModel.getMerSettleAcct().getOpenningBankProvinceCode());
if (settleProvince == null || StringUtils.isBlank(settleProvince.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "结算地区未配置正确,请联系客服!");
}
SecRegion settleCity = commonService.getRegionsById(basisModel.getMerSettleAcct().getOpenningBankCityCode());
if (settleCity == null || StringUtils.isBlank(settleCity.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "结算地区未配置正确,请联系客服!");
}
body.put("openningBankCode", basisModel.getMerSettleAcct().getOpenningBankCode());
body.put("openningBankName", basisModel.getMerSettleAcct().getOpenningBankName());
body.put("clearingBankCode", basisModel.getMerSettleAcct().getClearingBankCode());
body.put("settleProvinceCode", settleProvince.getSaasCode());
body.put("settleProvinceName", basisModel.getMerSettleAcct().getOpenningBankProvinceName());
body.put("settleCityCode", settleCity.getSaasCode());
body.put("settleCityName", basisModel.getMerSettleAcct().getOpenningBankCityName());
body.put("accountNo", basisModel.getMerSettleAcct().getBankCardNo());
body.put("accountName", basisModel.getMerSettleAcct().getBankName());
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
body.put("accountType", "57");
} else {
body.put("accountType", "58");
}
body.put("accountIdCard", basisModel.getMerSettleAcct().getSettleIdCardNo());
// 非法人结算
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
body.put("accountIdType", "01");
body.put("accountName", basisModel.getMerSettleAcct().getSettleIdCardName());
body.put("accountIdDtStart", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "-"));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
Calendar accountIdDtEnd = Calendar.getInstance();
accountIdDtEnd.set(Calendar.YEAR, 2099);
accountIdDtEnd.set(Calendar.MONTH, 11);
accountIdDtEnd.set(Calendar.DATE , 31);
body.put("accountIdDtEnd", DateUtil.date2String(accountIdDtEnd.getTime(), "yyyy-MM-dd"));
/** --------- 结算信息---------- **/
SecRegion settleProvince = commonService.getRegionsById(basisModel.getMerSettleAcct().getOpenningBankProvinceCode());
if (settleProvince == null || StringUtils.isBlank(settleProvince.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "结算地区未配置正确,请联系客服!");
}
SecRegion settleCity = commonService.getRegionsById(basisModel.getMerSettleAcct().getOpenningBankCityCode());
if (settleCity == null || StringUtils.isBlank(settleCity.getSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "结算地区未配置正确,请联系客服!");
}
body.put("openningBankCode", basisModel.getMerSettleAcct().getOpenningBankCode());
body.put("openningBankName", basisModel.getMerSettleAcct().getOpenningBankName());
body.put("clearingBankCode", basisModel.getMerSettleAcct().getClearingBankCode());
body.put("settleProvinceCode", settleProvince.getSaasCode());
body.put("settleProvinceName", basisModel.getMerSettleAcct().getOpenningBankProvinceName());
body.put("settleCityCode", settleCity.getSaasCode());
body.put("settleCityName", basisModel.getMerSettleAcct().getOpenningBankCityName());
body.put("accountNo", basisModel.getMerSettleAcct().getBankCardNo());
body.put("accountName", basisModel.getMerSettleAcct().getBankName());
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
body.put("accountType", "57");
} else {
body.put("accountIdDtEnd", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "-"));
body.put("accountType", "58");
}
}
/** --------- 结算信息---------- **/
Map<String,Object> bizContent = new HashMap<>();
bizContent.put("termNum", "1");
Map<String, Object> feesMap;
List<Map<String,Object>> feesMapList = new ArrayList<>();
// 商户费率
List<BsMerRate> rateList = merRateService.getRateListByMerId(merId);
for (BsMerRate rate : rateList) {
feesMap = new HashMap<>();
feesMap.put("feeCode", rate.getRateSaasTypeCode());
feesMap.put("feeValue", rate.getRatePct());
if (StringUtils.isNotBlank(rate.getExt1())) {
feesMap.put("topFee", rate.getExt1());
body.put("accountIdCard", basisModel.getMerSettleAcct().getSettleIdCardNo());
// 非法人结算
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
body.put("accountIdType", "01");
body.put("accountName", basisModel.getMerSettleAcct().getSettleIdCardName());
body.put("accountIdDtStart", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "-"));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
Calendar accountIdDtEnd = Calendar.getInstance();
accountIdDtEnd.set(Calendar.YEAR, 2099);
accountIdDtEnd.set(Calendar.MONTH, 11);
accountIdDtEnd.set(Calendar.DATE , 31);
body.put("accountIdDtEnd", DateUtil.date2String(accountIdDtEnd.getTime(), "yyyy-MM-dd"));
} else {
body.put("accountIdDtEnd", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "-"));
}
}
/** --------- 结算信息---------- **/
Map<String,Object> bizContent = new HashMap<>();
bizContent.put("termNum", "1");
Map<String, Object> feesMap;
List<Map<String,Object>> feesMapList = new ArrayList<>();
// 商户费率
List<BsMerRate> rateList = merRateService.getRateListByMerId(merId);
for (BsMerRate rate : rateList) {
feesMap = new HashMap<>();
feesMap.put("feeCode", rate.getRateSaasTypeCode());
feesMap.put("feeValue", rate.getRatePct());
if (StringUtils.isNotBlank(rate.getExt1())) {
feesMap.put("topFee", rate.getExt1());
}
feesMapList.add(feesMap);
}
bizContent.put("fees", feesMapList);
bizContent.put("mcc", basisModel.getMerMccCode());
bizContent.put("activityId", SaasConfig.activityId);
Map<String,Object> attchMap;
List<Map<String,Object>> attchMapList = new ArrayList<>();
List<BsMerAttach> attachList = merAttachService.getAttachListByMer(merId, PlatformTypeEnum.type0, null);
for (BsMerAttach attach : attachList) {
attchMap = new HashMap<>();
MerAttachType attachType = MerAttachType.getDataByNumber(attach.getType());
if (attachType == null || StringUtils.isBlank(attachType.getLklSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的附件类型");
}
attchMap.put("type", attachType.getLklSaasCode());
attchMap.put("id", saasCommon.fileUpload(new File(CommonSysConst.getSysConfig().getFile_url() +"/"+ attach.getFileUrl()), attachType.getLklSaasCode(), "0").getString("url"));
attchMapList.add(attchMap);
}
feesMapList.add(feesMap);
}
bizContent.put("fees", feesMapList);
bizContent.put("mcc", basisModel.getMerMccCode());
bizContent.put("activityId", SaasConfig.activityId);
Map<String,Object> attchMap;
List<Map<String,Object>> attchMapList = new ArrayList<>();
List<BsMerAttach> attachList = merAttachService.getAttachListByMer(merId, PlatformTypeEnum.type0, null);
for (BsMerAttach attach : attachList) {
// 协议
attchMap = new HashMap<>();
MerAttachType attachType = MerAttachType.getDataByNumber(attach.getType());
if (attachType == null || StringUtils.isBlank(attachType.getLklSaasCode())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的附件类型");
}
attchMap.put("type", attachType.getLklSaasCode());
attchMap.put("id", saasCommon.fileUpload(new File(CommonSysConst.getSysConfig().getFile_url() +"/"+ attach.getFileUrl()), attachType.getLklSaasCode(), "0").getString("url"));
attchMap.put("type", MerAttachType.type11.getLklSaasCode());
attchMap.put("id", saasCommon.fileUpload(new File(CommonSysConst.getSysConfig().getFile_url() +"/"+ generateAddContract(basisModel)), MerAttachType.type11.getLklSaasCode(), "0").getString("url"));
attchMapList.add(attchMap);
}
// 协议
attchMap = new HashMap<>();
attchMap.put("type", MerAttachType.type11.getLklSaasCode());
attchMap.put("id", saasCommon.fileUpload(new File(CommonSysConst.getSysConfig().getFile_url() +"/"+ generateAddContract(basisModel)), MerAttachType.type11.getLklSaasCode(), "0").getString("url"));
attchMapList.add(attchMap);
body.put("bizContent", bizContent);
body.put("attchments", attchMapList);
body.put("businessContent", basisModel.getMerIndustry().getChildName());
body.put("latitude", "0.0");
body.put("longtude", "0.0");
body.put("source", "H5");
body.put("settleType", "D1");
body.put("settlementType", "AUTOMATIC");
saasMerRequest.addMerchant(body);
body.put("bizContent", bizContent);
body.put("attchments", attchMapList);
body.put("businessContent", basisModel.getMerIndustry().getChildName());
body.put("latitude", "0.0");
body.put("longtude", "0.0");
body.put("source", "H5");
body.put("settleType", "D1");
body.put("settlementType", "AUTOMATIC");
saasMerRequest.addMerchant(body);
Map<String,Object> header = new HashMap<>();
header.put("Authorization", "bearer " + saasCommon.getToken());
Map<String,Object> header = new HashMap<>();
header.put("Authorization", "bearer " + saasCommon.getToken());
JSONObject responseBody = HttpsUtils.doPost(SaasConfig.requestMerRegistrationCommonUrl+"merchant", body, header);
System.out.println("body:" + JSONObject.toJSONString(body));
System.out.println("response:" + responseBody);
if (responseBody == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求进件失败");
}
if (StringUtils.isBlank(responseBody.getString("state"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, responseBody.getString("message"));
}
if (!responseBody.getString("state").equals("1")) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求进件失败");
}
JSONObject responseBody = HttpsUtils.doPost(SaasConfig.requestMerRegistrationCommonUrl+"merchant", body, header);
reqStr = JSONObject.toJSONString(body);
resStr = responseBody.toJSONString();
System.out.println("body:" + reqStr);
System.out.println("response:" + responseBody);
if (responseBody == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求进件失败");
}
if (StringUtils.isBlank(responseBody.getString("state"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, responseBody.getString("message"));
}
if (!responseBody.getString("state").equals("1")) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求进件失败");
}
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
platform.setPlatformNo(responseBody.getString("merchantNo"));
merPlatformNoService.editMerPlatformNo(platform);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(body));
recordMsg.setResponseCode(responseBody.getString("state"));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(responseBody.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (BaseException baseException) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type1);
if (platform != null) {
platform.setStatus(0);
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject(baseException.getErrorMsg());
merPlatformNoService.editMerPlatformNo(platform);
}
platform = new BsMerPlatformNo();
platform.setCompanyId(basisModel.getCompanyId());
platform.setAgentId(basisModel.getAgentId());
platform.setMerId(basisModel.getId());
platform.setMerNo(basisModel.getMerNo());
platform.setPlatformType(PlatformTypeEnum.type1.getNumber());
platform.setPlatformNo(responseBody.getString("merchantNo"));
merPlatformNoService.editMerPlatformNo(platform);
record.setStatus(3);
merContractRecordService.updateRecord(record);
String orderNo = System.currentTimeMillis()+"";
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type1.getNumber());
record.setOrderNo(orderNo);
record.setContractId(responseBody.toJSONString());
record.setStatus(1);
merContractRecordService.insertRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg(baseException.getErrorMsg());
merContractRecordMsgService.insertRecordMsg(recordMsg);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(orderNo);
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(body));
recordMsg.setResponseCode(responseBody.getString("state"));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(responseBody.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (Exception e) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject("进件失败!未知错误");
merPlatformNoService.editMerPlatformNo(platform);
record.setStatus(3);
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg("进件失败!未知错误");
merContractRecordMsgService.insertRecordMsg(recordMsg);
}
}
/**

@ -22,8 +22,11 @@ public class SaasConfig {
// public static String username = "13200000001";
// public static String password = "12345qwert";
public static String username = "13638395536";
public static String password = "Huifu123456.";
// public static String username = "13638395536";
// public static String password = "Huifu123456.";
public static String username = "13072388036";
public static String password = "Pzj1988220";
/* public static String requestMerRegistrationTokenUrl = "https://test.wsmsd.cn/sit/htkauth/oauth/token";

@ -50,7 +50,7 @@ public class TianQueMerElecSignService {
Map<String,Object> param = new HashMap<>();
param.put("mno", platformMerNo);
param.put("signType", "01"); // 签署方式,取值范围:00 页面签署,01 接口签署
param.put("signIp", InetAddress.getLocalHost().getAddress());
param.put("signIp", InetAddress.getLocalHost().getHostAddress());
return RequestUtil.request(TianQueConfig.requestUrl + "/merchant/elecSignature/openElecSignature", param);
} catch (Exception e) {
return null;

@ -1,25 +1,19 @@
package com.hfkj.channel.tianque.service;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.lakala.LaKaLaMerService;
import com.hfkj.channel.tianque.config.TianQueConfig;
import com.hfkj.channel.tianque.utils.RequestUtil;
import com.hfkj.common.exception.BaseException;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.config.CommonSysConst;
import com.hfkj.entity.BsMerContractRecord;
import com.hfkj.entity.BsMerContractRecordMsg;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.entity.BsMerRate;
import com.hfkj.entity.*;
import com.hfkj.model.MerBasisModel;
import com.hfkj.service.BsMerContractRecordMsgService;
import com.hfkj.service.BsMerContractRecordService;
import com.hfkj.service.BsMerPlatformNoService;
import com.hfkj.service.BsMerService;
import com.hfkj.sysenum.MerPlatformNoStatusEnum;
import com.hfkj.sysenum.MerSettleType;
import com.hfkj.sysenum.MerTypeEnum;
import com.hfkj.sysenum.PlatformTypeEnum;
import com.hfkj.service.*;
import com.hfkj.sysenum.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -45,6 +39,10 @@ public class TianQueMerService {
private BsMerContractRecordService merContractRecordService;
@Resource
private BsMerContractRecordMsgService merContractRecordMsgService;
@Resource
private BsLklMccService mccService;
@Resource
private BsPlatformService platformService;
/**
* 商户进件
@ -52,188 +50,256 @@ public class TianQueMerService {
* @throws Exception
*/
public void addMer(Long merId) {
MerBasisModel basisModel = merService.getMerDetail(merId);
String resStr = "";
String reqStr = "";
BsMerPlatformNo platform = null;
Map<String,Object> param = new HashMap<>();
param.put("mecDisNm", basisModel.getMerAbbreviate());
param.put("mblNo", basisModel.getRegPhone());
param.put("operationalType", "01");
if (basisModel.getMerType().equals(MerTypeEnum.status1.getNumber())) {
param.put("haveLicenseNo", "02");
} else if (basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())) {
param.put("haveLicenseNo", "03");
} else if (basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("haveLicenseNo", "01");
platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type5, null);
if (platform != null) {
if (StringUtils.isNotBlank(platform.getPlatformNo())) {
updateMerchantInfo(merId);
return;
}
platform.setStatus(MerPlatformNoStatusEnum.status0.getNumber());
merPlatformNoService.editMerPlatformNo(platform);
}
param.put("mecTypeFlag", "00");
param.put("cprRegAddr", basisModel.getMerRegion().getAddress());
param.put("regProvCd", basisModel.getMerRegion().getProvinceCode() + "000000");
param.put("regCityCd", basisModel.getMerRegion().getCityCode() + "000000");
param.put("regDistCd", basisModel.getMerRegion().getAreaCode() + "000000");
param.put("mccCd", basisModel.getMerMccCode());
param.put("csTelNo", basisModel.getStoreModel().getTelephone());
/********* 功能类信息 ***********/
List<Map<String,Object>> qrcodeList = new ArrayList<>();
Map<String,Object> qrcode;
for (BsMerRate merRate : basisModel.getMerSettleAcct().getMerRateList()) {
qrcode = new HashMap<>();
// 微信
if (merRate.getRateTypeCode().equals(302)) {
qrcode.put("rateType", "01");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 支付宝
} else if (merRate.getRateTypeCode().equals(303)) {
qrcode.put("rateType", "02");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡小于1000
} else if (merRate.getRateTypeCode().equals(411)) {
qrcode.put("rateType", "061");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡大于1000
} else if (merRate.getRateTypeCode().equals(315)) {
qrcode.put("rateType", "071");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type5.getNumber());
record.setOrderNo(System.currentTimeMillis()+"");
record.setStatus(1);
merContractRecordService.insertRecord(record);
MerBasisModel basisModel = merService.getMerDetail(merId);
try {
platform = new BsMerPlatformNo();
platform.setCompanyId(basisModel.getCompanyId());
platform.setAgentId(basisModel.getAgentId());
platform.setMerId(basisModel.getId());
platform.setMerNo(basisModel.getMerNo());
platform.setPlatformType(PlatformTypeEnum.type5.getNumber());
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
BsPlatform currentPlatform = platformService.getCurrentPlatform();
platform.setCurrentPlatform(currentPlatform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber()));
merPlatformNoService.editMerPlatformNo(platform);
Map<String,Object> param = new HashMap<>();
param.put("mecDisNm", basisModel.getMerAbbreviate());
param.put("mblNo", basisModel.getRegPhone());
param.put("operationalType", basisModel.getMerOperateType().equals(MerOperateType.type1.getNumber())?"01":"02");
if (basisModel.getMerOperateType().equals(MerOperateType.type2.getNumber())) {
param.put("onlineType", "0" + MerOnlineType.getDataByNumber(basisModel.getMerOnlineType()).getNumber());
param.put("onlineName", basisModel.getMerOnlineName());
}
if (basisModel.getMerType().equals(MerTypeEnum.status1.getNumber())) {
param.put("haveLicenseNo", "02");
} else if (basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())) {
param.put("haveLicenseNo", "03");
} else if (basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("haveLicenseNo", "01");
}
param.put("mecTypeFlag", "00");
param.put("cprRegAddr", basisModel.getMerRegion().getAddress());
param.put("regProvCd", basisModel.getMerRegion().getProvinceCode() + "000000");
param.put("regCityCd", basisModel.getMerRegion().getCityCode() + "000000");
param.put("regDistCd", basisModel.getMerRegion().getAreaCode() + "000000");
param.put("mccCd", mccService.getMccByCode(basisModel.getMerMccCode()).getExt1());
param.put("csTelNo", basisModel.getStoreModel().getTelephone());
/********* 功能类信息 ***********/
List<Map<String,Object>> qrcodeList = new ArrayList<>();
Map<String,Object> qrcode;
for (BsMerRate merRate : basisModel.getMerSettleAcct().getMerRateList()) {
qrcode = new HashMap<>();
qrcode.put("rateType", "072");
qrcode.put("rate", "20");
qrcodeList.add(qrcode);
// 云闪付贷记卡小于1000
} else if (merRate.getRateTypeCode().equals(412)) {
qrcode.put("rateType", "06");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付贷记卡大于1000
} else if (merRate.getRateTypeCode().equals(314)) {
qrcode.put("rateType", "07");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 微信
if (merRate.getRateTypeCode().equals(302)) {
qrcode.put("rateType", "01");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 支付宝
} else if (merRate.getRateTypeCode().equals(303)) {
qrcode.put("rateType", "02");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡小于1000
} else if (merRate.getRateTypeCode().equals(411)) {
qrcode.put("rateType", "061");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡大于1000
} else if (merRate.getRateTypeCode().equals(315)) {
qrcode.put("rateType", "071");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
qrcode = new HashMap<>();
qrcode.put("rateType", "072");
qrcode.put("rate", "20");
qrcodeList.add(qrcode);
// 云闪付贷记卡小于1000
} else if (merRate.getRateTypeCode().equals(412)) {
qrcode.put("rateType", "06");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付贷记卡大于1000
} else if (merRate.getRateTypeCode().equals(314)) {
qrcode.put("rateType", "07");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
}
}
}
param.put("qrcodeList", qrcodeList);
param.put("callbackUrl", CommonSysConst.getSysConfig().getDomainName() + "/crest/tianqueNotify/applyLedgerMer");
/********* 功能类信息 ***********/
/********* 资质证照信息 ***********/
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("cprRegNmCn", basisModel.getBlisName());
param.put("registCode", basisModel.getBlisNo());
param.put("licenseMatch", "00");
param.put("businessLicStt", basisModel.getBlisPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getBlisPeriodType().equals(2)) {
param.put("businessLicEnt", "29991231");
param.put("qrcodeList", qrcodeList);
param.put("callbackUrl", CommonSysConst.getSysConfig().getDomainName() + "/crest/tianqueNotify/merInbound");
/********* 功能类信息 ***********/
/********* 资质证照信息 ***********/
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("cprRegNmCn", basisModel.getBlisName());
param.put("registCode", basisModel.getBlisNo());
param.put("licenseMatch", "00");
param.put("businessLicStt", basisModel.getBlisPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getBlisPeriodType().equals(2)) {
param.put("businessLicEnt", "29991231");
} else {
param.put("businessLicEnt", basisModel.getBlisPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
}
param.put("identityName", basisModel.getLarName());
param.put("identityTyp", "00");
param.put("identityNo", basisModel.getLarIdCard());
param.put("legalPersonLicStt", basisModel.getLarIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
param.put("businessLicStt", "29991231");
} else {
param.put("businessLicEnt", basisModel.getBlisPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
param.put("legalPersonLicEnt", basisModel.getLarIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
}
/********* 资质证照信息 ***********/
param.put("identityName", basisModel.getLarName());
param.put("identityTyp", "00");
param.put("identityNo", basisModel.getLarIdCard());
param.put("legalPersonLicStt", basisModel.getLarIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
param.put("businessLicStt", "29991231");
} else {
param.put("legalPersonLicEnt", basisModel.getLarIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
/********* 资质证照信息 ***********/
/********* 结算信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("actNm", basisModel.getBlisName());
} else {
param.put("actNm", basisModel.getMerSettleAcct().getBankCardHolder());
}
param.put("actTyp",basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())?"00":"01");
param.put("actNoType", "00");
param.put("stmManIdNo", basisModel.getMerSettleAcct().getSettleIdCardNo());
param.put("accountLicStt", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
param.put("accountLicEnt", "29991231");
} else {
param.put("accountLicEnt", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
param.put("actNo", basisModel.getMerSettleAcct().getBankCardNo());
param.put("lbnkNo", basisModel.getMerSettleAcct().getOpenningBankCode());
/********* 结算信息 ***********/
/********* 图片信息 ***********/
param.put("legalPersonidPositivePic", RequestUtil.requestUpload("02", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardPortraitImg())).getString("PhotoUrl"));
param.put("legalPersonidOppositePic", RequestUtil.requestUpload("03", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("storePic", RequestUtil.requestUpload("10", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getDoorHeadImg())).getString("PhotoUrl"));
param.put("insideScenePic", RequestUtil.requestUpload("11", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getInternalImg())).getString("PhotoUrl"));
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("licensePic", RequestUtil.requestUpload("13", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getBlisUrl())).getString("PhotoUrl"));
}
/********* 结算信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("actNm", basisModel.getBlisName());
} else {
param.put("actNm", basisModel.getMerSettleAcct().getBankCardHolder());
}
param.put("actTyp",basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())?"00":"01");
param.put("actNoType", "00");
param.put("stmManIdNo", basisModel.getMerSettleAcct().getSettleIdCardNo());
param.put("accountLicStt", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
param.put("accountLicEnt", "29991231");
} else {
param.put("accountLicEnt", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
param.put("actNo", basisModel.getMerSettleAcct().getBankCardNo());
param.put("lbnkNo", basisModel.getMerSettleAcct().getOpenningBankCode());
/********* 结算信息 ***********/
/********* 图片信息 ***********/
param.put("legalPersonidPositivePic", RequestUtil.requestUpload("02", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardPortraitImg())).getString("PhotoUrl"));
param.put("legalPersonidOppositePic", RequestUtil.requestUpload("03", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("storePic", RequestUtil.requestUpload("10", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getDoorHeadImg())).getString("PhotoUrl"));
param.put("insideScenePic", RequestUtil.requestUpload("11", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getInternalImg())).getString("PhotoUrl"));
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("licensePic", RequestUtil.requestUpload("13", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getBlisUrl())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("openingAccountLicensePic", RequestUtil.requestUpload("65", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getOpenningBankLicenseUrl())).getString("PhotoUrl"));
}
if (!basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("settlePersonIdcardPositive", RequestUtil.requestUpload("08", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardPortraitImg())).getString("PhotoUrl"));
param.put("settlePersonIdcardOpposite", RequestUtil.requestUpload("07", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("bankCardPositivePic", RequestUtil.requestUpload("05", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getBankCardImg())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
param.put("letterOfAuthPic", RequestUtil.requestUpload("26", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getCommissionImg())).getString("PhotoUrl"));
}
/********* 图片信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("openingAccountLicensePic", RequestUtil.requestUpload("65", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getOpenningBankLicenseUrl())).getString("PhotoUrl"));
}
if (!basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("settlePersonIdcardPositive", RequestUtil.requestUpload("08", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardPortraitImg())).getString("PhotoUrl"));
param.put("settlePersonIdcardOpposite", RequestUtil.requestUpload("07", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("bankCardPositivePic", RequestUtil.requestUpload("05", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getBankCardImg())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
param.put("letterOfAuthPic", RequestUtil.requestUpload("26", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getCommissionImg())).getString("PhotoUrl"));
}
/********* 图片信息 ***********/
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/merchant/income", param);
reqStr = JSONObject.toJSONString(param);
resStr = response.toJSONString();
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
platform.setPlatformNo(response.getString("mno"));
platform.setCupNo(response.getString("mno"));
merPlatformNoService.editMerPlatformNo(platform);
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/merchant/income", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
response.getString("mno");
response.getString("applicationId");
// 增加进件记录
record.setContractId(response.getString("applicationId"));
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(param));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(response.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (BaseException baseException) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type5);
if (platform != null) {
platform.setStatus(0);
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject(baseException.getErrorMsg());
merPlatformNoService.editMerPlatformNo(platform);
}
platform = new BsMerPlatformNo();
platform.setCompanyId(basisModel.getCompanyId());
platform.setAgentId(basisModel.getAgentId());
platform.setMerId(basisModel.getId());
platform.setMerNo(basisModel.getMerNo());
platform.setPlatformType(PlatformTypeEnum.type5.getNumber());
platform.setPlatformNo(response.getString("mno"));
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
merPlatformNoService.editMerPlatformNo(platform);
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type5.getNumber());
record.setOrderNo(response.getString("applicationId"));
record.setContractId(response.toJSONString());
record.setStatus(1);
merContractRecordService.insertRecord(record);
record.setStatus(3);
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg(baseException.getErrorMsg());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (Exception e) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(param));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(response.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject("进件失败!未知错误");
merPlatformNoService.editMerPlatformNo(platform);
record.setStatus(3);
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg("进件失败!未知错误");
merContractRecordMsgService.insertRecordMsg(recordMsg);
}
}
/**
@ -243,186 +309,240 @@ public class TianQueMerService {
* @throws Exception
*/
public void updateMerchantInfo(Long merId) {
String resStr = "";
String reqStr = "";
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type5);
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type5.getNumber());
record.setOrderNo(System.currentTimeMillis()+"");
record.setStatus(1);
merContractRecordService.insertRecord(record);
MerBasisModel basisModel = merService.getMerDetail(merId);
Map<String,Object> param = new HashMap<>();
param.put("mecDisNm", basisModel.getMerAbbreviate());
param.put("mblNo", basisModel.getRegPhone());
param.put("operationalType", "01");
if (basisModel.getMerType().equals(MerTypeEnum.status1.getNumber())) {
param.put("haveLicenseNo", "02");
} else if (basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())) {
param.put("haveLicenseNo", "03");
} else if (basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("haveLicenseNo", "01");
}
param.put("mecTypeFlag", "00");
param.put("cprRegAddr", basisModel.getMerRegion().getAddress());
param.put("regProvCd", basisModel.getMerRegion().getProvinceCode() + "000000");
param.put("regCityCd", basisModel.getMerRegion().getCityCode() + "000000");
param.put("regDistCd", basisModel.getMerRegion().getAreaCode() + "000000");
param.put("mccCd", basisModel.getMerMccCode());
param.put("csTelNo", basisModel.getStoreModel().getTelephone());
/********* 功能类信息 ***********/
List<Map<String,Object>> qrcodeList = new ArrayList<>();
Map<String,Object> qrcode;
for (BsMerRate merRate : basisModel.getMerSettleAcct().getMerRateList()) {
qrcode = new HashMap<>();
// 微信
if (merRate.getRateTypeCode().equals(302)) {
qrcode.put("rateType", "01");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 支付宝
} else if (merRate.getRateTypeCode().equals(303)) {
qrcode.put("rateType", "02");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡小于1000
} else if (merRate.getRateTypeCode().equals(411)) {
qrcode.put("rateType", "061");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡大于1000
} else if (merRate.getRateTypeCode().equals(315)) {
qrcode.put("rateType", "071");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
try {
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
merPlatformNoService.editMerPlatformNo(platform);
Map<String,Object> param = new HashMap<>();
param.put("mno", platform.getPlatformNo());
param.put("mecDisNm", basisModel.getMerAbbreviate());
param.put("mblNo", basisModel.getRegPhone());
param.put("operationalType", basisModel.getMerOperateType().equals(MerOperateType.type1.getNumber())?"01":"02");
if (basisModel.getMerOperateType().equals(MerOperateType.type2.getNumber())) {
param.put("onlineType", "0" + MerOnlineType.getDataByNumber(basisModel.getMerOnlineType()).getNumber());
param.put("onlineName", basisModel.getMerOnlineName());
}
if (basisModel.getMerType().equals(MerTypeEnum.status1.getNumber())) {
param.put("haveLicenseNo", "02");
} else if (basisModel.getMerType().equals(MerTypeEnum.status2.getNumber())) {
param.put("haveLicenseNo", "03");
} else if (basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("haveLicenseNo", "01");
}
param.put("mecTypeFlag", "00");
param.put("cprRegAddr", basisModel.getMerRegion().getAddress());
param.put("regProvCd", basisModel.getMerRegion().getProvinceCode() + "000000");
param.put("regCityCd", basisModel.getMerRegion().getCityCode() + "000000");
param.put("regDistCd", basisModel.getMerRegion().getAreaCode() + "000000");
param.put("mccCd", mccService.getMccByCode(basisModel.getMerMccCode()).getExt1());
param.put("csTelNo", basisModel.getStoreModel().getTelephone());
/********* 功能类信息 ***********/
List<Map<String,Object>> qrcodeList = new ArrayList<>();
Map<String,Object> qrcode;
for (BsMerRate merRate : basisModel.getMerSettleAcct().getMerRateList()) {
qrcode = new HashMap<>();
qrcode.put("rateType", "072");
qrcode.put("rate", "20");
qrcodeList.add(qrcode);
// 云闪付贷记卡小于1000
} else if (merRate.getRateTypeCode().equals(412)) {
qrcode.put("rateType", "06");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付贷记卡大于1000
} else if (merRate.getRateTypeCode().equals(314)) {
qrcode.put("rateType", "07");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 微信
if (merRate.getRateTypeCode().equals(302)) {
qrcode.put("rateType", "01");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 支付宝
} else if (merRate.getRateTypeCode().equals(303)) {
qrcode.put("rateType", "02");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡小于1000
} else if (merRate.getRateTypeCode().equals(411)) {
qrcode.put("rateType", "061");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付借记卡大于1000
} else if (merRate.getRateTypeCode().equals(315)) {
qrcode.put("rateType", "071");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
qrcode = new HashMap<>();
qrcode.put("rateType", "072");
qrcode.put("rate", "20");
qrcodeList.add(qrcode);
// 云闪付贷记卡小于1000
} else if (merRate.getRateTypeCode().equals(412)) {
qrcode.put("rateType", "06");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
// 云闪付贷记卡大于1000
} else if (merRate.getRateTypeCode().equals(314)) {
qrcode.put("rateType", "07");
qrcode.put("rate", merRate.getRatePct()+"");
qrcodeList.add(qrcode);
}
}
}
param.put("qrcodeList", qrcodeList);
param.put("callbackUrl", CommonSysConst.getSysConfig().getDomainName() + "/crest/tianqueNotify");
/********* 功能类信息 ***********/
/********* 资质证照信息 ***********/
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("cprRegNmCn", basisModel.getBlisName());
param.put("registCode", basisModel.getBlisNo());
param.put("licenseMatch", "00");
param.put("businessLicStt", basisModel.getBlisPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getBlisPeriodType().equals(2)) {
param.put("businessLicEnt", "29991231");
param.put("qrcodeList", qrcodeList);
param.put("callbackUrl", CommonSysConst.getSysConfig().getDomainName() + "/crest/tianqueNotify/merInbound");
/********* 功能类信息 ***********/
/********* 资质证照信息 ***********/
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("cprRegNmCn", basisModel.getBlisName());
param.put("registCode", basisModel.getBlisNo());
param.put("licenseMatch", "00");
param.put("businessLicStt", basisModel.getBlisPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getBlisPeriodType().equals(2)) {
param.put("businessLicEnt", "29991231");
} else {
param.put("businessLicEnt", basisModel.getBlisPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
}
param.put("identityName", basisModel.getLarName());
param.put("identityTyp", "00");
param.put("identityNo", basisModel.getLarIdCard());
param.put("legalPersonLicStt", basisModel.getLarIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
param.put("businessLicStt", "29991231");
} else {
param.put("businessLicEnt", basisModel.getBlisPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
param.put("legalPersonLicEnt", basisModel.getLarIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
}
/********* 资质证照信息 ***********/
param.put("identityName", basisModel.getLarName());
param.put("identityTyp", "00");
param.put("identityNo", basisModel.getLarIdCard());
param.put("legalPersonLicStt", basisModel.getLarIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getLarIdCardPeriodType().equals(2)) {
param.put("businessLicStt", "29991231");
} else {
param.put("legalPersonLicEnt", basisModel.getLarIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
/********* 资质证照信息 ***********/
/********* 结算信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("actNm", basisModel.getBlisName());
} else {
param.put("actNm", basisModel.getMerSettleAcct().getBankCardHolder());
}
param.put("actTyp",basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())?"00":"01");
param.put("actNoType", "00");
param.put("stmManIdNo", basisModel.getMerSettleAcct().getSettleIdCardNo());
param.put("accountLicStt", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
param.put("accountLicEnt", "29991231");
} else {
param.put("accountLicEnt", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
param.put("actNo", basisModel.getMerSettleAcct().getBankCardNo());
param.put("lbnkNo", basisModel.getMerSettleAcct().getOpenningBankCode());
/********* 结算信息 ***********/
/********* 图片信息 ***********/
param.put("legalPersonidPositivePic", RequestUtil.requestUpload("02", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardPortraitImg())).getString("PhotoUrl"));
param.put("legalPersonidOppositePic", RequestUtil.requestUpload("03", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("storePic", RequestUtil.requestUpload("10", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getDoorHeadImg())).getString("PhotoUrl"));
param.put("insideScenePic", RequestUtil.requestUpload("11", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getInternalImg())).getString("PhotoUrl"));
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("licensePic", RequestUtil.requestUpload("13", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getBlisUrl())).getString("PhotoUrl"));
}
/********* 结算信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("actNm", basisModel.getBlisName());
} else {
param.put("actNm", basisModel.getMerSettleAcct().getBankCardHolder());
}
param.put("actTyp",basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())?"00":"01");
param.put("actNoType", "00");
param.put("stmManIdNo", basisModel.getMerSettleAcct().getSettleIdCardNo());
param.put("accountLicStt", basisModel.getMerSettleAcct().getSettleIdCardPeriodStart().replace(".", "").replace("年","").replace("月","").replace("日",""));
if (basisModel.getMerSettleAcct().getSettleIdPeriodType().equals(2)) {
param.put("accountLicEnt", "29991231");
} else {
param.put("accountLicEnt", basisModel.getMerSettleAcct().getSettleIdCardPeriodEnd().replace(".", "").replace("年","").replace("月","").replace("日",""));
}
param.put("actNo", basisModel.getMerSettleAcct().getBankCardNo());
param.put("lbnkNo", basisModel.getMerSettleAcct().getOpenningBankCode());
/********* 结算信息 ***********/
/********* 图片信息 ***********/
param.put("legalPersonidPositivePic", RequestUtil.requestUpload("02", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardPortraitImg())).getString("PhotoUrl"));
param.put("legalPersonidOppositePic", RequestUtil.requestUpload("03", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getLarIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("storePic", RequestUtil.requestUpload("10", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getDoorHeadImg())).getString("PhotoUrl"));
param.put("insideScenePic", RequestUtil.requestUpload("11", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getStoreModel().getInternalImg())).getString("PhotoUrl"));
if (!basisModel.getMerType().equals(MerTypeEnum.status3.getNumber())) {
param.put("licensePic", RequestUtil.requestUpload("13", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getBlisUrl())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("openingAccountLicensePic", RequestUtil.requestUpload("65", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getOpenningBankLicenseUrl())).getString("PhotoUrl"));
}
if (!basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("settlePersonIdcardPositive", RequestUtil.requestUpload("08", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardPortraitImg())).getString("PhotoUrl"));
param.put("settlePersonIdcardOpposite", RequestUtil.requestUpload("07", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("bankCardPositivePic", RequestUtil.requestUpload("05", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getBankCardImg())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
param.put("letterOfAuthPic", RequestUtil.requestUpload("26", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getCommissionImg())).getString("PhotoUrl"));
}
/********* 图片信息 ***********/
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("openingAccountLicensePic", RequestUtil.requestUpload("65", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getOpenningBankLicenseUrl())).getString("PhotoUrl"));
}
if (!basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status1.getNumber())) {
param.put("settlePersonIdcardPositive", RequestUtil.requestUpload("08", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardPortraitImg())).getString("PhotoUrl"));
param.put("settlePersonIdcardOpposite", RequestUtil.requestUpload("07", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getSettleIdCardNationalEmblemImg())).getString("PhotoUrl"));
param.put("bankCardPositivePic", RequestUtil.requestUpload("05", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getBankCardImg())).getString("PhotoUrl"));
}
if (basisModel.getMerSettleAcct().getSettleType().equals(MerSettleType.status3.getNumber())) {
param.put("letterOfAuthPic", RequestUtil.requestUpload("26", new File(CommonSysConst.getSysConfig().getFile_url() + "/" + basisModel.getMerSettleAcct().getCommissionImg())).getString("PhotoUrl"));
}
/********* 图片信息 ***********/
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/merchant/updateMerchantInfo", param);
reqStr = JSONObject.toJSONString(param);
resStr = response.toJSONString();
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
response.getString("mno");
response.getString("applicationId");
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/merchant/income", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
response.getString("mno");
response.getString("applicationId");
platform.setStatus(MerPlatformNoStatusEnum.status2.getNumber());
platform.setPlatformNo(response.getString("mno"));
merPlatformNoService.editMerPlatformNo(platform);
BsMerPlatformNo platform = merPlatformNoService.getPlatformNo(merId, PlatformTypeEnum.type5);
if (platform != null) {
platform.setStatus(0);
// 增加进件记录
record.setContractId(response.getString("applicationId"));
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(param));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(response.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (BaseException baseException) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject(baseException.getErrorMsg());
merPlatformNoService.editMerPlatformNo(platform);
}
platform = new BsMerPlatformNo();
platform.setCompanyId(basisModel.getCompanyId());
platform.setAgentId(basisModel.getAgentId());
platform.setMerId(basisModel.getId());
platform.setMerNo(basisModel.getMerNo());
platform.setPlatformType(PlatformTypeEnum.type5.getNumber());
platform.setPlatformNo(response.getString("mno"));
merPlatformNoService.editMerPlatformNo(platform);
record.setStatus(3);
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg(baseException.getErrorMsg());
merContractRecordMsgService.insertRecordMsg(recordMsg);
} catch (Exception e) {
if (basisModel.getMerStatus().intValue() != MerStatusEnum.status4.getNumber().intValue()) {
basisModel.setMerStatus(MerStatusEnum.status4.getNumber());
merService.editMer(basisModel);
}
// 增加进件记录
BsMerContractRecord record = new BsMerContractRecord();
record.setMerId(merId);
record.setPlatformType(PlatformTypeEnum.type5.getNumber());
record.setOrderNo(response.getString("applicationId"));
record.setContractId(response.toJSONString());
record.setStatus(1);
merContractRecordService.insertRecord(record);
platform.setStatus(MerPlatformNoStatusEnum.status3.getNumber());
platform.setSuggestionReject("进件失败!未知错误");
merPlatformNoService.editMerPlatformNo(platform);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(JSONObject.toJSONString(param));
recordMsg.setResponseMsg(null);
recordMsg.setResponseContent(response.toJSONString());
merContractRecordMsgService.insertRecordMsg(recordMsg);
record.setStatus(3);
merContractRecordService.updateRecord(record);
// 增加进件记录消息
BsMerContractRecordMsg recordMsg = new BsMerContractRecordMsg();
recordMsg.setOrderNo(record.getOrderNo());
recordMsg.setType(1);
recordMsg.setRequestContent(reqStr);
recordMsg.setResponseCode("REJECT");
recordMsg.setResponseContent(resStr);
recordMsg.setResponseMsg("进件失败!未知错误");
merContractRecordMsgService.insertRecordMsg(recordMsg);
}
}

@ -0,0 +1,326 @@
package com.hfkj.channel.tianque.service;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.tianque.config.TianQueConfig;
import com.hfkj.channel.tianque.utils.RequestUtil;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.config.CommonSysConst;
import com.hfkj.entity.*;
import com.hfkj.service.*;
import com.hfkj.sysenum.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @className: TianQueTradeService
* @author: HuRui
* @date: 2023/9/4
**/
@Component
public class TianQueTradeService {
private static Logger log = LoggerFactory.getLogger(TianQueTradeService.class);
@Resource
private BsTradeOrderService tradeOrderService;
@Resource
private BsTradeOrderMsgService tradeOrderMsgService;
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Resource
private BsTradeOrderRefundService tradeOrderRefundService;
@Resource
private BsMerService merService;
/**
* 交易主扫
* @param tradeNo 订单号
* @return
*/
public Map<String, Object> preorder(String tradeNo) {
log.info("========= Start 交易【主扫】 Start ===========");
// 查询交易订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(tradeNo);
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
if (!order.getStatus().equals(TradeOrderStatusEnum.status1.getNumber())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单不处于待支付状态");
}
// 查询商户号
BsMerPlatformNo platformNo = merPlatformNoService.getPlatformNo(order.getMerId(), PlatformTypeEnum.type5);
if (platformNo == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户号");
}
// 查询商户
BsMer mer = merService.getMer(order.getMerId());
if (mer == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商户信息");
}
Map<String,Object> param = new HashMap<>();
param.put("mno", platformNo.getPlatformNo());
param.put("ordNo", order.getOutTradeNo());
param.put("amt", order.getTradeActualAmount());
param.put("payType", order.getPayMode());
param.put("payWay", "02");
if (StringUtils.isNotBlank(order.getSubject())) {
param.put("subject", order.getSubject());
} else {
param.put("subject", mer.getMerAbbreviate());
}
if (StringUtils.isNotBlank(order.getRequestIp())) {
param.put("trmIp", order.getRequestIp());
} else {
param.put("trmIp", "0.0.0.0");
}
if (order.getTimeoutExpress() != null) {
param.put("timeExpire", order.getTimeoutExpress());
}
if (order.getPayMode().equals(TradeOrderPayModeEnum.WECHAT.getCode())) {
if (StringUtils.isBlank(order.getPayAppid())) {
param.put("subAppid", "wxa075e8509802f826");
} else {
param.put("subAppid", order.getPayAppid());
}
}
param.put("userId", order.getPayUserId());
param.put("ledgerAccountFlag", "01"); // 异步分账类型 00 异步分账,01 不分账,04 多次分账
if (order.getCreateType() != null && order.getCreateType().equals(TradeOrderCreateTypeEnum.type3.getCode())) {
param.put("notifyUrl", CommonSysConst.getSysConfig().getTianque_open_api_pay_notify_url());
} else {
param.put("notifyUrl", CommonSysConst.getSysConfig().getTianque_micro_pay_ret_url());
}
// 请求记录
log.info("请求参数:", JSONObject.toJSONString(param));
BsTradeOrderMsg orderMsg = new BsTradeOrderMsg();
orderMsg.setOutTradeNo(tradeNo);
orderMsg.setType(TradeOrderMsgTypeEnum.type1.getNumber());
orderMsg.setRequestContent(JSONObject.toJSONString(param));
tradeOrderMsgService.editTradeOrderMsg(orderMsg);
JSONObject response = null;
if (order.getTransType().equals("JSAPI")) {
response = RequestUtil.request(TianQueConfig.requestUrl + "/order/jsapiScan", param);
} else if (order.getTransType().equals("NATIVE")) {
response = RequestUtil.request(TianQueConfig.requestUrl + "/order/activePlusScan", param);
}
orderMsg.setResponseContent(response.toJSONString());
tradeOrderMsgService.editTradeOrderMsg(orderMsg);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("order", order);
returnMap.put("payMode", order.getPayMode());
returnMap.put("platformType", PlatformTypeEnum.type5.getNumber());
Map<String, Object> payParam = new HashMap<>();
Map<String, Object> accRespFields = new HashMap<>();
accRespFields.put("nonce_str", StringUtils.isNotBlank(response.getString("paynonceStr"))?response.getString("paynonceStr"):"");
accRespFields.put("code", StringUtils.isNotBlank(response.getString("payUrl"))?response.getString("payUrl"):"");
accRespFields.put("package", StringUtils.isNotBlank(response.getString("payPackage"))?response.getString("payPackage"):"");
accRespFields.put("form_data", "");
accRespFields.put("time_stamp", StringUtils.isNotBlank(response.getString("payTimeStamp"))?response.getString("payTimeStamp"):"");
accRespFields.put("code_image", "");
accRespFields.put("app_id", StringUtils.isNotBlank(response.getString("payAppId"))?response.getString("payAppId"):"");
accRespFields.put("sign_type", StringUtils.isNotBlank(response.getString("paySignType"))?response.getString("paySignType"):"");
accRespFields.put("redirect_url", StringUtils.isNotBlank(response.getString("redirectUrl"))?response.getString("redirectUrl"):"");
accRespFields.put("best_pay_info", "");
String prepay_id = "";
if (StringUtils.isNotBlank(response.getString("prepayId"))) {
prepay_id = response.getString("prepayId");
} else if (StringUtils.isNotBlank(response.getString("source"))) {
prepay_id = response.getString("source");
}
accRespFields.put("prepay_id", prepay_id);
accRespFields.put("pay_sign", StringUtils.isNotBlank(response.getString("paySign"))?response.getString("paySign"):"");
payParam.put("acc_resp_fields", accRespFields);
returnMap.put("payParam", JSONObject.parseObject(JSONObject.toJSONString(payParam)));
log.info("========= END 交易【主扫】 END ===========");
return returnMap;
}
/**
* 查询交易
* @param tradeNo 订单号
*/
public JSONObject queryTrade(String tradeNo) {
log.info("========= Start 交易查询 Start ===========");
try {
// 查询交易订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(tradeNo);
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
Map<String,Object> param = new HashMap<>();
param.put("mno", order.getPlatformMerNo());
param.put("ordNo", order.getOutTradeNo());
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/query/tradeQuery", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
return response;
} catch (Exception e) {
return null;
} finally {
log.info("========= END 交易查询 END ===========");
}
}
/**
* 手续费查询
* @param tradeNo 订单号
*/
public JSONObject poundageQuery(String merNo,String tradeNo) {
log.info("========= Start 手续费查询 Start ===========");
try {
Map<String,Object> param = new HashMap<>();
param.put("mno", merNo);
param.put("ordNo", tradeNo);
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/query/poundageQuery", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
return response;
} catch (Exception e) {
return null;
} finally {
log.info("========= END 手续费查询 END ===========");
}
}
/**
* 退款
* @param refundNo 订单号
*/
public Map<String, Object> refund(String refundNo, BigDecimal refundAmount) {
log.info("========= Start 交易退款 Start ===========");
// 查询交易订单
BsTradeOrderRefund orderRefund = tradeOrderRefundService.getRefundByRefundNo(refundNo);
if (orderRefund == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单");
}
if (!orderRefund.getStatus().equals(TradeOrderRefundStatusEnum.status1.getNumber())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "订单不处于退款中状态");
}
// 查询交易订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(orderRefund.getOutTradeNo());
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
Map<String,Object> param = new HashMap<>();
param.put("mno", order.getPlatformMerNo());
param.put("ordNo", orderRefund.getRefundNo());
param.put("origOrderNo", order.getOutTradeNo());
param.put("amt", refundAmount);
param.put("refundReason", orderRefund.getRefundReason());
// param.put("notifyUrl", orderRefund.getRefundReason());
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/order/refund", param);
// 请求记录
BsTradeOrderMsg orderMsg = new BsTradeOrderMsg();
orderMsg.setOutTradeNo(refundNo);
orderMsg.setType(TradeOrderMsgTypeEnum.type1.getNumber());
orderMsg.setRequestContent(JSONObject.toJSONString(param));
orderMsg.setResponseContent(response.toJSONString());
tradeOrderMsgService.editTradeOrderMsg(orderMsg);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
/* // 是否分账
if (order.getProfitSharingStatus().equals(true)) {
// 查询分账记录
BsTradeOrderProfitSharing tradeOrderProfitSharing = tradeOrderProfitSharingService.getProfitSharingByTradeOrderId(ProfitSharingCmdTypeEnum.CMD_TYPE_1, order.getId());
if (tradeOrderProfitSharing != null && tradeOrderProfitSharing.getStatus().equals(ProfitSharingStatusEnum.status3.getNumber())) {
laKaLaTradeSeparateService.cancel(tradeOrderProfitSharing.getProfitSharingOrderNo());
}
}*/
orderRefund.setPlatformOrderNo(response.getString("uuid"));
orderRefund.setAccTradeNo(response.getString("transactionId"));
orderRefund.setTotalAmount(order.getTradeActualAmount());
orderRefund.setRefundAmount(response.getBigDecimal("amt"));
orderRefund.setPayerAmount(response.getBigDecimal("amt"));
orderRefund.setSettleAmount(response.getBigDecimal("realRefundAmount"));
orderRefund.setSettleDate(DateUtil.format(response.getString("clearDt"), "yyyyMMdd"));
orderRefund.setRefundTime(new Date());
orderRefund.setStatus(TradeOrderRefundStatusEnum.status2.getNumber());
tradeOrderRefundService.editOrderRefund(orderRefund);
order.setStatus(TradeOrderStatusEnum.status6.getNumber());
tradeOrderService.editOrder(order);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("order", order);
returnMap.put("orderRefund", orderRefund);
log.info("========= END 交易退款 END ===========");
return returnMap;
}
/**
* 退款查询
* @param refundNo 订单号
*/
public Map<String, Object> refundQuery(String refundNo) {
log.info("========= Start 退款查询 Start ===========");
// 查询交易订单
BsTradeOrderRefund orderRefund = tradeOrderRefundService.getRefundByRefundNo(refundNo);
if (orderRefund == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到订单");
}
// 查询交易订单
BsTradeOrder order = tradeOrderService.getOrderByOutTradeNo(orderRefund.getOutTradeNo());
if (order == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到交易订单");
}
Map<String,Object> param = new HashMap<>();
param.put("mno", order.getPlatformMerNo());
param.put("ordNo", orderRefund.getRefundNo());
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/query/refundQuery", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
log.info("========= END 退款查询 END ===========");
return response;
}
/**
* 获取银联用户标识
* @param userAuthCode 授权码
* @param paymentApp 银联支付标识
*/
public JSONObject getUnionInfo(String userAuthCode,String paymentApp) {
log.info("========= Start 获取银联用户标识 Start ===========");
// 查询交易订单
Map<String,Object> param = new HashMap<>();
param.put("userAuthCode", userAuthCode);
param.put("paymentApp", paymentApp);
JSONObject response = RequestUtil.request(TianQueConfig.requestUrl + "/query/getUnionInfo", param);
if (!"0000".equals(response.getString("bizCode"))) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, response.getString("bizMsg"));
}
log.info("========= END 获取银联用户标识 END ===========");
return response;
}
}

@ -122,6 +122,16 @@ public class CommonSysConfig {
*/
private String tianque_public_key;
/**
* 随行付天阙支付回调地址
*/
private String tianque_micro_pay_ret_url;
/**
* 随行付天阙支付api回调地址
*/
private String tianque_open_api_pay_notify_url;
/**
* 域名
*/

@ -10,10 +10,12 @@ import java.util.Map;
*/
public interface BsMerContractRecordMsgMapperExt {
@Select({"select order_no,response_code,response_msg,response_content,create_time from bs_mer_contract_record_msg" +
" where order_no = (SELECT order_no FROM `bs_mer_contract_record` where mer_id = #{merId} ORDER BY create_time desc LIMIT 1)" +
@Select({"<script>" +
" select order_no,response_code,response_msg,response_content,create_time from bs_mer_contract_record_msg" +
" where order_no = (SELECT order_no FROM `bs_mer_contract_record` where mer_id = #{merId} <if test='platformType != null'> and platform_type = #{platformType} </if> ORDER BY create_time desc LIMIT 1)" +
" and response_code = 'REJECT' " +
" ORDER BY create_time desc LIMIT 1"})
Map<String, Object> selectMerContractRecordMsg(@Param("merId") Long merId);
" ORDER BY create_time desc LIMIT 1" +
" </script>"})
Map<String, Object> selectMerContractRecordMsg(@Param("merId") Long merId, @Param("platformType") Integer platformType);
}

@ -46,19 +46,21 @@ public interface BsMerMapper extends BsMerMapperExt {
"reg_phone, reg_name, ",
"reg_email, mer_type, ",
"mer_no, mer_name, ",
"mer_abbreviate, mer_mcc_code, ",
"mer_mcc_name, blis_url, ",
"blis_name, blis_no, ",
"blis_reg_address, blis_period_type, ",
"blis_period_start, blis_period_end, ",
"lar_name, lar_id_card, ",
"lar_id_card_portrait_img, lar_id_card_national_emblem_img, ",
"lar_id_card_address, lar_id_card_period_type, ",
"lar_id_card_period_start, lar_id_card_period_end, ",
"complete_status, mer_status, ",
"create_salesman_id, create_salesman_name, ",
"create_time, update_time, ",
"ext_1, ext_2, ext_3)",
"mer_abbreviate, mer_operate_type, ",
"mer_online_type, mer_online_name, ",
"mer_mcc_code, mer_mcc_name, ",
"blis_url, blis_name, ",
"blis_no, blis_reg_address, ",
"blis_period_type, blis_period_start, ",
"blis_period_end, lar_name, ",
"lar_id_card, lar_id_card_portrait_img, ",
"lar_id_card_national_emblem_img, lar_id_card_address, ",
"lar_id_card_period_type, lar_id_card_period_start, ",
"lar_id_card_period_end, complete_status, ",
"mer_status, create_salesman_id, ",
"create_salesman_name, create_time, ",
"update_time, ext_1, ",
"ext_2, ext_3)",
"values (#{orgNo,jdbcType=VARCHAR}, #{orgName,jdbcType=VARCHAR}, ",
"#{companyId,jdbcType=BIGINT}, #{companyName,jdbcType=VARCHAR}, ",
"#{agentId,jdbcType=BIGINT}, #{agentName,jdbcType=VARCHAR}, ",
@ -66,19 +68,21 @@ public interface BsMerMapper extends BsMerMapperExt {
"#{regPhone,jdbcType=VARCHAR}, #{regName,jdbcType=VARCHAR}, ",
"#{regEmail,jdbcType=VARCHAR}, #{merType,jdbcType=INTEGER}, ",
"#{merNo,jdbcType=VARCHAR}, #{merName,jdbcType=VARCHAR}, ",
"#{merAbbreviate,jdbcType=VARCHAR}, #{merMccCode,jdbcType=VARCHAR}, ",
"#{merMccName,jdbcType=VARCHAR}, #{blisUrl,jdbcType=VARCHAR}, ",
"#{blisName,jdbcType=VARCHAR}, #{blisNo,jdbcType=VARCHAR}, ",
"#{blisRegAddress,jdbcType=VARCHAR}, #{blisPeriodType,jdbcType=INTEGER}, ",
"#{blisPeriodStart,jdbcType=VARCHAR}, #{blisPeriodEnd,jdbcType=VARCHAR}, ",
"#{larName,jdbcType=VARCHAR}, #{larIdCard,jdbcType=VARCHAR}, ",
"#{larIdCardPortraitImg,jdbcType=VARCHAR}, #{larIdCardNationalEmblemImg,jdbcType=VARCHAR}, ",
"#{larIdCardAddress,jdbcType=VARCHAR}, #{larIdCardPeriodType,jdbcType=INTEGER}, ",
"#{larIdCardPeriodStart,jdbcType=VARCHAR}, #{larIdCardPeriodEnd,jdbcType=VARCHAR}, ",
"#{completeStatus,jdbcType=INTEGER}, #{merStatus,jdbcType=INTEGER}, ",
"#{createSalesmanId,jdbcType=BIGINT}, #{createSalesmanName,jdbcType=VARCHAR}, ",
"#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
"#{merAbbreviate,jdbcType=VARCHAR}, #{merOperateType,jdbcType=INTEGER}, ",
"#{merOnlineType,jdbcType=INTEGER}, #{merOnlineName,jdbcType=VARCHAR}, ",
"#{merMccCode,jdbcType=VARCHAR}, #{merMccName,jdbcType=VARCHAR}, ",
"#{blisUrl,jdbcType=VARCHAR}, #{blisName,jdbcType=VARCHAR}, ",
"#{blisNo,jdbcType=VARCHAR}, #{blisRegAddress,jdbcType=VARCHAR}, ",
"#{blisPeriodType,jdbcType=INTEGER}, #{blisPeriodStart,jdbcType=VARCHAR}, ",
"#{blisPeriodEnd,jdbcType=VARCHAR}, #{larName,jdbcType=VARCHAR}, ",
"#{larIdCard,jdbcType=VARCHAR}, #{larIdCardPortraitImg,jdbcType=VARCHAR}, ",
"#{larIdCardNationalEmblemImg,jdbcType=VARCHAR}, #{larIdCardAddress,jdbcType=VARCHAR}, ",
"#{larIdCardPeriodType,jdbcType=INTEGER}, #{larIdCardPeriodStart,jdbcType=VARCHAR}, ",
"#{larIdCardPeriodEnd,jdbcType=VARCHAR}, #{completeStatus,jdbcType=INTEGER}, ",
"#{merStatus,jdbcType=INTEGER}, #{createSalesmanId,jdbcType=BIGINT}, ",
"#{createSalesmanName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ",
"#{updateTime,jdbcType=TIMESTAMP}, #{ext1,jdbcType=VARCHAR}, ",
"#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
})
@Options(useGeneratedKeys=true,keyProperty="id")
int insert(BsMer record);
@ -105,6 +109,9 @@ public interface BsMerMapper extends BsMerMapperExt {
@Result(column="mer_no", property="merNo", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_abbreviate", property="merAbbreviate", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_operate_type", property="merOperateType", jdbcType=JdbcType.INTEGER),
@Result(column="mer_online_type", property="merOnlineType", jdbcType=JdbcType.INTEGER),
@Result(column="mer_online_name", property="merOnlineName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_mcc_code", property="merMccCode", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_mcc_name", property="merMccName", jdbcType=JdbcType.VARCHAR),
@Result(column="blis_url", property="blisUrl", jdbcType=JdbcType.VARCHAR),
@ -138,12 +145,12 @@ public interface BsMerMapper extends BsMerMapperExt {
"select",
"id, org_no, org_name, company_id, company_name, agent_id, agent_name, salesman_id, ",
"salesman_name, reg_phone, reg_name, reg_email, mer_type, mer_no, mer_name, mer_abbreviate, ",
"mer_mcc_code, mer_mcc_name, blis_url, blis_name, blis_no, blis_reg_address, ",
"blis_period_type, blis_period_start, blis_period_end, lar_name, lar_id_card, ",
"lar_id_card_portrait_img, lar_id_card_national_emblem_img, lar_id_card_address, ",
"lar_id_card_period_type, lar_id_card_period_start, lar_id_card_period_end, complete_status, ",
"mer_status, create_salesman_id, create_salesman_name, create_time, update_time, ",
"ext_1, ext_2, ext_3",
"mer_operate_type, mer_online_type, mer_online_name, mer_mcc_code, mer_mcc_name, ",
"blis_url, blis_name, blis_no, blis_reg_address, blis_period_type, blis_period_start, ",
"blis_period_end, lar_name, lar_id_card, lar_id_card_portrait_img, lar_id_card_national_emblem_img, ",
"lar_id_card_address, lar_id_card_period_type, lar_id_card_period_start, lar_id_card_period_end, ",
"complete_status, mer_status, create_salesman_id, create_salesman_name, create_time, ",
"update_time, ext_1, ext_2, ext_3",
"from bs_mer",
"where id = #{id,jdbcType=BIGINT}"
})
@ -164,6 +171,9 @@ public interface BsMerMapper extends BsMerMapperExt {
@Result(column="mer_no", property="merNo", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_abbreviate", property="merAbbreviate", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_operate_type", property="merOperateType", jdbcType=JdbcType.INTEGER),
@Result(column="mer_online_type", property="merOnlineType", jdbcType=JdbcType.INTEGER),
@Result(column="mer_online_name", property="merOnlineName", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_mcc_code", property="merMccCode", jdbcType=JdbcType.VARCHAR),
@Result(column="mer_mcc_name", property="merMccName", jdbcType=JdbcType.VARCHAR),
@Result(column="blis_url", property="blisUrl", jdbcType=JdbcType.VARCHAR),
@ -219,6 +229,9 @@ public interface BsMerMapper extends BsMerMapperExt {
"mer_no = #{merNo,jdbcType=VARCHAR},",
"mer_name = #{merName,jdbcType=VARCHAR},",
"mer_abbreviate = #{merAbbreviate,jdbcType=VARCHAR},",
"mer_operate_type = #{merOperateType,jdbcType=INTEGER},",
"mer_online_type = #{merOnlineType,jdbcType=INTEGER},",
"mer_online_name = #{merOnlineName,jdbcType=VARCHAR},",
"mer_mcc_code = #{merMccCode,jdbcType=VARCHAR},",
"mer_mcc_name = #{merMccName,jdbcType=VARCHAR},",
"blis_url = #{blisUrl,jdbcType=VARCHAR},",

@ -46,9 +46,9 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
"mer_public_key, platform_operator_id, ",
"platform_operator_pwd, refund_cert_url, ",
"refund_cert_pwd, `status`, ",
"suggestion_reject, create_time, ",
"update_time, ext_1, ",
"ext_2, ext_3)",
"suggestion_reject, current_platform, ",
"create_time, update_time, ",
"ext_1, ext_2, ext_3)",
"values (#{companyId,jdbcType=BIGINT}, #{agentId,jdbcType=BIGINT}, ",
"#{merId,jdbcType=BIGINT}, #{merNo,jdbcType=VARCHAR}, #{platformType,jdbcType=INTEGER}, ",
"#{platformNo,jdbcType=VARCHAR}, #{cupNo,jdbcType=VARCHAR}, ",
@ -56,9 +56,9 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
"#{merPublicKey,jdbcType=VARCHAR}, #{platformOperatorId,jdbcType=VARCHAR}, ",
"#{platformOperatorPwd,jdbcType=VARCHAR}, #{refundCertUrl,jdbcType=VARCHAR}, ",
"#{refundCertPwd,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, ",
"#{suggestionReject,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ",
"#{updateTime,jdbcType=TIMESTAMP}, #{ext1,jdbcType=VARCHAR}, ",
"#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
"#{suggestionReject,jdbcType=VARCHAR}, #{currentPlatform,jdbcType=BIT}, ",
"#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ",
"#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
})
@Options(useGeneratedKeys=true,keyProperty="id")
int insert(BsMerPlatformNo record);
@ -86,6 +86,7 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
@Result(column="refund_cert_pwd", property="refundCertPwd", jdbcType=JdbcType.VARCHAR),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="suggestion_reject", property="suggestionReject", jdbcType=JdbcType.VARCHAR),
@Result(column="current_platform", property="currentPlatform", jdbcType=JdbcType.BIT),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@ -98,8 +99,8 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
"select",
"id, company_id, agent_id, mer_id, mer_no, platform_type, platform_no, cup_no, ",
"pos_id, branch_id, mer_public_key, platform_operator_id, platform_operator_pwd, ",
"refund_cert_url, refund_cert_pwd, `status`, suggestion_reject, create_time, ",
"update_time, ext_1, ext_2, ext_3",
"refund_cert_url, refund_cert_pwd, `status`, suggestion_reject, current_platform, ",
"create_time, update_time, ext_1, ext_2, ext_3",
"from bs_mer_platform_no",
"where id = #{id,jdbcType=BIGINT}"
})
@ -121,6 +122,7 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
@Result(column="refund_cert_pwd", property="refundCertPwd", jdbcType=JdbcType.VARCHAR),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="suggestion_reject", property="suggestionReject", jdbcType=JdbcType.VARCHAR),
@Result(column="current_platform", property="currentPlatform", jdbcType=JdbcType.BIT),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@ -156,6 +158,7 @@ public interface BsMerPlatformNoMapper extends BsMerPlatformNoMapperExt {
"refund_cert_pwd = #{refundCertPwd,jdbcType=VARCHAR},",
"`status` = #{status,jdbcType=INTEGER},",
"suggestion_reject = #{suggestionReject,jdbcType=VARCHAR},",
"current_platform = #{currentPlatform,jdbcType=BIT},",
"create_time = #{createTime,jdbcType=TIMESTAMP},",
"update_time = #{updateTime,jdbcType=TIMESTAMP},",
"ext_1 = #{ext1,jdbcType=VARCHAR},",

@ -92,6 +92,10 @@ public class BsMerPlatformNoSqlProvider {
sql.VALUES("suggestion_reject", "#{suggestionReject,jdbcType=VARCHAR}");
}
if (record.getCurrentPlatform() != null) {
sql.VALUES("current_platform", "#{currentPlatform,jdbcType=BIT}");
}
if (record.getCreateTime() != null) {
sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}");
}
@ -138,6 +142,7 @@ public class BsMerPlatformNoSqlProvider {
sql.SELECT("refund_cert_pwd");
sql.SELECT("`status`");
sql.SELECT("suggestion_reject");
sql.SELECT("current_platform");
sql.SELECT("create_time");
sql.SELECT("update_time");
sql.SELECT("ext_1");
@ -228,6 +233,10 @@ public class BsMerPlatformNoSqlProvider {
sql.SET("suggestion_reject = #{record.suggestionReject,jdbcType=VARCHAR}");
}
if (record.getCurrentPlatform() != null) {
sql.SET("current_platform = #{record.currentPlatform,jdbcType=BIT}");
}
if (record.getCreateTime() != null) {
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
}
@ -273,6 +282,7 @@ public class BsMerPlatformNoSqlProvider {
sql.SET("refund_cert_pwd = #{record.refundCertPwd,jdbcType=VARCHAR}");
sql.SET("`status` = #{record.status,jdbcType=INTEGER}");
sql.SET("suggestion_reject = #{record.suggestionReject,jdbcType=VARCHAR}");
sql.SET("current_platform = #{record.currentPlatform,jdbcType=BIT}");
sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}");
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
@ -352,6 +362,10 @@ public class BsMerPlatformNoSqlProvider {
sql.SET("suggestion_reject = #{suggestionReject,jdbcType=VARCHAR}");
}
if (record.getCurrentPlatform() != null) {
sql.SET("current_platform = #{currentPlatform,jdbcType=BIT}");
}
if (record.getCreateTime() != null) {
sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}");
}

@ -88,6 +88,18 @@ public class BsMerSqlProvider {
sql.VALUES("mer_abbreviate", "#{merAbbreviate,jdbcType=VARCHAR}");
}
if (record.getMerOperateType() != null) {
sql.VALUES("mer_operate_type", "#{merOperateType,jdbcType=INTEGER}");
}
if (record.getMerOnlineType() != null) {
sql.VALUES("mer_online_type", "#{merOnlineType,jdbcType=INTEGER}");
}
if (record.getMerOnlineName() != null) {
sql.VALUES("mer_online_name", "#{merOnlineName,jdbcType=VARCHAR}");
}
if (record.getMerMccCode() != null) {
sql.VALUES("mer_mcc_code", "#{merMccCode,jdbcType=VARCHAR}");
}
@ -217,6 +229,9 @@ public class BsMerSqlProvider {
sql.SELECT("mer_no");
sql.SELECT("mer_name");
sql.SELECT("mer_abbreviate");
sql.SELECT("mer_operate_type");
sql.SELECT("mer_online_type");
sql.SELECT("mer_online_name");
sql.SELECT("mer_mcc_code");
sql.SELECT("mer_mcc_name");
sql.SELECT("blis_url");
@ -324,6 +339,18 @@ public class BsMerSqlProvider {
sql.SET("mer_abbreviate = #{record.merAbbreviate,jdbcType=VARCHAR}");
}
if (record.getMerOperateType() != null) {
sql.SET("mer_operate_type = #{record.merOperateType,jdbcType=INTEGER}");
}
if (record.getMerOnlineType() != null) {
sql.SET("mer_online_type = #{record.merOnlineType,jdbcType=INTEGER}");
}
if (record.getMerOnlineName() != null) {
sql.SET("mer_online_name = #{record.merOnlineName,jdbcType=VARCHAR}");
}
if (record.getMerMccCode() != null) {
sql.SET("mer_mcc_code = #{record.merMccCode,jdbcType=VARCHAR}");
}
@ -452,6 +479,9 @@ public class BsMerSqlProvider {
sql.SET("mer_no = #{record.merNo,jdbcType=VARCHAR}");
sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}");
sql.SET("mer_abbreviate = #{record.merAbbreviate,jdbcType=VARCHAR}");
sql.SET("mer_operate_type = #{record.merOperateType,jdbcType=INTEGER}");
sql.SET("mer_online_type = #{record.merOnlineType,jdbcType=INTEGER}");
sql.SET("mer_online_name = #{record.merOnlineName,jdbcType=VARCHAR}");
sql.SET("mer_mcc_code = #{record.merMccCode,jdbcType=VARCHAR}");
sql.SET("mer_mcc_name = #{record.merMccName,jdbcType=VARCHAR}");
sql.SET("blis_url = #{record.blisUrl,jdbcType=VARCHAR}");
@ -548,6 +578,18 @@ public class BsMerSqlProvider {
sql.SET("mer_abbreviate = #{merAbbreviate,jdbcType=VARCHAR}");
}
if (record.getMerOperateType() != null) {
sql.SET("mer_operate_type = #{merOperateType,jdbcType=INTEGER}");
}
if (record.getMerOnlineType() != null) {
sql.SET("mer_online_type = #{merOnlineType,jdbcType=INTEGER}");
}
if (record.getMerOnlineName() != null) {
sql.SET("mer_online_name = #{merOnlineName,jdbcType=VARCHAR}");
}
if (record.getMerMccCode() != null) {
sql.SET("mer_mcc_code = #{merMccCode,jdbcType=VARCHAR}");
}

@ -93,6 +93,21 @@ public class BsMer implements Serializable {
*/
private String merAbbreviate;
/**
* 商户经营类型 1线下 2线上
*/
private Integer merOperateType;
/**
* 商户线上产品类型 1APP 2网站 3公众号/小程序/服务窗
*/
private Integer merOnlineType;
/**
* 商户线上产品名称
*/
private String merOnlineName;
/**
* 商户MCC编号
*/
@ -344,6 +359,30 @@ public class BsMer implements Serializable {
this.merAbbreviate = merAbbreviate;
}
public Integer getMerOperateType() {
return merOperateType;
}
public void setMerOperateType(Integer merOperateType) {
this.merOperateType = merOperateType;
}
public Integer getMerOnlineType() {
return merOnlineType;
}
public void setMerOnlineType(Integer merOnlineType) {
this.merOnlineType = merOnlineType;
}
public String getMerOnlineName() {
return merOnlineName;
}
public void setMerOnlineName(String merOnlineName) {
this.merOnlineName = merOnlineName;
}
public String getMerMccCode() {
return merMccCode;
}
@ -580,6 +619,9 @@ public class BsMer implements Serializable {
&& (this.getMerNo() == null ? other.getMerNo() == null : this.getMerNo().equals(other.getMerNo()))
&& (this.getMerName() == null ? other.getMerName() == null : this.getMerName().equals(other.getMerName()))
&& (this.getMerAbbreviate() == null ? other.getMerAbbreviate() == null : this.getMerAbbreviate().equals(other.getMerAbbreviate()))
&& (this.getMerOperateType() == null ? other.getMerOperateType() == null : this.getMerOperateType().equals(other.getMerOperateType()))
&& (this.getMerOnlineType() == null ? other.getMerOnlineType() == null : this.getMerOnlineType().equals(other.getMerOnlineType()))
&& (this.getMerOnlineName() == null ? other.getMerOnlineName() == null : this.getMerOnlineName().equals(other.getMerOnlineName()))
&& (this.getMerMccCode() == null ? other.getMerMccCode() == null : this.getMerMccCode().equals(other.getMerMccCode()))
&& (this.getMerMccName() == null ? other.getMerMccName() == null : this.getMerMccName().equals(other.getMerMccName()))
&& (this.getBlisUrl() == null ? other.getBlisUrl() == null : this.getBlisUrl().equals(other.getBlisUrl()))
@ -628,6 +670,9 @@ public class BsMer implements Serializable {
result = prime * result + ((getMerNo() == null) ? 0 : getMerNo().hashCode());
result = prime * result + ((getMerName() == null) ? 0 : getMerName().hashCode());
result = prime * result + ((getMerAbbreviate() == null) ? 0 : getMerAbbreviate().hashCode());
result = prime * result + ((getMerOperateType() == null) ? 0 : getMerOperateType().hashCode());
result = prime * result + ((getMerOnlineType() == null) ? 0 : getMerOnlineType().hashCode());
result = prime * result + ((getMerOnlineName() == null) ? 0 : getMerOnlineName().hashCode());
result = prime * result + ((getMerMccCode() == null) ? 0 : getMerMccCode().hashCode());
result = prime * result + ((getMerMccName() == null) ? 0 : getMerMccName().hashCode());
result = prime * result + ((getBlisUrl() == null) ? 0 : getBlisUrl().hashCode());
@ -679,6 +724,9 @@ public class BsMer implements Serializable {
sb.append(", merNo=").append(merNo);
sb.append(", merName=").append(merName);
sb.append(", merAbbreviate=").append(merAbbreviate);
sb.append(", merOperateType=").append(merOperateType);
sb.append(", merOnlineType=").append(merOnlineType);
sb.append(", merOnlineName=").append(merOnlineName);
sb.append(", merMccCode=").append(merMccCode);
sb.append(", merMccName=").append(merMccName);
sb.append(", blisUrl=").append(blisUrl);

@ -1195,6 +1195,196 @@ public class BsMerExample {
return (Criteria) this;
}
public Criteria andMerOperateTypeIsNull() {
addCriterion("mer_operate_type is null");
return (Criteria) this;
}
public Criteria andMerOperateTypeIsNotNull() {
addCriterion("mer_operate_type is not null");
return (Criteria) this;
}
public Criteria andMerOperateTypeEqualTo(Integer value) {
addCriterion("mer_operate_type =", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeNotEqualTo(Integer value) {
addCriterion("mer_operate_type <>", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeGreaterThan(Integer value) {
addCriterion("mer_operate_type >", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeGreaterThanOrEqualTo(Integer value) {
addCriterion("mer_operate_type >=", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeLessThan(Integer value) {
addCriterion("mer_operate_type <", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeLessThanOrEqualTo(Integer value) {
addCriterion("mer_operate_type <=", value, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeIn(List<Integer> values) {
addCriterion("mer_operate_type in", values, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeNotIn(List<Integer> values) {
addCriterion("mer_operate_type not in", values, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeBetween(Integer value1, Integer value2) {
addCriterion("mer_operate_type between", value1, value2, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOperateTypeNotBetween(Integer value1, Integer value2) {
addCriterion("mer_operate_type not between", value1, value2, "merOperateType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeIsNull() {
addCriterion("mer_online_type is null");
return (Criteria) this;
}
public Criteria andMerOnlineTypeIsNotNull() {
addCriterion("mer_online_type is not null");
return (Criteria) this;
}
public Criteria andMerOnlineTypeEqualTo(Integer value) {
addCriterion("mer_online_type =", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeNotEqualTo(Integer value) {
addCriterion("mer_online_type <>", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeGreaterThan(Integer value) {
addCriterion("mer_online_type >", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeGreaterThanOrEqualTo(Integer value) {
addCriterion("mer_online_type >=", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeLessThan(Integer value) {
addCriterion("mer_online_type <", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeLessThanOrEqualTo(Integer value) {
addCriterion("mer_online_type <=", value, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeIn(List<Integer> values) {
addCriterion("mer_online_type in", values, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeNotIn(List<Integer> values) {
addCriterion("mer_online_type not in", values, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeBetween(Integer value1, Integer value2) {
addCriterion("mer_online_type between", value1, value2, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineTypeNotBetween(Integer value1, Integer value2) {
addCriterion("mer_online_type not between", value1, value2, "merOnlineType");
return (Criteria) this;
}
public Criteria andMerOnlineNameIsNull() {
addCriterion("mer_online_name is null");
return (Criteria) this;
}
public Criteria andMerOnlineNameIsNotNull() {
addCriterion("mer_online_name is not null");
return (Criteria) this;
}
public Criteria andMerOnlineNameEqualTo(String value) {
addCriterion("mer_online_name =", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameNotEqualTo(String value) {
addCriterion("mer_online_name <>", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameGreaterThan(String value) {
addCriterion("mer_online_name >", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameGreaterThanOrEqualTo(String value) {
addCriterion("mer_online_name >=", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameLessThan(String value) {
addCriterion("mer_online_name <", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameLessThanOrEqualTo(String value) {
addCriterion("mer_online_name <=", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameLike(String value) {
addCriterion("mer_online_name like", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameNotLike(String value) {
addCriterion("mer_online_name not like", value, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameIn(List<String> values) {
addCriterion("mer_online_name in", values, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameNotIn(List<String> values) {
addCriterion("mer_online_name not in", values, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameBetween(String value1, String value2) {
addCriterion("mer_online_name between", value1, value2, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerOnlineNameNotBetween(String value1, String value2) {
addCriterion("mer_online_name not between", value1, value2, "merOnlineName");
return (Criteria) this;
}
public Criteria andMerMccCodeIsNull() {
addCriterion("mer_mcc_code is null");
return (Criteria) this;

@ -98,6 +98,11 @@ public class BsMerPlatformNo implements Serializable {
*/
private String suggestionReject;
/**
* 当前支付平台 1: 0:
*/
private Boolean currentPlatform;
/**
* 创建时间
*/
@ -252,6 +257,14 @@ public class BsMerPlatformNo implements Serializable {
this.suggestionReject = suggestionReject;
}
public Boolean getCurrentPlatform() {
return currentPlatform;
}
public void setCurrentPlatform(Boolean currentPlatform) {
this.currentPlatform = currentPlatform;
}
public Date getCreateTime() {
return createTime;
}
@ -321,6 +334,7 @@ public class BsMerPlatformNo implements Serializable {
&& (this.getRefundCertPwd() == null ? other.getRefundCertPwd() == null : this.getRefundCertPwd().equals(other.getRefundCertPwd()))
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
&& (this.getSuggestionReject() == null ? other.getSuggestionReject() == null : this.getSuggestionReject().equals(other.getSuggestionReject()))
&& (this.getCurrentPlatform() == null ? other.getCurrentPlatform() == null : this.getCurrentPlatform().equals(other.getCurrentPlatform()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
@ -349,6 +363,7 @@ public class BsMerPlatformNo implements Serializable {
result = prime * result + ((getRefundCertPwd() == null) ? 0 : getRefundCertPwd().hashCode());
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
result = prime * result + ((getSuggestionReject() == null) ? 0 : getSuggestionReject().hashCode());
result = prime * result + ((getCurrentPlatform() == null) ? 0 : getCurrentPlatform().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
@ -380,6 +395,7 @@ public class BsMerPlatformNo implements Serializable {
sb.append(", refundCertPwd=").append(refundCertPwd);
sb.append(", status=").append(status);
sb.append(", suggestionReject=").append(suggestionReject);
sb.append(", currentPlatform=").append(currentPlatform);
sb.append(", createTime=").append(createTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", ext1=").append(ext1);

@ -1255,6 +1255,66 @@ public class BsMerPlatformNoExample {
return (Criteria) this;
}
public Criteria andCurrentPlatformIsNull() {
addCriterion("current_platform is null");
return (Criteria) this;
}
public Criteria andCurrentPlatformIsNotNull() {
addCriterion("current_platform is not null");
return (Criteria) this;
}
public Criteria andCurrentPlatformEqualTo(Boolean value) {
addCriterion("current_platform =", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformNotEqualTo(Boolean value) {
addCriterion("current_platform <>", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformGreaterThan(Boolean value) {
addCriterion("current_platform >", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformGreaterThanOrEqualTo(Boolean value) {
addCriterion("current_platform >=", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformLessThan(Boolean value) {
addCriterion("current_platform <", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformLessThanOrEqualTo(Boolean value) {
addCriterion("current_platform <=", value, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformIn(List<Boolean> values) {
addCriterion("current_platform in", values, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformNotIn(List<Boolean> values) {
addCriterion("current_platform not in", values, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformBetween(Boolean value1, Boolean value2) {
addCriterion("current_platform between", value1, value2, "currentPlatform");
return (Criteria) this;
}
public Criteria andCurrentPlatformNotBetween(Boolean value1, Boolean value2) {
addCriterion("current_platform not between", value1, value2, "currentPlatform");
return (Criteria) this;
}
public Criteria andCreateTimeIsNull() {
addCriterion("create_time is null");
return (Criteria) this;

@ -10,6 +10,11 @@ import lombok.Data;
@Data
public class StoreModel extends BsStore {
/**
* 平台类型
*/
private Integer merPlatformType;
/**
* 账户信息
*/

@ -2,10 +2,12 @@ package com.hfkj.openapi.v1.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.channel.lakala.LaKaLaTradeService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.entity.BsTradeOrder;
import com.hfkj.entity.BsTradeOrderRefund;
import com.hfkj.dao.OpenApiTradeOrderMapper;
@ -17,8 +19,10 @@ import com.hfkj.openapi.v1.model.TradeBillsModel;
import com.hfkj.openapi.v1.service.OpenApiTradeOrderService;
import com.hfkj.openapi.v1.utils.SignatureUtil;
import com.hfkj.service.BsMerKeyService;
import com.hfkj.service.BsMerPlatformNoService;
import com.hfkj.service.BsTradeOrderRefundService;
import com.hfkj.service.BsTradeOrderService;
import com.hfkj.sysenum.PlatformTypeEnum;
import com.hfkj.sysenum.TradeOrderRefundStatusEnum;
import com.hfkj.sysenum.TradeOrderRefundTypeEnum;
import com.hfkj.sysenum.TradeOrderStatusEnum;
@ -43,25 +47,39 @@ public class OpenApiTradeOrderServiceImpl implements OpenApiTradeOrderService {
@Resource
private OpenApiTradeOrderMapper openApiTradeOrderMapper;
@Resource
private BsTradeOrderService bsTradeOrderService;
@Resource
private BsTradeOrderRefundService bsTradeOrderRefundService;
@Resource
private BsMerKeyService merKeyService;
@Resource
private LaKaLaTradeService laKaLaTradeService;
@Resource
private TianQueTradeService tianQueTradeService;
@Resource
private BsMerPlatformNoService merPlatformNoService;
@Override
@Transactional(propagation= Propagation.REQUIRES_NEW)
public Map<String, Object> createOrder(BsTradeOrder tradeOrder) throws Exception {
bsTradeOrderService.editOrder(tradeOrder);
Map<String, Object> preorder = laKaLaTradeService.preorder(tradeOrder.getOutTradeNo());
BsMerPlatformNo platform = merPlatformNoService.getCurrentPlatform(tradeOrder.getMerId());
if (platform == null) {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "未配置支付渠道");
}
Map<String, Object> preorder;
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
preorder = laKaLaTradeService.preorder(tradeOrder.getOutTradeNo());
} else if (platform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
preorder = tianQueTradeService.preorder(tradeOrder.getOutTradeNo());
} else {
throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "未知的支付渠道");
}
preorder.put("merchantNo", tradeOrder.getMerNo());
preorder.put("outTradeNo", tradeOrder.getOutTradeNo());

@ -85,51 +85,17 @@ public class SignatureUtil {
public static void main(String[] args) throws Exception {
String paramStr = "{\n" +
" \"merchantNo\": \"2023041916292112804\",\n" +
" \"outTradeNo\": \"ZF1130202305051459532538970028\",\n" +
" \"payMode\": \"ALIPAY\",\n" +
" \"outTradeNo\": \"ZF1130202305051459532538970034\",\n" +
" \"payMode\": \"WECHAT\",\n" +
" \"totalAmount\": 0.01,\n" +
" \"transType\": \"NATIVE\",\n" +
" \"transType\": \"JSAPI\",\n" +
" \"subAppid\": \"wx52bbabe89258602a\",\n" +
" \"userId\": \"oz6S35CrEuPfBbpta6DuLninz2tA\",\n" +
" \"profitSharing\": 0,\n" +
" \"specialField\": \"测试\"" +
"}";
String sign = createSign(JSONObject.parseObject(paramStr), "2jLO2WjXcSRSzTCaca0Kmv0OFrfYBbrA");
String sign = createSign(JSONObject.parseObject(paramStr), "cj0XLsFuryluIXiopa25IwvsurWzBeUW");
System.out.println(sign);
/*// 创建一个线程池,设置最大线程数为10
ExecutorService executor = Executors.newFixedThreadPool(10);
// 提交10个查询任务
for (int i = 0; i < 10; i++) {
executor.submit(new QueryTask(i));
}
// 关闭线程池
executor.shutdown();*/
}
static class QueryTask implements Runnable {
private int taskId;
public QueryTask(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
// 执行查询任务
String result = queryData(taskId);
System.out.println("Task " + taskId + " result: " + result);
}
private String queryData(int taskId) {
// 模拟查询数据的过程
/*try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
return "data " + taskId;
}
}
}

@ -1,6 +1,7 @@
package com.hfkj.service;
import com.hfkj.entity.BsMerContractRecordMsg;
import com.hfkj.sysenum.PlatformTypeEnum;
import java.util.Map;
@ -21,5 +22,5 @@ public interface BsMerContractRecordMsgService {
* @param merId
* @return
*/
Map<String, Object> getMerContractRecordMsg(Long merId);
Map<String, Object> getMerContractRecordMsg(Long merId, PlatformTypeEnum platformType);
}

@ -30,6 +30,13 @@ public interface BsMerContractRecordService {
*/
BsMerContractRecord getRecordByOrderNo(String orderNo);
/**
* 根据订单号 查询记录
* @param contractId
* @return
*/
BsMerContractRecord getRecordByContractId(String contractId);
/**
* 查询进件记录
* @param param

@ -1,6 +1,7 @@
package com.hfkj.service;
import com.hfkj.entity.BsMerContractRecord;
import com.hfkj.sysenum.PlatformTypeEnum;
import java.util.List;
import java.util.Map;
@ -15,7 +16,7 @@ public interface BsMerContractService {
* 商户进件
* @param merId
*/
void addMerContract(Long merId) throws Exception;
void addMerContract(Long merId, PlatformTypeEnum platformType) throws Exception;
/**
* 复议提交

@ -1,6 +1,7 @@
package com.hfkj.service;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.sysenum.MerPlatformNoStatusEnum;
import com.hfkj.sysenum.PlatformTypeEnum;
import java.util.List;
@ -26,6 +27,15 @@ public interface BsMerPlatformNoService {
*/
BsMerPlatformNo getPlatformNo(Long merId, PlatformTypeEnum type);
/**
* 当前商户平台
* @param merId
* @return
*/
BsMerPlatformNo getCurrentPlatform(Long merId);
BsMerPlatformNo getPlatformNo(Long merId, PlatformTypeEnum type, MerPlatformNoStatusEnum status);
BsMerPlatformNo getPlatformNoByCupNo(String merCupNo);
/**
@ -34,4 +44,11 @@ public interface BsMerPlatformNoService {
* @return
*/
List<BsMerPlatformNo> getMerPlatformNoList(Map<String, Object> param);
/**
* 切换平台
* @param merId
* @param type
*/
void switchPlatform(Long merId, PlatformTypeEnum type);
}

@ -3,6 +3,7 @@ package com.hfkj.service.impl;
import com.hfkj.dao.BsMerContractRecordMsgMapper;
import com.hfkj.entity.BsMerContractRecordMsg;
import com.hfkj.service.BsMerContractRecordMsgService;
import com.hfkj.sysenum.PlatformTypeEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -22,7 +23,7 @@ public class BsMerContractRecordMsgServiceImpl implements BsMerContractRecordMsg
}
@Override
public Map<String, Object> getMerContractRecordMsg(Long merId) {
return merContractRecordMsgMapper.selectMerContractRecordMsg(merId);
public Map<String, Object> getMerContractRecordMsg(Long merId, PlatformTypeEnum platformType) {
return merContractRecordMsgMapper.selectMerContractRecordMsg(merId, platformType!=null?platformType.getNumber():null);
}
}

@ -43,6 +43,17 @@ public class BsMerContractRecordServiceImpl implements BsMerContractRecordServic
return null;
}
@Override
public BsMerContractRecord getRecordByContractId(String contractId) {
BsMerContractRecordExample example = new BsMerContractRecordExample();
example.createCriteria().andContractIdEqualTo(contractId);
List<BsMerContractRecord> list = merContractRecordMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
}
return null;
}
@Override
public List<BsMerContractRecord> getContractRecordList(Map<String, Object> param) {
BsMerContractRecordExample example = new BsMerContractRecordExample();

@ -16,6 +16,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Service("merContractService")
public class BsMerContractServiceImpl implements BsMerContractService {
@ -39,7 +41,7 @@ public class BsMerContractServiceImpl implements BsMerContractService {
private SaasMerService saasMerService;
@Override
public void addMerContract(Long merId) throws Exception {
public void addMerContract(Long merId, PlatformTypeEnum platformType) throws Exception {
BsMer mer = merService.getMer(merId);
if (mer == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到商户");
@ -48,18 +50,29 @@ public class BsMerContractServiceImpl implements BsMerContractService {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户资料未完善");
}
// 当前的进件平台
BsPlatform platform = platformService.getCurrentPlatform();
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
// laKaLaMerService.addMer(merId);
saasMerService.addMer(merId);
if (platformType == null) {
// 当前的进件平台
List<BsPlatform> platformList = platformService.getPlatformList();
for (BsPlatform platform : platformList) {
if (platform.getPlatformType().equals(PlatformTypeEnum.type1.getNumber())) {
} else if (platform.getPlatformType().equals(PlatformTypeEnum.type4.getNumber())) {
weiXinMerService.addMer(merId);
new Thread(() -> saasMerService.addMer(merId)).start();
} else if (platform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
tianQueMerService.addMer(merId);
} else if (platform.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
new Thread(() -> tianQueMerService.addMer(merId)).start();
}
}
} else {
// 进固定的平台
if (PlatformTypeEnum.type1.getNumber().equals(platformType.getNumber())) {
new Thread(() -> saasMerService.addMer(merId)).start();
} else if (PlatformTypeEnum.type5.getNumber().equals(platformType.getNumber())) {
new Thread(() -> tianQueMerService.addMer(merId)).start();
}
}
}
@Override

@ -4,12 +4,14 @@ import com.hfkj.dao.BsMerPlatformNoMapper;
import com.hfkj.entity.BsMerPlatformNo;
import com.hfkj.entity.BsMerPlatformNoExample;
import com.hfkj.service.BsMerPlatformNoService;
import com.hfkj.sysenum.MerPlatformNoStatusEnum;
import com.hfkj.sysenum.PlatformTypeEnum;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -22,7 +24,6 @@ public class BsMerPlatformNoServiceImpl implements BsMerPlatformNoService {
@Override
public void editMerPlatformNo(BsMerPlatformNo merPlatformNo) {
if (merPlatformNo.getId() == null) {
merPlatformNo.setStatus(1);
merPlatformNo.setCreateTime(new Date());
merPlatformNo.setUpdateTime(new Date());
merPlatformNoMapper.insert(merPlatformNo);
@ -43,6 +44,37 @@ public class BsMerPlatformNoServiceImpl implements BsMerPlatformNoService {
return null;
}
@Override
public BsMerPlatformNo getCurrentPlatform(Long merId) {
BsMerPlatformNoExample example = new BsMerPlatformNoExample();
example.createCriteria()
.andMerIdEqualTo(merId)
.andStatusNotEqualTo(MerPlatformNoStatusEnum.status0.getNumber())
.andCurrentPlatformEqualTo(true);
List<BsMerPlatformNo> list = merPlatformNoMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
}
return null;
}
@Override
public BsMerPlatformNo getPlatformNo(Long merId, PlatformTypeEnum type, MerPlatformNoStatusEnum status) {
BsMerPlatformNoExample example = new BsMerPlatformNoExample();
BsMerPlatformNoExample.Criteria criteria = example.createCriteria()
.andMerIdEqualTo(merId)
.andPlatformTypeEqualTo(type.getNumber())
.andStatusNotEqualTo(MerPlatformNoStatusEnum.status0.getNumber());
if (status != null) {
criteria.andStatusEqualTo(status.getNumber());
}
List<BsMerPlatformNo> list = merPlatformNoMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
}
return null;
}
@Override
public BsMerPlatformNo getPlatformNoByCupNo(String merCupNo) {
BsMerPlatformNoExample example = new BsMerPlatformNoExample();
@ -78,4 +110,19 @@ public class BsMerPlatformNoServiceImpl implements BsMerPlatformNoService {
example.setOrderByClause("create_time desc");
return merPlatformNoMapper.selectByExample(example);
}
@Override
public void switchPlatform(Long merId, PlatformTypeEnum type) {
Map<String,Object> param = new HashMap<>();
param.put("merId", merId);
List<BsMerPlatformNo> platformNoList = getMerPlatformNoList(param);
for (BsMerPlatformNo platform : platformNoList) {
if (platform.getPlatformType().equals(type.getNumber())) {
platform.setCurrentPlatform(true);
} else {
platform.setCurrentPlatform(false);
}
editMerPlatformNo(platform);
}
}
}

@ -422,7 +422,11 @@ public class BsMerServiceImpl implements BsMerService {
/**** 场所收银台照片 ****/
// 进件
merContractService.addMerContract(mer.getId());
PlatformTypeEnum platformType = null;
if (storeModel.getMerPlatformType() != null) {
platformType = PlatformTypeEnum.getDataByNumber(storeModel.getMerPlatformType());
}
merContractService.addMerContract(mer.getId(), platformType);
}
@Override
@ -519,12 +523,6 @@ public class BsMerServiceImpl implements BsMerService {
basisModel.setStoreModel(storeService.getStoreDetail(store.get(0).getId()));
}
// 查询错误消息
if (basisModel.getMerStatus().equals(MerStatusEnum.status4.getNumber())) {
Map<String, Object> recordMsg = merContractRecordMsgService.getMerContractRecordMsg(bsMer.getId());
recordMsg.put("response_msg", recordMsg.get("response_msg"));
basisModel.setMerContractFailMsg(recordMsg);
}
return basisModel;
}

@ -2,6 +2,7 @@ package com.hfkj.service.impl;
import com.hfkj.channel.ccb.CCBTradeService;
import com.hfkj.channel.hsg.HsgIntegralService;
import com.hfkj.channel.tianque.service.TianQueTradeService;
import com.hfkj.channel.weixin.WeiXinPayService;
import com.hfkj.common.exception.BizException;
import com.hfkj.common.exception.ErrorCode;
@ -51,6 +52,9 @@ public class BsTradeOrderRefundServiceImpl implements BsTradeOrderRefundService
@Resource
private WeiXinPayService weiXinPayService;
@Resource
private TianQueTradeService tianQueTradeService;
@Override
public void editOrderRefund(BsTradeOrderRefund tradeOrderRefund) {
if (tradeOrderRefund.getId() == null) {
@ -93,6 +97,10 @@ public class BsTradeOrderRefundServiceImpl implements BsTradeOrderRefundService
} else if (tradeOrderRefund.getPlatformType().equals(PlatformTypeEnum.type4.getNumber())) {
refund = weiXinPayService.refund(tradeOrderRefund.getRefundNo(), tradeOrderRefund.getRefundAmount());
refundStatus = true;
} else if (tradeOrderRefund.getPlatformType().equals(PlatformTypeEnum.type5.getNumber())) {
refund = tianQueTradeService.refund(tradeOrderRefund.getRefundNo(), tradeOrderRefund.getRefundAmount());
refundStatus = true;
}
if (tradeOrder != null) {
@ -175,6 +183,10 @@ public class BsTradeOrderRefundServiceImpl implements BsTradeOrderRefundService
criteria.andSettleAmountIsNull();
}
if (MapUtils.getBoolean(param, "shdFeeAmtIsNull") != null) {
criteria.andShdFeeAmtIsNull();
}
example.setOrderByClause("create_time desc");
return tradeOrderRefundMapper.selectByExample(example);
}

@ -250,6 +250,16 @@ public class BsTradeOrderServiceImpl implements BsTradeOrderService {
?new BigDecimal(MapUtils.getString(other, "acc_mdiscount_amount"))
:new BigDecimal("0"));
tradeOrder.setSettleAmount(
StringUtils.isNotBlank(MapUtils.getString(other, "settleAmount"))
?new BigDecimal(MapUtils.getString(other, "settleAmount"))
:null);
tradeOrder.setSettleDate(
MapUtils.getLong(other, "settleDate")!=null
?new Date(MapUtils.getLong(other, "settleDate"))
:null);
editOrder(tradeOrder);
if (tradeOrder.getCreateType() != null && !tradeOrder.getCreateType().equals(TradeOrderCreateTypeEnum.type3.getCode())) {
@ -415,6 +425,10 @@ public class BsTradeOrderServiceImpl implements BsTradeOrderService {
criteria.andSettleAmountIsNull();
}
if (StringUtils.isNotBlank(MapUtils.getString(param, "shdFeeAmtIsNull"))) {
criteria.andShdFeeAmtIsNull();
}
if (StringUtils.isNotBlank(MapUtils.getString(param, "specialField"))) {
criteria.andSpecialFieldLike("%"+MapUtils.getString(param, "specialField")+"%");
}

@ -0,0 +1,51 @@
package com.hfkj.sysenum;
import java.util.Objects;
/**
* 结算类型
* @author hurui
*/
public enum MerOnlineType {
type1(1, "APP"),
type2(2, "网站"),
type3(3, "公众号/小程序/服务窗"),
;
private Integer number;
private String name;
MerOnlineType(int number, String name) {
this.number = number;
this.name = name;
}
public static MerOnlineType getDataByNumber(Integer number) {
for (MerOnlineType ele : values()) {
if (Objects.equals(number,ele.getNumber())) {
return ele;
}
}
return null;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

@ -0,0 +1,49 @@
package com.hfkj.sysenum;
import java.util.Objects;
/**
* 结算类型
* @author hurui
*/
public enum MerOperateType {
type1(1, "线下"),
type2(2, "线上"),
;
private Integer number;
private String name;
MerOperateType(int number, String name) {
this.number = number;
this.name = name;
}
public static MerOperateType getDataByNumber(Integer number) {
for (MerOperateType ele : values()) {
if (Objects.equals(number,ele.getNumber())) {
return ele;
}
}
return null;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

@ -21,37 +21,39 @@ lkl_mer_contract_ret_url=https://gratia-pay.dctpay.com/brest/laKaLaNotify/merCon
lkl_micro_pay_ret_url=https://gratia-pay.dctpay.com/crest/laKaLaNotify/microPay
lkl_open_api_pay_notify_url=https://gratia-pay.dctpay.com/openApi/v1/payNotify/lakala
lkl_saas_client_id=testsit
lkl_saas_client_secret=EguwEckByf2I6u6z
lkl_saas_activity_id=37
lkl_saas_user_no=20000101
lkl_saas_request_url=https://test.wsmsd.cn/sit/
lkl_saas_request_mer_registration_token_url=https://test.wsmsd.cn/sit/htkauth/oauth/token
lkl_saas_request_mer_registration_url=https://test.wsmsd.cn/sit/htkregistration/merchant/
lkl_saas_request_mer_update_url=https://test.wsmsd.cn/sit/htk-api/
lkl_saas_request_mer_registration_common_url=https://test.wsmsd.cn/sit/htkregistration/
lkl_saas_request_mer_url=https://test.wsmsd.cn/sit/htkmerchants/
lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp5aV3ZiXG2R8Yd8Nxocv+cF7VAUHBc0TF4MNne7mI8wM2yEP2QgI+rK1qDf6G7ZFPhutpIHKQchpolbSuC0vgaHpSjO9OUs1fpnK/JjZq9o8DatUsA0n4Fccec9NBbV5dy5yrwro7xmDpsevp1/IeiIssi1+iD+nBWqqVFx7GVQIDAQAB
lkl_saas_private_key="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKnlpXdmJcbZHxh3w3Ghy/5wXtUBQcFzRMXgw2d7uYjzAzbIQ/ZCAj6srWoN/obtkU+G62kgcpByGmiVtK4LS+BoelKM705SzV+mcr8mNmr2jwNq1SwDSfgVxx5z00FtXl3LnKvCujvGYOmx6+nX8h6IiyyLX6IP6cFaqpUXHsZVAgMBAAECgYA4NpeM7etJ48T6H4Y3LsWEJkH6UDQlgbIblsaQkstMmLtTgOebrzN28UNfd8njcu9FVOrHGclOKbK7L+1cOLiduWsZKc/c/gAy9wAR4EhoLvlerH9EEPiPWFxdEDbMxPqlkpqLOo+PxHrhTn4vU4CaPdJtL2ujKn7nmsUdUDWo8QJBANS1TlM6nhPt2XlzN5kGfsJ4kBYNjuLXNA2YdNuC2ttYvEXHJ9T70FN/GnRBBIZu47uHH3Ie5nfep+qMk6a8RP8CQQDMecIyI0z1kVt+tOfWKw2ZFLsi74708qTaeR4W1ABtkngj1+bxoWWXr3KqhjqJkWxnhioSfXqu7CScNzjdM1CrAkAQd+ESjI1EmbumrYb2cAxMXi05p98SLPs4uj8B58WuCda5yEuLL9vXOxX/PjFtfxRepn2GxmGtki2J+UxNMnJdAkAFoORjlO0tZU7rcfdfwdeh+xwbnhSFUZiQGv1lC3jnizybX/oPdK3jOwUhBIjf+IzPXLYTxDh4UC/BzRNXo235AkEAhgYBk6H7RU2iIuvwz1c6CtE1gJ8DvEp1F0KOMWMFB0KCpDXUToix0dlMz962FozYENi4X4zYQo6nFwlXeS3Pfw==
# lkl_saas_client_id=huifu
# lkl_saas_client_secret=f65VVjqJfLtc177F
# lkl_saas_activity_id=12
# lkl_saas_user_no=22206482
# lkl_saas_request_url=https://tkapi.lakala.com/
# lkl_saas_request_mer_registration_token_url=https://tkapi.lakala.com/auth/oauth/token
# lkl_saas_request_mer_registration_url=https://htkactvi.lakala.com/registration/merchant/
# lkl_saas_request_mer_update_url=https://htkapi.lakala.com/api/
# lkl_saas_request_mer_registration_common_url=https://htkactvi.lakala.com/registration/
# lkl_saas_request_mer_url=https://tkapi.lakala.com/htkmerchants/
# lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAUkzRA+4GOS5OzYqxD/UJwM6p9to1dPvetL/7RbMa93o46qToPlPtaW61EvblOldHcBEHo7AGXXKmIYr7t2Up1PZC0g7UMpno/b5WkT6ieJ601Xreuj8hhyf2/xoej5vpi4/+lAr9YF+5GcyaVf4gfzTNJrmKj9PfvX5B3rUH2QIDAQAB
# lkl_saas_private_key=MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMBSTNED7gY5Lk7NirEP9QnAzqn22jV0+960v/tFsxr3ejjqpOg+U+1pbrUS9uU6V0dwEQejsAZdcqYhivu3ZSnU9kLSDtQymej9vlaRPqJ4nrTVet66PyGHJ/b/Gh6Pm+mLj/6UCv1gX7kZzJpV/iB/NM0muYqP09+9fkHetQfZAgMBAAECgYB42D3kaC+8QVnTsluffoNeKYSyT6Y1SNiqy7CGVvl/zFlEQkx0khVybHlf1hbFWq9U+Bn7TuNgXH+Z3CHUoRwy4Ap/kMx637iRatoC8F/kcPaiB7JFQfdrxhgK858dSyHCQ2OXXQDJgJdth+oF9FylVsrDu5Sw3ha4OuzrmufuwQJBAPnPPSeFr1wu7kH6I+A5E49fMbAm7EU+3TYVzxNH1lr3X/LWuK9pi/LVPrSR4eNgAypyQWREIqdpBIiJ9bOnwa0CQQDFFl0zTQTVTWf5r/hwgCUMo4gHr2y/q7XMNe6n5fh4SQuQ+o4gW+BGHzDrT97G5hFGPL+w5niGuEBHWSo5/9xdAkEAnrxdM7vzDjSUGUCFg3lBQJ1QyYoyIF4t2qxJBQtk3jDKu1hNysjasNdoHP2F+CGOYW5wtvHEw3Qr+UcQ5bP3kQJABPAcga6KUnXQBxd7mAX956UpQVgJ13uL4IPxaM+APDNIUOeWLAVhRyB870hfAoi9Ig9fliUQG//9zEvVnQJmGQJBAOb8Z0mGMEbEeAyEKjqoNiQkkIcoBdmPKNFUoUJ6ohcBNOoMfklvNsf2+BPfuhs26tvhYDBRgCAfOVhqTQcGj6I=
# lkl_saas_client_id=testsit
# lkl_saas_client_secret=EguwEckByf2I6u6z
# lkl_saas_activity_id=37
# lkl_saas_user_no=20000101
# lkl_saas_request_url=https://test.wsmsd.cn/sit/
# lkl_saas_request_mer_registration_token_url=https://test.wsmsd.cn/sit/htkauth/oauth/token
# lkl_saas_request_mer_registration_url=https://test.wsmsd.cn/sit/htkregistration/merchant/
# lkl_saas_request_mer_update_url=https://test.wsmsd.cn/sit/htk-api/
# lkl_saas_request_mer_registration_common_url=https://test.wsmsd.cn/sit/htkregistration/
# lkl_saas_request_mer_url=https://test.wsmsd.cn/sit/htkmerchants/
# lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp5aV3ZiXG2R8Yd8Nxocv+cF7VAUHBc0TF4MNne7mI8wM2yEP2QgI+rK1qDf6G7ZFPhutpIHKQchpolbSuC0vgaHpSjO9OUs1fpnK/JjZq9o8DatUsA0n4Fccec9NBbV5dy5yrwro7xmDpsevp1/IeiIssi1+iD+nBWqqVFx7GVQIDAQAB
# lkl_saas_private_key="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKnlpXdmJcbZHxh3w3Ghy/5wXtUBQcFzRMXgw2d7uYjzAzbIQ/ZCAj6srWoN/obtkU+G62kgcpByGmiVtK4LS+BoelKM705SzV+mcr8mNmr2jwNq1SwDSfgVxx5z00FtXl3LnKvCujvGYOmx6+nX8h6IiyyLX6IP6cFaqpUXHsZVAgMBAAECgYA4NpeM7etJ48T6H4Y3LsWEJkH6UDQlgbIblsaQkstMmLtTgOebrzN28UNfd8njcu9FVOrHGclOKbK7L+1cOLiduWsZKc/c/gAy9wAR4EhoLvlerH9EEPiPWFxdEDbMxPqlkpqLOo+PxHrhTn4vU4CaPdJtL2ujKn7nmsUdUDWo8QJBANS1TlM6nhPt2XlzN5kGfsJ4kBYNjuLXNA2YdNuC2ttYvEXHJ9T70FN/GnRBBIZu47uHH3Ie5nfep+qMk6a8RP8CQQDMecIyI0z1kVt+tOfWKw2ZFLsi74708qTaeR4W1ABtkngj1+bxoWWXr3KqhjqJkWxnhioSfXqu7CScNzjdM1CrAkAQd+ESjI1EmbumrYb2cAxMXi05p98SLPs4uj8B58WuCda5yEuLL9vXOxX/PjFtfxRepn2GxmGtki2J+UxNMnJdAkAFoORjlO0tZU7rcfdfwdeh+xwbnhSFUZiQGv1lC3jnizybX/oPdK3jOwUhBIjf+IzPXLYTxDh4UC/BzRNXo235AkEAhgYBk6H7RU2iIuvwz1c6CtE1gJ8DvEp1F0KOMWMFB0KCpDXUToix0dlMz962FozYENi4X4zYQo6nFwlXeS3Pfw==
lkl_saas_client_id=huifu
lkl_saas_client_secret=f65VVjqJfLtc177F
lkl_saas_activity_id=13
lkl_saas_user_no=22206482
lkl_saas_request_url=https://tkapi.lakala.com/
lkl_saas_request_mer_registration_token_url=https://tkapi.lakala.com/auth/oauth/token
lkl_saas_request_mer_registration_url=https://htkactvi.lakala.com/registration/merchant/
lkl_saas_request_mer_update_url=https://htkapi.lakala.com/api/
lkl_saas_request_mer_registration_common_url=https://htkactvi.lakala.com/registration/
lkl_saas_request_mer_url=https://tkapi.lakala.com/htkmerchants/
lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAUkzRA+4GOS5OzYqxD/UJwM6p9to1dPvetL/7RbMa93o46qToPlPtaW61EvblOldHcBEHo7AGXXKmIYr7t2Up1PZC0g7UMpno/b5WkT6ieJ601Xreuj8hhyf2/xoej5vpi4/+lAr9YF+5GcyaVf4gfzTNJrmKj9PfvX5B3rUH2QIDAQAB
lkl_saas_private_key=MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMBSTNED7gY5Lk7NirEP9QnAzqn22jV0+960v/tFsxr3ejjqpOg+U+1pbrUS9uU6V0dwEQejsAZdcqYhivu3ZSnU9kLSDtQymej9vlaRPqJ4nrTVet66PyGHJ/b/Gh6Pm+mLj/6UCv1gX7kZzJpV/iB/NM0muYqP09+9fkHetQfZAgMBAAECgYB42D3kaC+8QVnTsluffoNeKYSyT6Y1SNiqy7CGVvl/zFlEQkx0khVybHlf1hbFWq9U+Bn7TuNgXH+Z3CHUoRwy4Ap/kMx637iRatoC8F/kcPaiB7JFQfdrxhgK858dSyHCQ2OXXQDJgJdth+oF9FylVsrDu5Sw3ha4OuzrmufuwQJBAPnPPSeFr1wu7kH6I+A5E49fMbAm7EU+3TYVzxNH1lr3X/LWuK9pi/LVPrSR4eNgAypyQWREIqdpBIiJ9bOnwa0CQQDFFl0zTQTVTWf5r/hwgCUMo4gHr2y/q7XMNe6n5fh4SQuQ+o4gW+BGHzDrT97G5hFGPL+w5niGuEBHWSo5/9xdAkEAnrxdM7vzDjSUGUCFg3lBQJ1QyYoyIF4t2qxJBQtk3jDKu1hNysjasNdoHP2F+CGOYW5wtvHEw3Qr+UcQ5bP3kQJABPAcga6KUnXQBxd7mAX956UpQVgJ13uL4IPxaM+APDNIUOeWLAVhRyB870hfAoi9Ig9fliUQG//9zEvVnQJmGQJBAOb8Z0mGMEbEeAyEKjqoNiQkkIcoBdmPKNFUoUJ6ohcBNOoMfklvNsf2+BPfuhs26tvhYDBRgCAfOVhqTQcGj6I=
# TianQue config
tianque_request_url=https://openapi-test.tianquetech.com
tianque_org_id=00205462
tianque_private_key=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD7amtTqsq2cKBv5YpAL49dEXyx76LB2c6G9tGPfOVBk5skOxmII1bFIvUyrQsmLtM+sRg0tzi6EXBu40YW7scTKqe6UA1XHSVYHvooDL1P6E3luJu0eNh7x2yiS8vqq4v8xceRVjXBf1aBe/bPuEqG3W1v76Gw8PqNn+QUeLQrv6QCYBJC5I3Vg2AHrN4udFKnzvIZjV92gx/D9FWTpwU338I1Mw5twRbCCu8f91kmRsOa9atWbN3kM/fZI+uzaEFf9soolKNfhlP7Qhbm0/e6sciv6UDHgpSuXNl/uCYDxZ9YsSyUTJR0Ep+M7l8b4AITFjyE26jqSkUYHcGBRy5ZAgMBAAECggEAfCMMgVA4LSKpJPbab1zMVbC3uAfRfhO0NNGToVySufFOzfHcZmrEgiwDk5T7h0vhg/ffMtAw0zafJDFVvycA5obOMGEsZRIACWWqMLIxm03hgIbJYq+0fFF4Yx43vlQbl6B0LF+7xSHBrcdukxu0uKiGS5mvZXVm0RzcefsrQtmvcGFMcAAeC34aBMOnA/rfSGU82aKoy5A4WcAUSU8r6fOwQMV3aUsyI1z3QbG0RJeE1qPNAs/cVjSVlepLo0BgmePl4DDmBP21AOxnoE70XbVJdFEYGjiF/A1bZID5DEo0rqnvWCUQdWaBUT1QwDFoMITv7CgsaQyG1rlKewaJ/QKBgQD/y7qCsQjpKLHR8Y1tTIDOPedaJTaysWVadTxaVAtjlWnik1V5q+VHtOYN/14p7X587CtTD5MiN6PHRjAWTPHIr8Y87Z2ipqljscDkZb5sOsN3RzriZERLg8bcB6GRlcHkeNUNGLpBPTObIvpWTLvL+mnt4cTF/1ck2li/fX/fywKBgQD7ncutu6QK7FAlkGjX3cBSTT76sBOJYZe7LmvsJJBM+7nmly3/WO1OF/dAFrWqTXjP6PTtCPQ1+z2/kNtgJLJMJVPYeTZauq9OfT+4Ls1318vEr9KXSm/E3rTZLmpxSzgKEzDoYVeyrPh0QdaWvaP5k3BUGl3Scd5cHJKsxshd6wKBgAq+wyH0T9yDghzAmeFKgmqnfQ1zXL3a59gJ7rQYrbXMM/t5lvCagPInLjbOUGVQfay/uv4tPFAGqFGZqDF3n/x/LcOnc6S+fYUblW/CumIPgeCD1HxoG9pUOclKZMYZ1WBElyaKsGBHMuDEcmGnrYffCA4fGsX6eO2qYmoA2ptLAoGBALpQTdGHcCDmezJVjEzL1u0aZdgbKVxA96mS5jclm/RlMXKd32GE57M768l5B2vjkeHiDfq29p5CO6buDINUqPHZcgyJNMZaFhV4iQZJIbvr/ubVioqcg8azYhavWAIsQIK1UzG/YsDbc94iIlPceN8FXdfo7jA2QQDT54goaZWhAoGAQPk/qXBTzJzE6yeDVSC6edYzrVMRTqqNR70HgSY+7GqDsNWb+9otKUkyhCSDOMT8GOFQzNqPRgPBC9LD/Jf8owPExjdl3x/lmmnnc+WeaYyPYpbRuaz1eMmsCLXBMcPmLgj+xOp7J/xtLFGXTfIk7ozRDGJ2BFUJvBOUFLSSNeY=
tianque_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOmsrFtFPTnEzfpJ/hDl5RODBxw4i9Ex3NmmG/N7A1+by032zZZgLLpdNh8y5otjFY0E37Nyr4FGKFRSSuDiTk8vfx3pv6ImS1Rxjjg4qdVHIfqhCeB0Z2ZPuBD3Gbj8hHFEtXZq8+msAFu/5ZQjiVhgs5WWBjh54LYWSum+d9+wIDAQAB
tianque_micro_pay_ret_url=https://gratia-pay.dctpay.com/crest/tianqueNotify/microPay
tianque_open_api_pay_notify_url=https://gratia-pay.dctpay.com/openApi/v1/payNotify/tianque
wechat_pay_notify_url=https://gratia-pay.dctpay.com/crest/weiXinNotify/jsapiPay

@ -31,6 +31,14 @@ lkl_saas_request_mer_url=https://tkapi.lakala.com/htkmerchants/
lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAUkzRA+4GOS5OzYqxD/UJwM6p9to1dPvetL/7RbMa93o46qToPlPtaW61EvblOldHcBEHo7AGXXKmIYr7t2Up1PZC0g7UMpno/b5WkT6ieJ601Xreuj8hhyf2/xoej5vpi4/+lAr9YF+5GcyaVf4gfzTNJrmKj9PfvX5B3rUH2QIDAQAB
lkl_saas_private_key=MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMBSTNED7gY5Lk7NirEP9QnAzqn22jV0+960v/tFsxr3ejjqpOg+U+1pbrUS9uU6V0dwEQejsAZdcqYhivu3ZSnU9kLSDtQymej9vlaRPqJ4nrTVet66PyGHJ/b/Gh6Pm+mLj/6UCv1gX7kZzJpV/iB/NM0muYqP09+9fkHetQfZAgMBAAECgYB42D3kaC+8QVnTsluffoNeKYSyT6Y1SNiqy7CGVvl/zFlEQkx0khVybHlf1hbFWq9U+Bn7TuNgXH+Z3CHUoRwy4Ap/kMx637iRatoC8F/kcPaiB7JFQfdrxhgK858dSyHCQ2OXXQDJgJdth+oF9FylVsrDu5Sw3ha4OuzrmufuwQJBAPnPPSeFr1wu7kH6I+A5E49fMbAm7EU+3TYVzxNH1lr3X/LWuK9pi/LVPrSR4eNgAypyQWREIqdpBIiJ9bOnwa0CQQDFFl0zTQTVTWf5r/hwgCUMo4gHr2y/q7XMNe6n5fh4SQuQ+o4gW+BGHzDrT97G5hFGPL+w5niGuEBHWSo5/9xdAkEAnrxdM7vzDjSUGUCFg3lBQJ1QyYoyIF4t2qxJBQtk3jDKu1hNysjasNdoHP2F+CGOYW5wtvHEw3Qr+UcQ5bP3kQJABPAcga6KUnXQBxd7mAX956UpQVgJ13uL4IPxaM+APDNIUOeWLAVhRyB870hfAoi9Ig9fliUQG//9zEvVnQJmGQJBAOb8Z0mGMEbEeAyEKjqoNiQkkIcoBdmPKNFUoUJ6ohcBNOoMfklvNsf2+BPfuhs26tvhYDBRgCAfOVhqTQcGj6I=
# TianQue config
tianque_request_url=https://openapi.tianquetech.com
tianque_org_id=65749201
tianque_private_key=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlAa7Xw1w16H6xmZgxwEN+UPm72s7PisVkbWFbDexeqQkpSvrouHVswte1qlQyOivhZU21KbuklCOMAuJ4/kcZJ4KlvSckzpAnOrFmA7M3x76zK+GWmOfgHvT208XAGx9mjh5mXHmOUZcyhXmgMnHMQdwTUi0vdk2ni/yHQqBUK1fH8jGI5eWwuzP6oSu7/gqaF/vZyF7TP0dvjgDPuDI6iMRVb4At10yxcZIvFTKuKsMksf2YKgtlvhidvHicnr93RksclSaVbw9VjuXrdYd1hlLJson3xTUr+l96aGMfefiK94f0Jrx81zWqD7BaKtgdE+x0VXPuaM0Tv5HBdCHxAgMBAAECggEABeX9MuF9RoYufTSPjvh8xIwhYo1INmBEpUmL8GRzahzAd6fOvp/BpoN+OtegQ4rsBmotjjT8+Eg4giqw2pzyB9vUqaAtme0YGWqRlycRPqaOat7+eHqHvmYNuS3LMh+At4uBjPFk0B2Z31tAvreN5szrdjPvpgFODrq0TmeQ6ZoHtSTYM90zkhH7NyDKBbul4d0XkjDuE1Y/vN1FkTXxJI0FV76HxCgckPj3Jd3cut1S9Prhwvx9sMWjWiy6rd6m9AR6d+31GJVzYeXz6Y3/cG6MFrDO/bVc8oK5ltjNFPEkz28b04LKmFZhAHBFqEuLC5jFYOqciJVcpkPaGQ3RYQKBgQD8DW+5+N0az5l2p1w5CniFhva3rk92jOZKxHvoPGpwA6qlhGGn96gqdTpjY5gAonaGiJbjwnubProe9JafSnOP2Pj3yfLfhp4CtkoDk1bvBZJUW3CWTOHWPsT8Xae6wZ8qd7hkjRoHqf5Ub+0JyA/h/CfYLZS1Xtf5i5G4Gk/rBwKBgQDol9kC+zIhIc5vgfrDmZwGDwn/H0N7pYpDx23vjesgeKmpnrj9al+ODUW5SOjIYYjjsQ8ot51Zg+65YsQNGPFuTbSu3OHRl4emzmJVrfjVVsehbYPR676R5zEgJOIIjqeU9r9AH60lLuhy/7SIJyfNAgL7wUtxo+djXGzinXK1RwKBgGwaJy0P+2SgXSVyqi8cuowqUm59KD+kNrEijDISl2PrbqkGmgu8QDfVh3FRKcQ76bHRq0WMCA+RW6ojJOa0u9OaL023I5+S0PpAzIW0D7j8HsJnZWZRGxsUWNAUKvgCSw2fw0n86okW86mrR3LGh2lZCI3DHuCbCO5SWfEn99bJAoGAdM81tDKVJWCF/Sgo2Ky/V6eb3J1F1cX4Hzv7sQ/z4nXWtxG4U8RlQsDVoEzGY0PgbIESXN+BzV/dtwqr7Ov26+9oa10Qp6LTBGmnpuHdEr8nOKH4Tqd3KG0UFdGQFr4V2VDmEX0XBpJ9OKvEbZBEg8eb2fVkPykSXqsfH9v0rKcCgYEAmRagAvycwGeD0hGehj6gRYegt4NqcU895Ce7J85u9QrO03Wn7l77ToktCcl9GRI7ZZwJOzCIsUntoGJHc3VbXnio7qixdm4oYo4TvNV3lUI1NKisszrFJCCXemZHeesW3t3RFzYwDGX/MJrBw7q8qsAnio0fc0ubcNVc67LNZ38=
tianque_public_key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjo1+KBcvwDSIo+nMYLeOJ19Ju4ii0xH66ZxFd869EWFWk/EJa3xIA2+4qGf/Ic7m7zi/NHuCnfUtUDmUdP0JfaZiYwn+1Ek7tYAOc1+1GxhzcexSJLyJlR2JLMfEM+rZooW4Ei7q3a8jdTWUNoak/bVPXnLEVLrbIguXABERQ0Ze0X9Fs0y/zkQFg8UjxUN88g2CRfMC6LldHm7UBo+d+WlpOYH7u0OTzoLLiP/04N1cfTgjjtqTBI7qkOGxYs6aBZHG1DJ6WdP+5w+ho91sBTVajsCxAaMoExWQM2ipf/1qGdsWmkZScPflBqg7m0olOD87ymAVP/3Tcbvi34bDfwIDAQAB
tianque_micro_pay_ret_url=https://pay.dctpay.com/crest/tianqueNotify/microPay
tianque_open_api_pay_notify_url=https://pay.dctpay.com/openApi/v1/payNotify/tianque
wechat_pay_notify_url=https://pay.dctpay.com/crest/weiXinNotify/jsapiPay
file_url=/home/project/gratia-pay/file

@ -31,6 +31,14 @@ lkl_saas_request_mer_url=https://tkapi.lakala.com/htkmerchants/
lkl_saas_public_key=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAUkzRA+4GOS5OzYqxD/UJwM6p9to1dPvetL/7RbMa93o46qToPlPtaW61EvblOldHcBEHo7AGXXKmIYr7t2Up1PZC0g7UMpno/b5WkT6ieJ601Xreuj8hhyf2/xoej5vpi4/+lAr9YF+5GcyaVf4gfzTNJrmKj9PfvX5B3rUH2QIDAQAB
lkl_saas_private_key=MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMBSTNED7gY5Lk7NirEP9QnAzqn22jV0+960v/tFsxr3ejjqpOg+U+1pbrUS9uU6V0dwEQejsAZdcqYhivu3ZSnU9kLSDtQymej9vlaRPqJ4nrTVet66PyGHJ/b/Gh6Pm+mLj/6UCv1gX7kZzJpV/iB/NM0muYqP09+9fkHetQfZAgMBAAECgYB42D3kaC+8QVnTsluffoNeKYSyT6Y1SNiqy7CGVvl/zFlEQkx0khVybHlf1hbFWq9U+Bn7TuNgXH+Z3CHUoRwy4Ap/kMx637iRatoC8F/kcPaiB7JFQfdrxhgK858dSyHCQ2OXXQDJgJdth+oF9FylVsrDu5Sw3ha4OuzrmufuwQJBAPnPPSeFr1wu7kH6I+A5E49fMbAm7EU+3TYVzxNH1lr3X/LWuK9pi/LVPrSR4eNgAypyQWREIqdpBIiJ9bOnwa0CQQDFFl0zTQTVTWf5r/hwgCUMo4gHr2y/q7XMNe6n5fh4SQuQ+o4gW+BGHzDrT97G5hFGPL+w5niGuEBHWSo5/9xdAkEAnrxdM7vzDjSUGUCFg3lBQJ1QyYoyIF4t2qxJBQtk3jDKu1hNysjasNdoHP2F+CGOYW5wtvHEw3Qr+UcQ5bP3kQJABPAcga6KUnXQBxd7mAX956UpQVgJ13uL4IPxaM+APDNIUOeWLAVhRyB870hfAoi9Ig9fliUQG//9zEvVnQJmGQJBAOb8Z0mGMEbEeAyEKjqoNiQkkIcoBdmPKNFUoUJ6ohcBNOoMfklvNsf2+BPfuhs26tvhYDBRgCAfOVhqTQcGj6I=
# TianQue config
tianque_request_url=https://openapi.tianquetech.com
tianque_org_id=65749201
tianque_private_key=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDlAa7Xw1w16H6xmZgxwEN+UPm72s7PisVkbWFbDexeqQkpSvrouHVswte1qlQyOivhZU21KbuklCOMAuJ4/kcZJ4KlvSckzpAnOrFmA7M3x76zK+GWmOfgHvT208XAGx9mjh5mXHmOUZcyhXmgMnHMQdwTUi0vdk2ni/yHQqBUK1fH8jGI5eWwuzP6oSu7/gqaF/vZyF7TP0dvjgDPuDI6iMRVb4At10yxcZIvFTKuKsMksf2YKgtlvhidvHicnr93RksclSaVbw9VjuXrdYd1hlLJson3xTUr+l96aGMfefiK94f0Jrx81zWqD7BaKtgdE+x0VXPuaM0Tv5HBdCHxAgMBAAECggEABeX9MuF9RoYufTSPjvh8xIwhYo1INmBEpUmL8GRzahzAd6fOvp/BpoN+OtegQ4rsBmotjjT8+Eg4giqw2pzyB9vUqaAtme0YGWqRlycRPqaOat7+eHqHvmYNuS3LMh+At4uBjPFk0B2Z31tAvreN5szrdjPvpgFODrq0TmeQ6ZoHtSTYM90zkhH7NyDKBbul4d0XkjDuE1Y/vN1FkTXxJI0FV76HxCgckPj3Jd3cut1S9Prhwvx9sMWjWiy6rd6m9AR6d+31GJVzYeXz6Y3/cG6MFrDO/bVc8oK5ltjNFPEkz28b04LKmFZhAHBFqEuLC5jFYOqciJVcpkPaGQ3RYQKBgQD8DW+5+N0az5l2p1w5CniFhva3rk92jOZKxHvoPGpwA6qlhGGn96gqdTpjY5gAonaGiJbjwnubProe9JafSnOP2Pj3yfLfhp4CtkoDk1bvBZJUW3CWTOHWPsT8Xae6wZ8qd7hkjRoHqf5Ub+0JyA/h/CfYLZS1Xtf5i5G4Gk/rBwKBgQDol9kC+zIhIc5vgfrDmZwGDwn/H0N7pYpDx23vjesgeKmpnrj9al+ODUW5SOjIYYjjsQ8ot51Zg+65YsQNGPFuTbSu3OHRl4emzmJVrfjVVsehbYPR676R5zEgJOIIjqeU9r9AH60lLuhy/7SIJyfNAgL7wUtxo+djXGzinXK1RwKBgGwaJy0P+2SgXSVyqi8cuowqUm59KD+kNrEijDISl2PrbqkGmgu8QDfVh3FRKcQ76bHRq0WMCA+RW6ojJOa0u9OaL023I5+S0PpAzIW0D7j8HsJnZWZRGxsUWNAUKvgCSw2fw0n86okW86mrR3LGh2lZCI3DHuCbCO5SWfEn99bJAoGAdM81tDKVJWCF/Sgo2Ky/V6eb3J1F1cX4Hzv7sQ/z4nXWtxG4U8RlQsDVoEzGY0PgbIESXN+BzV/dtwqr7Ov26+9oa10Qp6LTBGmnpuHdEr8nOKH4Tqd3KG0UFdGQFr4V2VDmEX0XBpJ9OKvEbZBEg8eb2fVkPykSXqsfH9v0rKcCgYEAmRagAvycwGeD0hGehj6gRYegt4NqcU895Ce7J85u9QrO03Wn7l77ToktCcl9GRI7ZZwJOzCIsUntoGJHc3VbXnio7qixdm4oYo4TvNV3lUI1NKisszrFJCCXemZHeesW3t3RFzYwDGX/MJrBw7q8qsAnio0fc0ubcNVc67LNZ38=
tianque_public_key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjo1+KBcvwDSIo+nMYLeOJ19Ju4ii0xH66ZxFd869EWFWk/EJa3xIA2+4qGf/Ic7m7zi/NHuCnfUtUDmUdP0JfaZiYwn+1Ek7tYAOc1+1GxhzcexSJLyJlR2JLMfEM+rZooW4Ei7q3a8jdTWUNoak/bVPXnLEVLrbIguXABERQ0Ze0X9Fs0y/zkQFg8UjxUN88g2CRfMC6LldHm7UBo+d+WlpOYH7u0OTzoLLiP/04N1cfTgjjtqTBI7qkOGxYs6aBZHG1DJ6WdP+5w+ho91sBTVajsCxAaMoExWQM2ipf/1qGdsWmkZScPflBqg7m0olOD87ymAVP/3Tcbvi34bDfwIDAQAB
tianque_micro_pay_ret_url=https://pay.dctpay.com/crest/tianqueNotify/microPay
tianque_open_api_pay_notify_url=https://pay.dctpay.com/openApi/v1/payNotify/tianque
wechat_pay_notify_url=https://pay.dctpay.com/crest/weiXinNotify/jsapiPay
file_url=/home/project/gratia-pay/file

Loading…
Cancel
Save