修改分账流程,运费由第三商户代收。
This commit is contained in:
parent
fc72297f2a
commit
69e97f1b28
@ -591,7 +591,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
req.setVersion("2.0");
|
||||
req.setOrderNo(StringUtils.genLklOrderNo(8));// 14位年月日时(24小时制)分秒+8位的随机数
|
||||
req.setOrgCode(orgCode);
|
||||
// req.setMerInnerNo(shopMchEntry.getLkl_mer_inner_no());// 从进件申请返回的内部商户号
|
||||
req.setMerCupNo(shopMchEntry.getLkl_mer_cup_no()); // 从进件申请返回的商户号(不要传入内部商户号,传银联商户号才有效)
|
||||
req.setContactMobile(shopMchEntry.getLogin_mobile()); // 商户入驻注册的手机号
|
||||
// 分账比例为了考虑低价订单的运费占比高,分账比例暂时定70%分账给商户,30%分账给平台
|
||||
@ -601,13 +600,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
req.setSplitEntrustFileName(fileName);
|
||||
|
||||
// TODO 分账结算委托书文件上传到拉卡拉服务器
|
||||
// JSONObject fileUploadResp = uploadFile(req.getOrderNo(), "SPLIT_ENTRUST_FILE", StringUtils.getFileExt(fileName), UploadUtil.fileUrlToBase64(shopMchEntry.getContract_download_url()));
|
||||
// if (fileUploadResp == null || StrUtil.isBlank(fileUploadResp.getStr("attFileId"))) {
|
||||
// log.error("商家分账授权委托书{}上传失败!", shopMchEntry.getContract_download_url());
|
||||
// // return Pair.of(false, I18nUtil._("商家分账授权委托书上传失败!"));
|
||||
//// throw new ApiException(I18nUtil._("商家分账授权委托书上传失败!"));
|
||||
// }
|
||||
|
||||
String splitEntrustFilePath = shopMchEntry.getLkl_ec_file_path(); //fileUploadResp.getStr("attFileId");
|
||||
req.setSplitEntrustFilePath(splitEntrustFilePath); //比如:MMS/20250519/165150-39c8bbca513b4cccab1e942999021fd6.pdf;
|
||||
|
||||
@ -1617,13 +1609,27 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
}
|
||||
|
||||
String merchantNo = shopOrderLkl.getLkl_merchant_no();
|
||||
Integer paymentAmount = shopOrderLkl.getTotal_amt();
|
||||
// 分账金额 = 应付总金额-运费
|
||||
Integer totalAmt = shopOrderLkl.getTotal_amt();
|
||||
totalAmt = CheckUtil.isEmpty(totalAmt) ? 0 : totalAmt;
|
||||
Integer shoppingFee = shopOrderLkl.getShopping_fee();
|
||||
shoppingFee = CheckUtil.isEmpty(shoppingFee) ? 0 : shoppingFee;
|
||||
// 商家分账比例
|
||||
BigDecimal splitRatioMch = shopOrderLkl.getSplit_ratio();
|
||||
|
||||
// 金额合法性校验
|
||||
if (paymentAmount <= 0 || (shoppingFee != null && paymentAmount <= shoppingFee)) {
|
||||
String errorMsg = String.format("店铺[%s]订单金额异常或运费过高,跳过分账", shopOrderLkl.getStore_id());
|
||||
// if (paymentAmount <= 0 || (shoppingFee != null && paymentAmount <= shoppingFee)) {
|
||||
// String errorMsg = String.format("店铺[%s]订单金额异常或运费过高,跳过分账", shopOrderLkl.getStore_id());
|
||||
// log.error(errorMsg);
|
||||
// errorMessages.append(errorMsg).append("; ");
|
||||
// lklOrderSeparateService.updateRemark(lklOrderSeparateExist.getId(), errorMsg);
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// 分账总金额,单位(分)
|
||||
Integer splitAmount = totalAmt - shoppingFee;
|
||||
if (splitAmount <= 0) {
|
||||
String errorMsg = String.format("店铺[%s]订单分账金额异常,跳过分账", shopOrderLkl.getStore_id());
|
||||
log.error(errorMsg);
|
||||
errorMessages.append(errorMsg).append("; ");
|
||||
lklOrderSeparateService.updateRemark(lklOrderSeparateExist.getId(), errorMsg);
|
||||
@ -1642,11 +1648,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 判断是否可以分账(商家比例非100%)
|
||||
boolean canSplit = splitRatioMch != null && splitRatioMch.compareTo(new BigDecimal("100")) < 0;
|
||||
// 判断是否可以分账(商家比例不超过100%)
|
||||
boolean canSplit = splitRatioMch != null && splitRatioMch.compareTo(new BigDecimal("100")) <= 0;
|
||||
if (!canSplit) {
|
||||
String errorMsg = String.format("店铺[%s]分账比例为0,仅扣除运费", shopOrderLkl.getStore_id());
|
||||
String errorMsg = String.format("店铺[%s]分账比例异常,无法分账", shopOrderLkl.getStore_id());
|
||||
log.error(errorMsg);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 构建分账请求对象
|
||||
@ -1655,7 +1662,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
request.setLogNo(shopOrderLkl.getLkl_log_no());
|
||||
request.setLogDate(shopOrderLkl.getLkl_log_date());
|
||||
request.setOutSeparateNo(orderId);
|
||||
request.setTotalAmt(paymentAmount.toString());
|
||||
request.setTotalAmt(splitAmount.toString());
|
||||
request.setLklOrgNo(orgCode);
|
||||
request.setCalType("0");
|
||||
request.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/sacs/separateNotify");
|
||||
@ -1663,25 +1670,24 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
// 构建分账接收方列表
|
||||
List<V3SacsSeparateRecvDatas> recvDatas = new ArrayList<>();
|
||||
|
||||
// 1. 先处理运费分账(如果有运费)
|
||||
if (shoppingFee != null && shoppingFee > 0) {
|
||||
V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
|
||||
receiver.setRecvNo(platform.getReceiver_no());
|
||||
receiver.setSeparateValue(shoppingFee.toString());
|
||||
recvDatas.add(receiver);
|
||||
}
|
||||
// 1. 先处理运费分账(如果有运费) == update 2025-08-22 运费不分账了,走合单拆分,直接打给商家
|
||||
// if (shoppingFee != null && shoppingFee > 0) {
|
||||
// V3SacsSeparateRecvDatas receiver = new V3SacsSeparateRecvDatas();
|
||||
// receiver.setRecvNo(platform.getReceiver_no());
|
||||
// receiver.setSeparateValue(shoppingFee.toString());
|
||||
// recvDatas.add(receiver);
|
||||
// }
|
||||
|
||||
Integer totalSeparateValue = 0;// 平台方和代理商总计分账金额
|
||||
// 2. 再处理剩余金额的分账(如果可以分账)
|
||||
if (canSplit) {
|
||||
|
||||
// 计算实际可分账金额(扣除运费后)
|
||||
Integer splitAmount = paymentAmount - shoppingFee;
|
||||
// Integer splitAmount = totalAmt - shoppingFee;
|
||||
// 计算平台+代理商的总比例
|
||||
BigDecimal splitRatioNoMch = new BigDecimal("100").subtract(splitRatioMch);
|
||||
|
||||
if (!CollectionUtils.isEmpty(distributors) && splitRatioNoMch.compareTo(BigDecimal.ONE) > 0) {
|
||||
// 平台+代理商分账模式
|
||||
if (!CollectionUtils.isEmpty(distributors) && splitRatioNoMch.compareTo(BigDecimal.ONE) > 0) { // 平台+代理商分账模式
|
||||
// 平台收取1%手续费
|
||||
BigDecimal platformValue = CommonUtil.DecimalRoundHalfDown(new BigDecimal(splitAmount).multiply(new BigDecimal("0.01")));
|
||||
if (platformValue.compareTo(BigDecimal.ZERO) > 0) {
|
||||
|
||||
@ -155,7 +155,6 @@ public class ShopOrderLklServiceImpl extends BaseServiceImpl<ShopOrderLklMapper,
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
ShopOrderLkl record = new ShopOrderLkl();
|
||||
record.setOrder_id(orderId);
|
||||
|
||||
@ -167,7 +166,7 @@ public class ShopOrderLklServiceImpl extends BaseServiceImpl<ShopOrderLklMapper,
|
||||
log.error("订单{}金额无效: {}", orderId, amount);
|
||||
return false;
|
||||
}
|
||||
record.setTotal_amt(amount);
|
||||
record.setTotal_amt(amount); // 应支付总金额
|
||||
|
||||
record.setAccount_type(reqDataJson.getStr("accountType"));
|
||||
record.setTrans_type(reqDataJson.getStr("transType"));
|
||||
|
||||
@ -175,9 +175,9 @@ lakala:
|
||||
client_id: gpff
|
||||
client_secret: uRjvaJkWS1A0VsAv
|
||||
user_no: 22874827
|
||||
split_lowest_ratio: 70.00
|
||||
split_lowest_ratio: 94.00
|
||||
activity_id: 208
|
||||
wx_fee: 0.25 # 微信手续费 2.5/1000
|
||||
wx_fee: 0.25 # 微信手续费 千分之2.5
|
||||
api_pub_key_path: payKey/lakala/prod/tk_api_public_key.txt
|
||||
api_pri_key_path: payKey/lakala/prod/tk_api_private_key.txt
|
||||
notify_pub_key_path: payKey/lakala/prod/tk_notify_public_key.txt
|
||||
|
||||
Loading…
Reference in New Issue
Block a user