清理拉卡拉多余的接口

This commit is contained in:
Jack 2025-06-20 00:49:08 +08:00
parent eaa03106d6
commit 83792e4222
21 changed files with 158 additions and 483 deletions

View File

@ -67,7 +67,8 @@ public class IndexController extends BaseControllerImpl {
@RequestMapping(value = "/test/case", method = RequestMethod.POST)
public JSONObject testCase(HttpServletRequest request, HttpServletResponse response,
@RequestBody JSONObject objectJSON) {
return lakalaPayService.lklTransPreOrder(request, response, (String) objectJSON.get("orderId"));
// return lakalaPayService.lklTransPreOrder(request, response, (String) objectJSON.get("orderId"));
return null;
}
@ApiOperation(value = "获取支付密码", notes = "获取支付密码")

View File

@ -13,14 +13,11 @@ import com.suisung.mall.common.api.CommonResult;
import org.springframework.data.util.Pair;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface LakalaPayService {
Boolean initLKLSDK();
JSONObject lklTransPreOrder(HttpServletRequest request, HttpServletResponse response, String orderId);
/**
* 拉卡拉预下单
* 参考https://o.lakala.com/#/home/document/detail?id=110
@ -39,30 +36,6 @@ public interface LakalaPayService {
*/
JSONObject lklTransPreOrder(String merchantNo, String termNo, String xcxAppId, String openId, String storeId, String orderId, String subject, String totalAmount, String notifyURL, String requestIP, String remark);
/**
* 聚合扫码-交易查询
*
* @param storeId
* @param orderId
* @return
*/
JSONObject tradeQuery(Integer storeId, String orderId);
/**
* 聚合扫码-退款交易
* 主被扫交易发生后因商家或消费者原因需要退款时商家调用此接口退还消费者支付款项
* 注意 1调用退款接口时请保证商户/账户余额大于等于本次退款金额
*
* @param storeId
* @param out_trade_no
* @param origin_trade_no // 原拉卡拉交易流水号
* @param refund_amount 单位分整数数字型字符
* @param refund_reason
* @param requestIP
* @return
*/
JSONObject refund(Integer storeId, String out_trade_no, String origin_trade_no, String refund_amount, String refund_reason, String requestIP);
/**
* 执行内部拉卡拉交易退款
* 参考地址https://o.lakala.com/#/home/document/detail?id=113
@ -76,18 +49,6 @@ public interface LakalaPayService {
*/
Pair<Boolean, String> innerLklRefund(Integer storeId, String outTradeNo, String originTradeNo, String refundAmount, String refundReason);
/**
* 账户余额查询
* 参考https://o.lakala.com/#/home/document/detail?id=364
*
* @param orgNo bmcp机构号
* @param merchantNo 商户号 receiveNo 商户用户编号
* @param payNo 账号若该参数上送则payType将无效
* @param payType 账号类型01收款账户02付款账户03分账商户账户04分账接收方账户05充值代付账户06结算代付账户- 未上送则默认为01
* @return
*/
JSONObject ewalletBalanceQuery(String orgNo, String merchantNo, String payNo, String payType);
/**
* 文件上传
* 参考https://o.lakala.com/#/home/document/detail?id=90

View File

@ -43,7 +43,6 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ -53,13 +52,7 @@ import java.util.List;
@Service
public class LakalaPayServiceImpl implements LakalaPayService {
private static final boolean init = false;
//### 可选的两个参数不同的店铺商家可以数据库里配置不同的商户号和终端号
@Value("${lakala.merchant_no}")
public String merchantNo; // 拉卡拉分配的商户号
@Value("${lakala.term_no}")
public String termNo; // 拉卡拉分配的终端号码
@Value("${lakala.server_url}")
private String serverUrl; //服务地址
@Value("${lakala.app_id}")
@ -112,47 +105,6 @@ public class LakalaPayServiceImpl implements LakalaPayService {
return "prod".equalsIgnoreCase(profile);
}
@Override
public cn.hutool.json.JSONObject lklTransPreOrder(HttpServletRequest request, HttpServletResponse response, String orderId) {
// 1. 配置初始化
initLKLSDK();
//2. 装配数据
/*** 微信主扫场景示例 */
V3LabsTransPreorderRequest v3LabsTransPreorderWechatReq = new V3LabsTransPreorderRequest();
v3LabsTransPreorderWechatReq.setMerchantNo(merchantNo);
v3LabsTransPreorderWechatReq.setTermNo(termNo);
v3LabsTransPreorderWechatReq.setOutTradeNo(orderId);
v3LabsTransPreorderWechatReq.setSubject("油麦菜5斤装特惠");
v3LabsTransPreorderWechatReq.setAccountType("WECHAT");
v3LabsTransPreorderWechatReq.setTransType("51");
v3LabsTransPreorderWechatReq.setTotalAmount("1");
v3LabsTransPreorderWechatReq.setNotifyUrl("http://mall.gpxscs.cn/notify");
v3LabsTransPreorderWechatReq.setRemark("测试预下单备注");
//地址位置信息
V3LabsTradeLocationInfo v3LabsTradePreorderLocationInfo1 = new V3LabsTradeLocationInfo(IpKit.getRealIp(request));
v3LabsTransPreorderWechatReq.setLocationInfo(v3LabsTradePreorderLocationInfo1);
//微信主扫场景下acc_busi_fields域内容
V3LabsTradePreorderWechatBus wechatBus = new V3LabsTradePreorderWechatBus();
wechatBus.setSubAppid("wx5a73f844dac0da5c"); // 小程序appId
wechatBus.setUserId("oDVKR7T0qxg6O8tqIL9SgY6LXqqQ"); // 微信 openId
wechatBus.setDeviceInfo("WEB"); // 终端设备号(门店号或收银设备ID)注意PC网页或JSAPI支付请传WEB
v3LabsTransPreorderWechatReq.setAccBusiFields(wechatBus);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(v3LabsTransPreorderWechatReq);
//4. 响应
return JSONUtil.parseObj(responseStr);
} catch (SDKException e) {
LakalaPayServiceImpl.log.error("transPreOrder error", e);
throw new ApiException(I18nUtil._("获取公众号绑定信息失败!"), e);
}
}
/**
* 拉卡拉预下单
@ -176,11 +128,8 @@ public class LakalaPayServiceImpl implements LakalaPayService {
// 1. 配置初始化
initLKLSDK();
if (StrUtil.isBlank(merchantNo)) {
merchantNo = this.merchantNo;
}
if (StrUtil.isBlank(termNo)) {
termNo = this.termNo;
if (StrUtil.isBlank(merchantNo) || StrUtil.isBlank(termNo)) {
throw new ApiException(I18nUtil._("缺少商户号或终端号!"));
}
//2. 装配数据
@ -238,104 +187,6 @@ public class LakalaPayServiceImpl implements LakalaPayService {
}
}
/**
* 聚合扫码-交易查询
*
* @param storeId
* @param orderId
* @return
*/
@Override
public JSONObject tradeQuery(Integer storeId, String orderId) {
if (ObjectUtil.isEmpty(storeId) || StrUtil.isBlank(orderId)) {
return null;
}
// 1. 配置初始化
initLKLSDK();
// 这里获取店铺的拉卡拉的商户号和终端号码
ShopStoreBase shopStoreBase = shopService.getLklMerchantNoAndTermNo(storeId);
if (shopStoreBase == null || StrUtil.isBlank(shopStoreBase.getLkl_merchant_no()) || StrUtil.isBlank(shopStoreBase.getLkl_term_no())) {
log.error("缺少参数,拉卡拉交易查询失败!");
return null;
}
//2. 装配数据
V3LabsQueryTradequeryRequest v3LabsQueryTradequeryRequest = new V3LabsQueryTradequeryRequest();
v3LabsQueryTradequeryRequest.setMerchantNo(shopStoreBase.getLkl_merchant_no());
v3LabsQueryTradequeryRequest.setTermNo(shopStoreBase.getLkl_term_no());
v3LabsQueryTradequeryRequest.setOutTradeNo(orderId);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(v3LabsQueryTradequeryRequest);
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
// || !lakalaRespJSON.getStr("code").equals("BBS00000")
return lakalaRespJSON;
} catch (SDKException e) {
log.error("交易查询失败:", e);
throw new ApiException(I18nUtil._("交易查询失败!"), e);
}
}
/**
* 聚合扫码-退款交易
* 主被扫交易发生后因商家或消费者原因需要退款时商家调用此接口退还消费者支付款项
* 注意 1调用退款接口时请保证商户/账户余额大于等于本次退款金额
*
* @param storeId
* @param out_trade_no
* @param origin_trade_no // 原拉卡拉交易流水号
* @param refund_amount 单位分整数数字型字符
* @param refund_reason
* @param requestIP
* @return
*/
@Override
public JSONObject refund(Integer storeId, String out_trade_no, String origin_trade_no, String refund_amount, String refund_reason, String requestIP) {
if (ObjectUtil.isEmpty(storeId) || StrUtil.isBlank(out_trade_no) || StrUtil.isBlank(refund_amount) || StrUtil.isBlank(origin_trade_no) || StrUtil.isBlank(requestIP)) {
return null;
}
// 1. 配置初始化
initLKLSDK();
// 这里获取店铺的拉卡拉的商户号和终端号码
ShopStoreBase shopStoreBase = shopService.getLklMerchantNoAndTermNo(storeId);
if (shopStoreBase == null || StrUtil.isBlank(shopStoreBase.getLkl_merchant_no()) || StrUtil.isBlank(shopStoreBase.getLkl_term_no())) {
log.error("缺少参数,退款交易失败!");
return null;
}
//2. 装配数据
V3LabsRelationIdmrefundRequest req = new V3LabsRelationIdmrefundRequest();
req.setOutRefundOrderNo(out_trade_no);
req.setMerchantNo(shopStoreBase.getLkl_merchant_no());
req.setTermNo(shopStoreBase.getLkl_term_no());
req.setRefundAmount(refund_amount);
req.setRefundReason(refund_reason);
req.setOriginTradeNo(origin_trade_no);
V3LabsTradeLocationInfo v3LabsTradeLocationInfo = new V3LabsTradeLocationInfo(requestIP, null, "");
req.setLocationInfo(v3LabsTradeLocationInfo);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(req);
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
return lakalaRespJSON;
} catch (SDKException e) {
log.error("退款交易失败:", e);
throw new ApiException(I18nUtil._("退款交易!"), e);
}
}
/**
* 执行内部拉卡拉交易退款
@ -421,46 +272,6 @@ public class LakalaPayServiceImpl implements LakalaPayService {
}
}
/**
* 账户余额查询
* 参考https://o.lakala.com/#/home/document/detail?id=364
*
* @param orgNo bmcp机构号 测试 1
* @param merchantNo 商户号 receiveNo 商户用户编号
* @param payNo 账号若该参数上送则payType将无效
* @param payType 账号类型01收款账户02付款账户03分账商户账户04分账接收方账户05充值代付账户06结算代付账户- 未上送则默认为01
* @return
*/
@Override
public JSONObject ewalletBalanceQuery(String orgNo, String merchantNo, String payNo, String payType) {
if (StrUtil.isBlank(orgNo) || StrUtil.isBlank(merchantNo) || (StrUtil.isBlank(payNo) && StrUtil.isBlank(payType))) {
return null;
}
// 1. 配置初始化
initLKLSDK();
//2. 装配数据
V2LaepIndustryEwalletBalanceQueryRequest req = new V2LaepIndustryEwalletBalanceQueryRequest();
req.setOrgNo(orgNo);
req.setMerchantNo(merchantNo);
req.setPayNo(payNo);
req.setPayType(payType);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(req);
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
return lakalaRespJSON;
} catch (SDKException e) {
log.error("账户余额查询失败:", e);
throw new ApiException(I18nUtil._("账户余额查询!"), e);
}
}
/**
* 文件上传

View File

@ -127,7 +127,7 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# 机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
# #商户号
# merchant_no: 82229007392000A
# #终端号
# term_no: D9296400

View File

@ -129,7 +129,7 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# 机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
# #商户号
# merchant_no: 82229007392000A
# #终端号
# term_no: D9296400

View File

@ -116,6 +116,20 @@ project:
domain: @project.domain@
#拉卡拉支付和分账
lakala:
# #服务地址
# server_url: https://test.wsmsd.cn/sit
# #应用Id
# app_id: OP00000003
# #商户证书序列号
# serial_no: 00dfba8194c41b84cf
# #商户证书
# api_cert_path: payKey/lakala/dev/OP00000003_cert.cer
# #商户私钥
# api_pri_key_path: payKey/lakala/dev/OP00000003_private_key.pem
# #拉卡拉平台证书
# lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# # 机构代码
# org_code: 1
#服务地址
server_url: https://s2.lakala.com
#应用Id
@ -130,7 +144,7 @@ lakala:
lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer
#机构代码
org_code: 980688
#商户号
merchant_no: 8226330599900LN
#终端号码M0780629B2B收银台 M0780798专业化扫码
term_no: M0780798
# #商户号
# merchant_no: 8226330599900LN
# #终端号码M0780629B2B收银台 M0780798专业化扫码
# term_no: M0780798

View File

@ -127,7 +127,7 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# 机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
# #商户号
# merchant_no: 82229007392000A
# #终端号
# term_no: D9296400

View File

@ -127,7 +127,7 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# 机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
# #商户号
# merchant_no: 82229007392000A
# #终端号
# term_no: D9296400

View File

@ -13,7 +13,6 @@ import com.suisung.mall.common.api.CommonResult;
import org.springframework.data.util.Pair;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 拉卡拉业务接口
@ -22,26 +21,6 @@ public interface LakalaApiService {
Boolean initLKLSDK();
JSONObject transPreOrder(HttpServletRequest request, HttpServletResponse response, String orderId);
/**
* 拉卡拉预下单
* 参考https://o.lakala.com/#/home/document/detail?id=110
*
* @param merchantNo 商户号
* @param termNo 终端号
* @param xcxAppId 小程序appid
* @param openId openid
* @param orderId 订单号
* @param subject 订单标题
* @param totalAmount 订单金额
* @param notifyURL 回调地址
* @param requestIP 请求ip
* @param remark 备注
* @return
*/
JSONObject transPreOrder(String merchantNo, String termNo, String xcxAppId, String openId, String orderId, String subject, String totalAmount, String notifyURL, String requestIP, String remark);
/**
* 聚合扫码-交易查询
*

View File

@ -15,12 +15,10 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ijpay.core.kit.IpKit;
import com.lkl.laop.sdk.LKLSDK;
import com.lkl.laop.sdk.exception.SDKException;
import com.lkl.laop.sdk.request.*;
import com.lkl.laop.sdk.request.model.V3LabsTradeLocationInfo;
import com.lkl.laop.sdk.request.model.V3LabsTradePreorderWechatBus;
import com.lkl.laop.sdk.request.model.V3SacsSeparateRecvDatas;
import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.constant.CommonConstant;
@ -51,7 +49,6 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.math.BigDecimal;
import java.time.LocalDate;
@ -67,10 +64,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
private static final String lklSuccessCode = "000000";
private static final String lklSacsSuccessCode = "SACS0000";
// 可选的两个参数不同的店铺商家可以数据库里配置不同的商户号和终端号
@Value("${lakala.merchant_no}")
public String merchantNo; // 拉卡拉分配的商户号
@Value("${lakala.term_no}")
public String termNo; // 拉卡拉分配的终端号码
// @Value("${lakala.merchant_no}")
// public String merchantNo; // 拉卡拉分配的商户号
// @Value("${lakala.term_no}")
// public String termNo; // 拉卡拉分配的终端号码
@Value("${lakala.server_url}")
private String serverUrl; //服务地址
@ -175,127 +172,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return "prod".equalsIgnoreCase(profile);
}
@Override
public JSONObject transPreOrder(HttpServletRequest request, HttpServletResponse response, String orderId) {
// 1. 配置初始化
initLKLSDK();
//2. 装配数据
/*** 微信主扫场景示例 */
V3LabsTransPreorderRequest v3LabsTransPreorderWechatReq = new V3LabsTransPreorderRequest();
v3LabsTransPreorderWechatReq.setMerchantNo(merchantNo);
v3LabsTransPreorderWechatReq.setTermNo(termNo);
v3LabsTransPreorderWechatReq.setOutTradeNo(orderId);
v3LabsTransPreorderWechatReq.setSubject("油麦菜5斤装特惠");
v3LabsTransPreorderWechatReq.setAccountType("WECHAT");
v3LabsTransPreorderWechatReq.setTransType("51");
v3LabsTransPreorderWechatReq.setTotalAmount("1");
v3LabsTransPreorderWechatReq.setNotifyUrl("http://mall.gpxscs.cn/notify");
v3LabsTransPreorderWechatReq.setRemark("测试预下单备注");
//地址位置信息
V3LabsTradeLocationInfo v3LabsTradePreorderLocationInfo1 = new V3LabsTradeLocationInfo(IpKit.getRealIp(request));
v3LabsTransPreorderWechatReq.setLocationInfo(v3LabsTradePreorderLocationInfo1);
//微信主扫场景下acc_busi_fields域内容
V3LabsTradePreorderWechatBus wechatBus = new V3LabsTradePreorderWechatBus();
wechatBus.setSubAppid("wx5a73f844dac0da5c"); // 小程序appId
wechatBus.setUserId("oDVKR7T0qxg6O8tqIL9SgY6LXqqQ"); // 微信 openId
wechatBus.setDeviceInfo("WEB"); // 终端设备号(门店号或收银设备ID)注意PC网页或JSAPI支付请传WEB
v3LabsTransPreorderWechatReq.setAccBusiFields(wechatBus);
try {
//3. 发送请求
String responseStr = LKLSDK.httpPost(v3LabsTransPreorderWechatReq);
if (StrUtil.isBlank(responseStr)) {
throw new ApiException(I18nUtil._("下单无响应!"));
}
//4. 响应
return JSONUtil.parseObj(responseStr);
} catch (SDKException e) {
LakalaApiServiceImpl.log.error("transPreOrder error", e);
throw new ApiException(I18nUtil._("获取公众号绑定信息失败!"), e);
}
}
/**
* 拉卡拉预下单
* 参考https://o.lakala.com/#/home/document/detail?id=110
*
* @param merchantNo 商户号
* @param termNo 终端号
* @param xcxAppId 小程序appid
* @param openId openid
* @param orderId 订单号
* @param subject 订单标题
* @param totalAmount 订单金额
* @param notifyURL 回调地址
* @param requestIP 请求ip
* @param remark 备注
* @return
*/
@Override
public JSONObject transPreOrder(String merchantNo, String termNo, String xcxAppId, String openId, String orderId, String subject, String totalAmount, String notifyURL, String requestIP, String remark) {
// 1. 配置初始化
initLKLSDK();
if (StrUtil.isBlank(merchantNo)) {
merchantNo = this.merchantNo;
}
if (StrUtil.isBlank(termNo)) {
termNo = this.termNo;
}
//2. 装配数据
/*** 微信主扫场景示例 */
V3LabsTransPreorderRequest v3LabsTransPreorderWechatReq = new V3LabsTransPreorderRequest();
v3LabsTransPreorderWechatReq.setMerchantNo(merchantNo);
v3LabsTransPreorderWechatReq.setTermNo(termNo);
v3LabsTransPreorderWechatReq.setOutTradeNo(orderId);
v3LabsTransPreorderWechatReq.setSubject(subject);
//微信WECHAT 支付宝ALIPAY 银联UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING 拉卡拉支付账户LKLACC 网联小钱包NUCSPAY 京东钱包JD
v3LabsTransPreorderWechatReq.setAccountType("WECHAT");
// 41:NATIVEALIPAY云闪付支持京东白条分期51:JSAPI微信公众号支付支付宝服务窗支付银联JS支付翼支付JS支付拉卡拉钱包支付71:微信小程序支付 61:APP支付微信APP支付
v3LabsTransPreorderWechatReq.setTransType("51");
v3LabsTransPreorderWechatReq.setTotalAmount(totalAmount);
v3LabsTransPreorderWechatReq.setSettleType("1"); //0或者空常规结算方式如需接拉卡拉分账通需传1商户未开通分账之前切记不用上送此参数
v3LabsTransPreorderWechatReq.setNotifyUrl(notifyURL);
v3LabsTransPreorderWechatReq.setRemark(remark);
//地址位置信息
V3LabsTradeLocationInfo v3LabsTradePreorderLocationInfo = new V3LabsTradeLocationInfo(requestIP);
v3LabsTransPreorderWechatReq.setLocationInfo(v3LabsTradePreorderLocationInfo);
//微信主扫场景下 acc_busi_fields 域内容
V3LabsTradePreorderWechatBus wechatBus = new V3LabsTradePreorderWechatBus();
wechatBus.setSubAppid(xcxAppId); // 小程序appId
wechatBus.setUserId(openId); // 微信 openId
wechatBus.setDeviceInfo("WEB"); // 终端设备号(门店号或收银设备ID)注意PC网页或JSAPI支付请传WEB
v3LabsTransPreorderWechatReq.setAccBusiFields(wechatBus);
try {
log.info("拉卡拉预下单请求参数:{}", JSONUtil.toJsonStr(v3LabsTransPreorderWechatReq));
//3. 发送请求
String responseStr = LKLSDK.httpPost(v3LabsTransPreorderWechatReq);
log.info("拉卡拉预下单响应数据:{}", responseStr);
if (StrUtil.isBlank(responseStr)) {
throw new ApiException(I18nUtil._("下单无响应!"));
}
JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr);
// || !lakalaRespJSON.getStr("code").equals("BBS00000")
//4. 响应
return lakalaRespJSON;
} catch (SDKException e) {
log.error("拉卡拉支付出错:", e);
throw new ApiException(I18nUtil._("支付失败!"), e);
}
}
/**
* 聚合扫码-交易查询
@ -877,7 +753,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
Boolean success = lklLedgerEcService.updateByApplyId(updRecord);
if (success) {
// 更新商家入驻表的合同编号和签署地址更改状态
shopMchEntryService.updateMerchEntryLklEcNo(lklLedgerEc.getMch_id(), ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath);
shopMchEntryService.updateMerchantLklElectronicContractInfo(lklLedgerEc.getMch_id(), ecNo, paramsJSON.getStr("ecName"), lklLedgerEc.getResult_url(), ecCosFileUrl, eclklFilePath);
// TODO 商家电子合同签署完毕后收到异步通知触发拉卡拉商家进件重要环节
// 下一步等待拉卡拉系统审核和人工审核收到异步通知之后触发1e签宝的电子合同签署2新增分账接收方

View File

@ -8406,7 +8406,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
// 顺丰同城业务员给的店铺id
shopId = shopStoreSameCityTransportBase.getShop_id();
if (StrUtil.isBlank(shopId)) {
logger.error("请联系站长配置顺丰同城店铺ID");
logger.error("请联系顺丰同城配置店铺ID");
return null;
}

View File

@ -225,9 +225,6 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
// 商城订单状态2020-待配货/待出库审核
shopOrderInfoService.changeOrderStatus(shopOrderId, StateCode.ORDER_STATE_PICKING, 0, 0);
// 上传发货信息到微信
// wxOrderShippingService.uploadShippingInfoToWx(2, shopStoreSfOrder.getShop_order_id());
return Pair.of(true, "顺丰同城下单成功!");
}

View File

@ -181,17 +181,17 @@ public interface ShopMchEntryService {
Boolean updateMerchEntryStoreId(Long id, Integer storeId);
/**
* 更新拉卡拉入网电子合同合同名称签署COS地址, LKL文件相对路径
* 更新商户入驻信息的拉卡拉电子合同相关信息
*
* @param id
* @param lklEcNo
* @param lklEcName
* @param lklEcResultUrl
* @param ecDownloadUrl
* @param ecLklFilePath
* @return
* @param merchantId 商户入驻ID, 不能为空
* @param lklElectronicContractNo 拉卡拉电子合同编号
* @param lklElectronicContractName 拉卡拉电子合同名称
* @param lklElectronicContractResultUrl 拉卡拉电子合同结果URL
* @param contractDownloadUrl 合同下载地址
* @param lklElectronicContractFilePath 拉卡拉电子合同文件路径
* @return 更新成功返回 true, 失败返回 false
*/
Boolean updateMerchEntryLklEcNo(Long id, String lklEcNo, String lklEcName, String lklEcResultUrl, String ecDownloadUrl, String ecLklFilePath);
Boolean updateMerchantLklElectronicContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath);
/**
* 更新商家入驻申请的审批状态和审批备注

View File

@ -942,46 +942,108 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl<ShopMchEntryMapper,
.set("store_id", storeId));
}
// /**
// * 更新拉卡拉入网电子合同和签署地址
// *
// * @param id
// * @param lklEcNo
// * @param lklEcResultUrl
// * @param ecDownloadUrl
// * @param ecLklFilePath
// * @return
// */
// @Override
// public Boolean updateMerchEntryLklEcNo(Long id, String lklEcNo, String lklEcName, String lklEcResultUrl, String ecDownloadUrl, String ecLklFilePath) {
// if (ObjectUtil.isEmpty(id) && StrUtil.isBlank(lklEcNo)) {
// return false;
// }
//
// UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
// updateWrapper.eq("id", id);
// updateWrapper.set("lkl_ec_no", lklEcNo);
//
// if (StrUtil.isNotBlank(lklEcName)) {
// updateWrapper.set("lkl_ec_name", lklEcName);
// }
//
//
// if (StrUtil.isNotBlank(lklEcResultUrl)) {
// updateWrapper.set("lkl_ec_result_url", lklEcResultUrl);
// }
//
// if (StrUtil.isNotBlank(ecDownloadUrl)) {
// updateWrapper.set("contract_download_url", ecDownloadUrl);
//// updateWrapper.set("signed_status", CommonConstant.CONTRACT_SIGN_STA_FINISH);
// updateWrapper.set("has_ec_signed", CommonConstant.Enable);
// }
//
// if (StrUtil.isNotBlank(ecLklFilePath)) {
// updateWrapper.set("lkl_ec_file_path", ecLklFilePath);
// }
//
// return update(updateWrapper);
// }
/**
* 更新拉卡拉入网电子合同和签署地址
* 更新商户入驻信息的拉卡拉电子合同相关信息
*
* @param id
* @param lklEcNo
* @param lklEcResultUrl
* @param ecDownloadUrl
* @param ecLklFilePath
* @return
* @param merchantId 商户入驻ID, 不能为空
* @param lklElectronicContractNo 拉卡拉电子合同编号
* @param lklElectronicContractName 拉卡拉电子合同名称
* @param lklElectronicContractResultUrl 拉卡拉电子合同结果URL
* @param contractDownloadUrl 合同下载地址
* @param lklElectronicContractFilePath 拉卡拉电子合同文件路径
* @return 更新成功返回 true, 失败返回 false
*/
@Override
public Boolean updateMerchEntryLklEcNo(Long id, String lklEcNo, String lklEcName, String lklEcResultUrl, String ecDownloadUrl, String ecLklFilePath) {
if (ObjectUtil.isEmpty(id) && StrUtil.isBlank(lklEcNo)) {
public Boolean updateMerchantLklElectronicContractInfo(Long merchantId, String lklElectronicContractNo, String lklElectronicContractName, String lklElectronicContractResultUrl, String contractDownloadUrl, String lklElectronicContractFilePath) {
// 1. 参数校验: 确保merchantId和lklElectronicContractNo至少有一个不为空
if (ObjectUtil.isEmpty(merchantId) && StrUtil.isBlank(lklElectronicContractNo)) {
log.warn("商户ID和拉卡拉电子合同编号都为空, 无法更新");
return false;
}
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", id);
updateWrapper.set("lkl_ec_no", lklEcNo);
try {
// 2. 构建UpdateWrapper, 用于更新商户入驻信息
UpdateWrapper<ShopMchEntry> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", merchantId); // 设置更新条件: 商户ID
if (StrUtil.isNotBlank(lklEcName)) {
updateWrapper.set("lkl_ec_name", lklEcName);
// 3. 使用链式调用优化, 避免多层if嵌套
updateWrapper.set("lkl_ec_no", lklElectronicContractNo); // 设置拉卡拉电子合同编号
if (StrUtil.isNotBlank(lklElectronicContractName)) {
updateWrapper.set("lkl_ec_name", lklElectronicContractName); // 设置拉卡拉电子合同名称
}
if (StrUtil.isNotBlank(lklElectronicContractResultUrl)) {
updateWrapper.set("lkl_ec_result_url", lklElectronicContractResultUrl); // 设置拉卡拉电子合同结果URL
}
// 当合同下载地址不为空时, 更新合同下载地址和电子合同签署状态
if (StrUtil.isNotBlank(contractDownloadUrl)) {
updateWrapper.set("contract_download_url", contractDownloadUrl) // 设置合同下载地址
.set("has_ec_signed", CommonConstant.Enable); // 设置已签署电子合同
}
if (StrUtil.isNotBlank(lklElectronicContractFilePath)) {
updateWrapper.set("lkl_ec_file_path", lklElectronicContractFilePath); // 设置拉卡拉电子合同文件路径
}
// 4. 执行更新操作
boolean isUpdated = update(updateWrapper);
if (isUpdated) {
log.info("商户ID为 {} 的拉卡拉电子合同信息更新成功", merchantId);
} else {
log.error("商户ID为 {} 的拉卡拉电子合同信息更新失败", merchantId);
}
return isUpdated;
} catch (Exception e) {
// 5. 异常处理: 记录异常信息, 避免程序中断
log.error("更新商户ID为 {} 的拉卡拉电子合同信息时发生异常", merchantId, e);
throw new RuntimeException("更新商户拉卡拉电子合同信息失败", e); // 抛出运行时异常, 触发事务回滚
}
if (StrUtil.isNotBlank(lklEcResultUrl)) {
updateWrapper.set("lkl_ec_result_url", lklEcResultUrl);
}
if (StrUtil.isNotBlank(ecDownloadUrl)) {
updateWrapper.set("contract_download_url", ecDownloadUrl);
// updateWrapper.set("signed_status", CommonConstant.CONTRACT_SIGN_STA_FINISH);
updateWrapper.set("has_ec_signed", CommonConstant.Enable);
}
if (StrUtil.isNotBlank(ecLklFilePath)) {
updateWrapper.set("lkl_ec_file_path", ecLklFilePath);
}
return update(updateWrapper);
}
/**

View File

@ -2320,7 +2320,6 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
base.setStore_biz_state(storeBizState);
}
// 百度坐标系BD09经纬度 转出 火星坐标系GCJ02经纬度 因为数据库保存的经纬度统一是GCJ02经纬度所以需要转换
base = bd09ToGcj02Gps(base);

View File

@ -157,11 +157,8 @@ lakala:
#拉卡拉平台证书
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
#机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
org_code: 1951582
is_prod: false
# 拉卡拉拓客进件配置
tk:
#服务地址

View File

@ -158,11 +158,6 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
#机构代码
org_code: 1951582
#1
#商户号, 测试商户号未开通分账功能的8222900539908Q9
merchant_no: 82229007392000A
#终端号
term_no: D9296400
is_prod: false
# 拉卡拉拓客进件配置
tk:

View File

@ -167,10 +167,6 @@ lakala:
# lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer
# #机构代码
# org_code: 980688
# #商户号
# merchant_no: 8226330599900LN
# #终端号码M0780629B2B收银台 M0780798专业化扫码
# term_no: M0780798
#服务地址
server_url: https://test.wsmsd.cn/sit
#应用Id
@ -185,11 +181,6 @@ lakala:
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
#机构代码
org_code: 1951582
#1
#商户号, 测试商户号未开通分账功能的8222900539908Q9
merchant_no: 82229007392000A
#终端号
term_no: D9296400
is_prod: false
#拉卡拉拓客进件配置
tk:

View File

@ -161,11 +161,8 @@ lakala:
#拉卡拉平台证书
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
#机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
org_code: 1951582
is_prod: false
# 拉卡拉拓客进件配置
tk:
#服务地址

View File

@ -161,11 +161,8 @@ lakala:
#拉卡拉平台证书
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
#机构代码
org_code: 1
#商户号
merchant_no: 82229007392000A
#终端号
term_no: D9296400
org_code: 1951582
is_prod: false
# 拉卡拉拓客进件配置
tk:
#服务地址

View File

@ -115,13 +115,12 @@
<where>
<choose>
<when test="productName != null and productName != '' and keywords != null and keywords.size > 0">
AND (
AND
p.name LIKE CONCAT('%', #{productName}, '%')
OR
<foreach collection="keywords" item="keyword" separator="OR">
AND
<foreach collection="keywords" item="keyword" separator="OR" open="(" close=")">
p.keywords LIKE CONCAT('%', #{keyword}, '%')
</foreach>
)
</when>
<otherwise>
<if test="productName != null and productName != ''">
@ -129,11 +128,10 @@
</if>
<if test="keywords != null and keywords.size > 0">
AND (
<foreach collection="keywords" item="keyword" separator="OR">
AND
<foreach collection="keywords" item="keyword" separator="OR" open="(" close=")">
p.keywords LIKE CONCAT('%', #{keyword}, '%')
</foreach>
)
</if>
</otherwise>
</choose>