清理拉卡拉多余的接口
This commit is contained in:
parent
eaa03106d6
commit
83792e4222
@ -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 = "获取支付密码")
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
#终端号码,M0780629(B2B收银台) M0780798(专业化扫码)
|
||||
term_no: M0780798
|
||||
# #商户号
|
||||
# merchant_no: 8226330599900LN
|
||||
# #终端号码,M0780629(B2B收银台) M0780798(专业化扫码)
|
||||
# term_no: M0780798
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 聚合扫码-交易查询
|
||||
*
|
||||
|
||||
@ -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:NATIVE((ALIPAY,云闪付支持,京东白条分期)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 商家电子合同签署完毕后,收到异步通知,触发拉卡拉商家进件(重要环节)
|
||||
// 下一步,等待拉卡拉系统审核,和人工审核,收到异步通知之后,触发1、e签宝的电子合同签署,2、新增分账接收方
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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, "顺丰同城下单成功!");
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 更新商家入驻申请的审批状态和审批备注
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -2320,7 +2320,6 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl<ShopStoreBaseMappe
|
||||
base.setStore_biz_state(storeBizState);
|
||||
}
|
||||
|
||||
|
||||
// 百度坐标系BD09经纬度 转出 火星坐标系GCJ02经纬度 (因为数据库保存的经纬度统一是GCJ02经纬度,所以需要转换 )
|
||||
base = bd09ToGcj02Gps(base);
|
||||
|
||||
|
||||
@ -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:
|
||||
#服务地址
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -167,10 +167,6 @@ lakala:
|
||||
# lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer
|
||||
# #机构代码
|
||||
# org_code: 980688
|
||||
# #商户号
|
||||
# merchant_no: 8226330599900LN
|
||||
# #终端号码,M0780629(B2B收银台) 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:
|
||||
|
||||
@ -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:
|
||||
#服务地址
|
||||
|
||||
@ -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:
|
||||
#服务地址
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user