修复 拉卡拉 分账接口bug

This commit is contained in:
Jack 2025-04-27 17:37:05 +08:00
parent 5f796adc02
commit c34aa3365e
6 changed files with 58 additions and 14 deletions

View File

@ -42,7 +42,7 @@ public class LklLedgerMember implements Serializable {
private String split_rule_source; private String split_rule_source;
private String ret_url; private String ret_url;
private String apply_id; private String apply_id;
private String audit_status; private Integer audit_status;
private String audit_status_text; private String audit_status_text;
private String remark; private String remark;
private Long mch_id; private Long mch_id;

View File

@ -68,8 +68,9 @@ public class LakalaController extends BaseControllerImpl {
return lakalaPayService.applyLedgerMerReceiverBind(paramsJSON); return lakalaPayService.applyLedgerMerReceiverBind(paramsJSON);
} }
// https://mall.gpxscs.cn/api/mobile/shop/lakala/ledger/applyLedgerMerReceiverBindNotify
@ApiOperation(value = "分账关系绑定申请异步回调通知", notes = "分账关系绑定申请异步回调通知") @ApiOperation(value = "分账关系绑定申请异步回调通知", notes = "分账关系绑定申请异步回调通知")
@RequestMapping(value = "/ledger/applyBindNotify", method = RequestMethod.POST) @RequestMapping(value = "/ledger/applyLedgerMerReceiverBindNotify", method = RequestMethod.POST)
public JSONObject applyBindNotify(HttpServletRequest request) { public JSONObject applyBindNotify(HttpServletRequest request) {
return lakalaPayService.applyLedgerMerReceiverBindNotify(request); return lakalaPayService.applyLedgerMerReceiverBindNotify(request);
} }

View File

