拉卡拉分账异步通知处,增加了提现流程。
This commit is contained in:
parent
8f39816f36
commit
9f62bf8ddd
@ -27,7 +27,7 @@ public class UpdateOrderSeparateJob extends QuartzJobBean {
|
||||
return;
|
||||
}
|
||||
|
||||
Integer processedCount = lakalaApiService.fixedUnSuccessSeparateStatusJob();
|
||||
Integer processedCount = lakalaApiService.fixUnSuccessSeparateStatusJob();
|
||||
|
||||
logger.info("[分账状态修复定时任务] 执行完成,共处理 {} 条记录", processedCount);
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -49,7 +49,7 @@ public class LakalaAdminController extends BaseControllerImpl {
|
||||
}
|
||||
|
||||
// 执行业务逻辑
|
||||
Boolean success = lakalaPayService.ewalletWithDrawD1(paramsJSON.getStr("mercId"), paramsJSON.getStr("merOrderNo"), paramsJSON.getStr("drawAmt"), paramsJSON.getStr("remark"), paramsJSON.getStr("summary"));
|
||||
Boolean success = lakalaPayService.ewalletWithDrawD1(paramsJSON.getStr("mercId"), paramsJSON.getStr("merOrderNo"), paramsJSON.getStr("drawAmt"), paramsJSON.getStr("summary"));
|
||||
if (success) {
|
||||
return CommonResult.success("账户D1提现提交成功");
|
||||
}
|
||||
|
||||
@ -299,7 +299,7 @@ public interface LakalaApiService {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Integer fixedUnSuccessSeparateStatusJob();
|
||||
Integer fixUnSuccessSeparateStatusJob();
|
||||
|
||||
/**
|
||||
* 检测修复补全商户的商户分账业务信息及分账接收方绑定关系(分账业务申请异步通知的补偿机制)
|
||||
@ -337,10 +337,9 @@ public interface LakalaApiService {
|
||||
* @param mercId 822商户号或receiveNo
|
||||
* @param merOrderNo 商户订单号
|
||||
* @param drawAmt 提现金额(分)
|
||||
* @param remark
|
||||
* @param summary
|
||||
*/
|
||||
Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String remark, String summary);
|
||||
Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String summary);
|
||||
|
||||
/**
|
||||
* 拉卡拉账户D1提现结果通知
|
||||
|
||||
@ -2693,13 +2693,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
* 参考文档:https://o.lakala.com/#/home/document/detail?id=393
|
||||
* </p>
|
||||
*
|
||||
* @param request
|
||||
* @param request HTTP请求对象,包含拉卡拉分账结果通知的参数
|
||||
* @param merchantNoParam 分账方商户号,非空表示是事后补偿
|
||||
* @param separateNoParam 分账指令流水号,非空表示是事后补偿
|
||||
* <ul>
|
||||
* <li>成功: {"code": "SUCCESS", "message": "操作成功"}</li>
|
||||
* <li>失败: {"code": "FAIL", "message": "错误信息"}</li>
|
||||
* </ul>
|
||||
* @return 处理结果JSON对象
|
||||
* <ul>
|
||||
* <li>成功: {"code": "SUCCESS", "message": "操作成功"}</li>
|
||||
* <li>失败: {"code": "FAIL", "message": "错误信息"}</li>
|
||||
* </ul>
|
||||
*/
|
||||
@Override
|
||||
public JSONObject sacsSeparateNotify(HttpServletRequest request, String merchantNoParam, String separateNoParam) {
|
||||
@ -2708,7 +2709,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
JSONObject paramsJson = null;
|
||||
if (!StrUtil.hasBlank(merchantNoParam, separateNoParam)) {
|
||||
channel = "(补偿)";
|
||||
log.info("[拉卡拉分账通知] 开始处理拉卡拉分账结果通知异步回调 merchantNoParam={},separateNoParam={}" + channel, merchantNoParam, separateNoParam);
|
||||
log.info("[拉卡拉分账通知] 开始处理拉卡拉分账结果通知异步回调{},merchantNoParam={},separateNoParam={}",
|
||||
channel, merchantNoParam, separateNoParam);
|
||||
paramsJson = sacsQuery(merchantNoParam, separateNoParam);
|
||||
} else {
|
||||
log.info("[拉卡拉分账通知] 开始处理拉卡拉分账结果通知异步回调");
|
||||
@ -2742,15 +2744,15 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
String status = paramsJson.getStr("status");
|
||||
String finalStatus = paramsJson.getStr("final_status");
|
||||
|
||||
// 必要参数
|
||||
// 必要参数校验
|
||||
List<String> missingParams = new ArrayList<>();
|
||||
if (StrUtil.isBlank(outSeparateNo)) missingParams.add("outSeparateNo");
|
||||
if (StrUtil.isBlank(separateNo)) missingParams.add("separateNo");
|
||||
if (StrUtil.isBlank(status)) missingParams.add("status");
|
||||
|
||||
if (!missingParams.isEmpty()) {
|
||||
String errorMsg = "分账通知缺少必要参数" + channel + String.join(", ", missingParams);
|
||||
log.error("[拉卡拉分账通知] {} {},参数详情: {}", channel, errorMsg, paramsJson);
|
||||
String errorMsg = "分账通知缺少必要参数" + channel + ": " + String.join(", ", missingParams);
|
||||
log.error("[拉卡拉分账通知] {},参数详情: {}", errorMsg, paramsJson);
|
||||
return JSONUtil.createObj()
|
||||
.put("code", "FAIL")
|
||||
.put("message", errorMsg);
|
||||
@ -2761,7 +2763,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (lklOrderSeparateExist == null) {
|
||||
String errorMsg = "未找到对应的分账记录" + channel;
|
||||
log.error("[拉卡拉分账通知] {},外部分账单号={},分账单号={},参数详情: {}",
|
||||
errorMsg, outSeparateNo, separateNoParam, paramsJson);
|
||||
errorMsg, outSeparateNo, separateNo, paramsJson);
|
||||
return JSONUtil.createObj()
|
||||
.put("code", "FAIL")
|
||||
.put("message", errorMsg);
|
||||
@ -2779,8 +2781,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
}
|
||||
|
||||
// 6. 记录关键参数信息,便于问题排查
|
||||
log.info("[拉卡拉分账通知] 接收到分账通知,分账单号={},外部分账单号={},状态={},最终状态={}" + channel,
|
||||
separateNo, outSeparateNo, status, finalStatus);
|
||||
log.info("[拉卡拉分账通知] 接收到分账通知{},分账单号={},外部分账单号={},状态={},最终状态={}",
|
||||
channel, separateNo, outSeparateNo, status, finalStatus);
|
||||
|
||||
// 7. 构建分账记录对象 - 准备更新数据库的分账记录
|
||||
LklOrderSeparate lklOrderSeparate = new LklOrderSeparate();
|
||||
@ -2819,14 +2821,25 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
// 更改分账状态:分账成功
|
||||
shopOrderLklService.updateSeparateStatusByReceiveLogNo(logNo, CommonConstant.Sta_Separate_Success, "");
|
||||
|
||||
// RMK 本次分账成功后,给商户和接收方 D1提现到银行卡
|
||||
if (CollUtil.isNotEmpty(detailDatas)) {
|
||||
for (JSONObject detailData : detailDatas.jsonIter()) {
|
||||
String recvNo = detailData.getStr("recv_no"); // 822商户号或接收方号
|
||||
String amt = detailData.getStr("amt"); // 单位(分)
|
||||
if (StrUtil.isNotBlank(recvNo) && StrUtil.isNotBlank(amt)) {
|
||||
ewalletWithDrawD1(recvNo, outSeparateNo, amt, JSONUtil.toJsonStr(detailDatas));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 9. 记录处理成功日志
|
||||
log.info("[拉卡拉分账通知] 分账通知处理成功, separateNo={}, status={}" + channel, separateNo, status);
|
||||
log.info("[拉卡拉分账通知] 分账通知处理成功{},separateNo={},status={}", channel, separateNo, status);
|
||||
return JSONUtil.createObj()
|
||||
.put("code", "SUCCESS")
|
||||
.put("message", "操作成功");
|
||||
} catch (Exception e) {
|
||||
// 10. 异常处理
|
||||
String errorMsg = String.format("分账通知数据处理异常: %s" + channel, e.getMessage());
|
||||
String errorMsg = String.format("分账通知数据处理异常: %s%s", e.getMessage(), channel);
|
||||
log.error("[拉卡拉分账通知] {}", errorMsg, e);
|
||||
return JSONUtil.createObj()
|
||||
.put("code", "FAIL")
|
||||
@ -2920,15 +2933,15 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
* @return 成功处理的记录数量
|
||||
*/
|
||||
@Override
|
||||
public Integer fixedUnSuccessSeparateStatusJob() {
|
||||
public Integer fixUnSuccessSeparateStatusJob() {
|
||||
log.info("[分账状态修复任务] 开始执行未成功分账记录的状态修复任务");
|
||||
|
||||
// 获取3天前分账状态未成功的记录
|
||||
// 获取2天前分账状态未成功的记录
|
||||
Date now = new Date();
|
||||
Date threeDaysAgo = DateUtils.addHours(now, -72);
|
||||
Date threeDaysAgo = DateUtils.addHours(now, -48);
|
||||
|
||||
// 分页参数
|
||||
int pageSize = 100;
|
||||
int pageSize = 200;
|
||||
int currentPage = 1;
|
||||
int totalSuccessCount = 0;
|
||||
int totalProcessed = 0;
|
||||
@ -3384,12 +3397,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
* @param mercId 822商户号或receiveNo
|
||||
* @param merOrderNo 商户订单号
|
||||
* @param drawAmt 提现金额(分)
|
||||
* @param remark 备注信息
|
||||
* @param summary 摘要信息
|
||||
* @return 操作结果,成功返回true,失败返回false
|
||||
*/
|
||||
@Override
|
||||
public Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String remark, String summary) {
|
||||
public Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String summary) {
|
||||
// 1. 参数校验
|
||||
if (StrUtil.hasBlank(mercId, merOrderNo, drawAmt)) {
|
||||
log.warn("[D1提现申请] D1提现参数校验失败,关键参数为空: mercId={}, merOrderNo={}, drawAmt={}",
|
||||
@ -3399,8 +3411,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
// 账号类型(01:收款账户,04:分账接收方账户)
|
||||
String payType = "04";
|
||||
String payTypeStr = "接收方账户04";
|
||||
if (StrUtil.startWith(mercId, "822")) {
|
||||
payType = "01";
|
||||
payTypeStr = "收款账户01";
|
||||
}
|
||||
|
||||
try {
|
||||
@ -3411,10 +3425,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 设置默认值
|
||||
if (StrUtil.isBlank(remark)) {
|
||||
remark = String.format("商户订单:%s 账号类型:%s 分账后立即提现", merOrderNo, payType);
|
||||
}
|
||||
String remark = String.format("订单:%s %s 分账后立即提现", merOrderNo, payTypeStr);
|
||||
|
||||
log.info("[D1提现申请] 开始处理D1提现,商户号={},订单号={},提现金额={}分", mercId, merOrderNo, drawAmt);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user