修复 拉卡拉 分账接口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 ret_url;
private String apply_id;
private String audit_status;
private Integer audit_status;
private String audit_status_text;
private String remark;
private Long mch_id;

View File

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

View File

@ -21,6 +21,15 @@ public interface LklLedgerMemberService extends IBaseService<LklLedgerMember> {
*/
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.V3LabsTradePreorderWechatBus;
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.feignService.ShopService;
import com.suisung.mall.common.modules.lakala.LklLedgerMember;
@ -425,6 +426,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Override
public CommonResult applyLedgerMer(JSONObject paramsJSON) {
log.info("商户分账业务开通申请开始");
// TODO 判断是否已经申请过
// 1. 配置初始化
initLKLSDK();
@ -449,11 +452,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String splitEntrustFilePath = fileUploadResp.getStr("attFileId");
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如G1/M00/06/64/CrFdEmBQc-aAGc_XAAAiIbS3WIE960.pdf;
String domain = projectDomain;
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);
paramsJSON.set("orderNo", req.getOrderNo());
@ -502,6 +506,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
@Override
public JSONObject applyLedgerMerNotify(HttpServletRequest request) {
log.info("商户分账申请业务异步通知开始");
// 验签
String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request);
@ -520,13 +525,21 @@ public class LakalaApiServiceImpl implements LakalaApiService {
respData.put("retMsg", "响应处理失败!");
if (paramsJSON != null) {
// JSONObject reqData = (JSONObject) paramsJSON.get("respData");
// if (ObjectUtil.isEmpty(reqData)) {
// return respData;
// }
String applyId = paramsJSON.getStr("applyId");
if (StrUtil.isBlank(applyId)) {
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("merCupNo"),
paramsJSON.getStr("entrustFileName"),
@ -689,11 +702,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
String splitEntrustFileBase64 = UploadUtil.URLFileToBase64(paramsJSON.getStr("entrustFile")); // 这个是 url 地址不是 base64 字节码
req.setEntrustFileName(fileName);
String domain = projectDomain;
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);
// 文件上传到拉卡拉服务器
@ -748,9 +762,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
*/
@Override
public JSONObject applyLedgerMerReceiverBindNotify(HttpServletRequest request) {
log.debug("分账绑定关系申请业务异步通知开始");
// 验签
String authorization = request.getHeader("Authorization");
String requestBody = LakalaUtil.getBody(request);
log.debug("分账绑定关系申请业务回调返回参数:{}", requestBody);
boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath);
if (!checkSuccess) {

View File

@ -44,6 +44,24 @@ public class LklLedgerMemberServiceImpl extends BaseServiceImpl<LklLedgerMemberM
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.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);
if (!CollectionUtil.isEmpty(existsRecordList)
&& existsRecordList.get(0) != null

View File

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