@ -21,6 +21,15 @@ public interface LklLedgerMemberService extends IBaseService<LklLedgerMember> {
*/ */
LklLedgerMember getByMerCupNo(String merCupNo); LklLedgerMember getByMerCupNo(String merCupNo);
/**
* 根据申请单号和审核状态查询记录
*
* @param applyId
* @param auditStatus
* @return
*/
LklLedgerMember getByApplyId(String applyId, Integer auditStatus);
/** /**
* 根据银联商户号新增或修改记录 * 根据银联商户号新增或修改记录
* *

View File

@ -20,6 +20,7 @@ import com.lkl.laop.sdk.request.*;
import com.lkl.laop.sdk.request.model.V3LabsTradeLocationInfo; import com.lkl.laop.sdk.request.model.V3LabsTradeLocationInfo;
import com.lkl.laop.sdk.request.model.V3LabsTradePreorderWechatBus; import com.lkl.laop.sdk.request.model.V3LabsTradePreorderWechatBus;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.feignService.ShopService; import com.suisung.mall.common.feignService.ShopService;
import com.suisung.mall.common.modules.lakala.LklLedgerMember; import com.suisung.mall.common.modules.lakala.LklLedgerMember;
@ -425,6 +426,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Override @Override
public CommonResult applyLedgerMer(JSONObject paramsJSON) { public CommonResult applyLedgerMer(JSONObject paramsJSON) {
log.info("商户分账业务开通申请开始"); log.info("商户分账业务开通申请开始");
// TODO 判断是否已经申请过
// 1. 配置初始化 // 1. 配置初始化
initLKLSDK(); initLKLSDK();
@ -449,11 +452,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String splitEntrustFilePath = fileUploadResp.getStr("attFileId"); String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf; req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
String domain = projectDomain;
if (isProd()) { if (isProd()) {
projectDomain = projectDomain + "/api"; domain += "/api";
} }
// 给拉卡拉通知的回调地址 // 给拉卡拉通知的回调地址
String retUrl = projectDomain + "/mobile/shop/lakala/ledger/applyLedgerMerNotify"; String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerNotify";
req.setRetUrl(retUrl); req.setRetUrl(retUrl);
paramsJSON.set("orderNo", req.getOrderNo()); paramsJSON.set("orderNo", req.getOrderNo());
@ -502,6 +506,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Override @Override
public JSONObject applyLedgerMerNotify(HttpServletRequest request) { public JSONObject applyLedgerMerNotify(HttpServletRequest request) {
log.info("商户分账申请业务异步通知开始"); log.info("商户分账申请业务异步通知开始");
// 验签 // 验签
String authorization = request.getHeader("Authorization"); String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request); String requestBody = LakalaUtil.getBody(request);
@ -520,13 +525,21 @@ public class LakalaApiServiceImpl implements LakalaApiService {
respData.put("retMsg", "响应处理失败!"); respData.put("retMsg", "响应处理失败!");
if (paramsJSON != null) { if (paramsJSON != null) {
// JSONObject reqData = (JSONObject) paramsJSON.get("respData"); String applyId = paramsJSON.getStr("applyId");
// if (ObjectUtil.isEmpty(reqData)) { if (StrUtil.isBlank(applyId)) {
// return respData; log.info("商户分账申请业务回调applyId为空");
// } respData.put("retMsg", "applyId为空");
return respData;
}
if (lklLedgerMemberService.getByApplyId(applyId, CommonConstant.Enable) != null) {
respData.put("retCode", lklSuccessCode);
respData.put("retMsg", "操作成功!");
log.info("商户分账申请业务回调:已处理成功,不需再重新处理");
}
// 更改本地分账记录状态数据 // 更改本地分账记录状态数据
Boolean success = lklLedgerMemberService.updateAuditResult(paramsJSON.getStr("applyId"), Boolean success = lklLedgerMemberService.updateAuditResult(applyId,
paramsJSON.getStr("merInnerNo"), paramsJSON.getStr("merInnerNo"),
paramsJSON.getStr("merCupNo"), paramsJSON.getStr("merCupNo"),
paramsJSON.getStr("entrustFileName"), paramsJSON.getStr("entrustFileName"),
@ -689,11 +702,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String splitEntrustFileBase64 = UploadUtil.URLFileToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码 String splitEntrustFileBase64 = UploadUtil.URLFileToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码
req.setEntrustFileName(fileName); req.setEntrustFileName(fileName);
String domain = projectDomain;
if (isProd()) { if (isProd()) {
projectDomain = projectDomain + "/api"; domain += "/api";
} }
// 给拉卡拉通知的回调地址 // 给拉卡拉通知的回调地址
String retUrl = projectDomain + "/mobile/shop/lakala/ledger/applyLedgerMerReceiverBindNotify"; String retUrl = domain + "/mobile/shop/lakala/ledger/applyLedgerMerReceiverBindNotify";
req.setRetUrl(retUrl); req.setRetUrl(retUrl);
// 文件上传到拉卡拉服务器 // 文件上传到拉卡拉服务器
@ -748,9 +762,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/ */
@Override @Override
public JSONObject applyLedgerMerReceiverBindNotify(HttpServletRequest request) { public JSONObject applyLedgerMerReceiverBindNotify(HttpServletRequest request) {
log.debug("分账绑定关系申请业务异步通知开始");
// 验签 // 验签
String authorization = request.getHeader("Authorization"); String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request); String requestBody = LakalaUtil.getBody(request);
log.debug("分账绑定关系申请业务回调返回参数:{}", requestBody);
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath); boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) { if (!checkSuccess) {

View File

@ -44,6 +44,24 @@ public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberM
return getOne(queryWrapper); return getOne(queryWrapper);
} }
/**
* 根据申请单号和审核状态查询记录
*
* @param applyId
* @param auditStatus
* @return
*/
@Override
public LklLedgerMember getByApplyId(String applyId, Integer auditStatus) {
if (StrUtil.isBlank(applyId) || auditStatus == null) {
return null;
}
QueryWrapper<LklLedgerMember> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("apply_id", applyId);
queryWrapper.eq("audit_status", auditStatus);
return getOne(queryWrapper);
}
/** /**
* 根据银联商户号新增或修改记录 * 根据银联商户号新增或修改记录
* *
@ -57,7 +75,7 @@ public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberM
} }
QueryWrapper<LklLedgerMember> queryWrapper = new QueryWrapper<>(); QueryWrapper<LklLedgerMember> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mer_cup_no", record.getMer_cup_no()); queryWrapper.eq("mer_cup_no", record.getMer_cup_no()).eq("mch_id", record.getMch_id());
List<LklLedgerMember> existsRecordList = list(queryWrapper); List<LklLedgerMember> existsRecordList = list(queryWrapper);
if (!CollectionUtil.isEmpty(existsRecordList) if (!CollectionUtil.isEmpty(existsRecordList)
&& existsRecordList.get(0) != null && existsRecordList.get(0) != null

View File

@ -90,8 +90,8 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl<LklLedg
updateWrapper.set("receiver_no", receiverNo); updateWrapper.set("receiver_no", receiverNo);
updateWrapper.set("mer_inner_no", merInnerNo); updateWrapper.set("mer_inner_no", merInnerNo);
updateWrapper.set("mer_cup_no", merCupNo); updateWrapper.set("mer_cup_no", merCupNo);
updateWrapper.set("split_entrust_file_name", entrustFileName); updateWrapper.set("entrust_file_name", entrustFileName);
updateWrapper.set("split_entrust_file_path", entrustFilePath); updateWrapper.set("entrust_file_path", entrustFilePath);
updateWrapper.set("audit_status", auditStatus); updateWrapper.set("audit_status", auditStatus);
updateWrapper.set("audit_status_text", auditStatusText); updateWrapper.set("audit_status_text", auditStatusText);
updateWrapper.set("remark", remark); updateWrapper.set("remark", remark);