From 5f796adc02ec4807107a166862804fe1e9425c3c Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Sun, 27 Apr 2025 10:23:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8B=89=E5=8D=A1=E6=8B=89?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E7=9B=B8=E5=85=B3=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/LakalaPayServiceImpl.java | 5 +- mall-shop/pom.xml | 8 + .../suisung/mall/shop/components/IpUtil.java | 2 +- .../lakala/controller/LakalaController.java | 11 +- .../lakala/controller/LklTkController.java | 4 +- ...aPayService.java => LakalaApiService.java} | 11 +- .../service/LklLedgerMemberService.java | 8 + .../LklLedgerMerReceiverBindService.java | 9 + .../service/LklLedgerReceiverService.java | 18 ++ ...iceImpl.java => LakalaApiServiceImpl.java} | 167 ++++++++++++------ .../impl/LklLedgerMemberServiceImpl.java | 18 ++ .../LklLedgerMerReceiverBindServiceImpl.java | 24 ++- .../impl/LklLedgerReceiverServiceImpl.java | 61 ++++++- ...klTkService.java => LklTkServiceImpl.java} | 15 +- .../admin/ShopPageBaseController.java | 5 + .../src/main/resources/bootstrap-local.yml | 2 +- .../src/main/resources/bootstrap-prod.yml | 40 +++-- .../payKey/lakala/dev/OP00000003_cert.cer | 21 +++ .../lakala/dev/OP00000003_private_key.pem | 28 +++ .../payKey/lakala/dev/lkl_notify_cert_v2.cer | 25 +++ .../resources/payKey/lakala/prod/api_cert.cer | 22 +++ .../payKey/lakala/prod/api_private_key.pem | 28 +++ .../payKey/lakala/prod/lkl_platform.cer | 25 +++ 23 files changed, 477 insertions(+), 80 deletions(-) rename mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/{LakalaPayService.java => LakalaApiService.java} (94%) rename mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/{LakalaPayServiceImpl.java => LakalaApiServiceImpl.java} (82%) rename mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/{LklTkService.java => LklTkServiceImpl.java} (98%) create mode 100644 mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_cert.cer create mode 100644 mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_private_key.pem create mode 100644 mall-shop/src/main/resources/payKey/lakala/dev/lkl_notify_cert_v2.cer create mode 100644 mall-shop/src/main/resources/payKey/lakala/prod/api_cert.cer create mode 100644 mall-shop/src/main/resources/payKey/lakala/prod/api_private_key.pem create mode 100644 mall-shop/src/main/resources/payKey/lakala/prod/lkl_platform.cer diff --git a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java index e964a00d..a7e1c528 100644 --- a/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java +++ b/mall-pay/src/main/java/com/suisung/mall/pay/service/impl/LakalaPayServiceImpl.java @@ -449,11 +449,10 @@ public class LakalaPayServiceImpl implements LakalaPayService { //3. 发送请求 String responseStr = LKLSDK.httpPost(req); + // {'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}} JSONObject lakalaRespJSON = JSONUtil.parseObj(responseStr); if (lakalaRespJSON == null || !lakalaRespJSON.getStr("retCode").equals("000000")) { throw new ApiException(I18nUtil._(lakalaRespJSON.getStr("retMsg"))); -// responseStr="{'retCode':'000000','retMsg':'申请已受理,请等待审核结果','respData':{'version':'1.0','orderNo':'KFPT20230223181025407788734','orgCode':'1','applyId':681201215598657536}}"; -// lakalaRespJSON = JSONUtil.parseObj(responseStr); } paramsJSON.set("apply_id", lakalaRespJSON.getByPath("respData.applyId")); @@ -468,7 +467,7 @@ public class LakalaPayServiceImpl implements LakalaPayService { return CommonResult.success(null, "提交成功,待审核中!"); } catch (SDKException e) { log.error("分账申请失败:", e); - throw new ApiException(I18nUtil._("申请失败!"), e); + throw new ApiException(I18nUtil._("分账申请失败!"), e); } } diff --git a/mall-shop/pom.xml b/mall-shop/pom.xml index 6f04abb6..b21aa70c 100644 --- a/mall-shop/pom.xml +++ b/mall-shop/pom.xml @@ -357,6 +357,10 @@ bootstrap.yml bootstrap-${profiles.active}.yml **/*.xml + **/*.crt + **/*.pem + **/*.p12 + **/*.cer @@ -381,6 +385,10 @@ ttf ttc + p12 + cer + pem + pfx diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java b/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java index 576411e9..6c4ef10b 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/components/IpUtil.java @@ -32,7 +32,7 @@ public class IpUtil implements ApplicationRunner { try { return searcher.search(ip); } catch (Exception e) { - log.error("IP 格式错误:{}", e); + log.error("IP:{} 格式错误:{}", ip, e); return null; } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LakalaController.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LakalaController.java index 25a965d3..8eb44567 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LakalaController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LakalaController.java @@ -11,7 +11,7 @@ package com.suisung.mall.shop.lakala.controller; import cn.hutool.json.JSONObject; import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.service.impl.BaseControllerImpl; -import com.suisung.mall.shop.lakala.service.LakalaPayService; +import com.suisung.mall.shop.lakala.service.LakalaApiService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.util.Base64Utils; @@ -28,7 +28,7 @@ import java.io.IOException; public class LakalaController extends BaseControllerImpl { @Resource - private LakalaPayService lakalaPayService; + private LakalaApiService lakalaPayService; @ApiOperation(value = "本地文件转base64", notes = "本地文件转base64") @RequestMapping(value = "/file2base64", method = RequestMethod.POST) @@ -37,6 +37,13 @@ public class LakalaController extends BaseControllerImpl { return str; } + + @ApiOperation(value = "获取银行卡的 BIN 信息", notes = "获取银行卡的 BIN 信息") + @RequestMapping(value = "/bankCardBin", method = RequestMethod.POST) + public JSONObject bankCardBin(@RequestBody JSONObject paramsJSON) { + return lakalaPayService.getBankCardBin(paramsJSON.getStr("bankCardNo")); + } + @ApiOperation(value = "商户分账业务开通申请", notes = "商户分账业务开通申请") @RequestMapping(value = "/ledger/applyLedgerMer", method = RequestMethod.POST) public CommonResult ledgerApplyLedgerMer(@RequestBody JSONObject paramsJSON) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LklTkController.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LklTkController.java index cac3f141..dcda37f2 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LklTkController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/controller/LklTkController.java @@ -9,7 +9,7 @@ package com.suisung.mall.shop.lakala.controller; import com.suisung.mall.common.service.impl.BaseControllerImpl; -import com.suisung.mall.shop.lakala.service.impl.LklTkService; +import com.suisung.mall.shop.lakala.service.impl.LklTkServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,7 +24,7 @@ import javax.annotation.Resource; public class LklTkController extends BaseControllerImpl { @Resource - private LklTkService lklTkService; + private LklTkServiceImpl lklTkService; @ApiOperation(value = "请求获取token(商户进件)", notes = "请求获取token(商户进件)") @RequestMapping(value = "/token", method = RequestMethod.POST) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaPayService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java similarity index 94% rename from mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaPayService.java rename to mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java index 2166834e..b5334ce4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaPayService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java @@ -14,7 +14,7 @@ import com.suisung.mall.common.api.CommonResult; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public interface LakalaPayService { +public interface LakalaApiService { Boolean initLKLSDK(); @@ -134,5 +134,14 @@ public interface LakalaPayService { */ JSONObject applyLedgerMerReceiverBindNotify(HttpServletRequest request); + /** + * 获取银行卡信息 + * 参考:https://o.lakala.com/#/home/document/detail?id=387 + * + * @param bankCardNo + * @return + */ + JSONObject getBankCardBin(String bankCardNo); + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java index 4c11850f..38b607b4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java @@ -13,6 +13,14 @@ import com.suisung.mall.core.web.service.IBaseService; public interface LklLedgerMemberService extends IBaseService { + /** + * 根据银联商户号查询记录 + * + * @param merCupNo + * @return + */ + LklLedgerMember getByMerCupNo(String merCupNo); + /** * 根据银联商户号新增或修改记录 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java index 002e4e03..238f54f1 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java @@ -21,6 +21,15 @@ public interface LklLedgerMerReceiverBindService extends IBaseService response = RestTemplateHttpUtil.sendPostFormDataBackEntity(buildLklServiceUrl(urlPath), header, formData, JSONObject.class); +// if (ObjectUtil.isEmpty(response) || response.getStatusCode() != HttpStatus.OK) { +// return null; +// } +// JSONObject result = response.getBody(); +// if (result == null) { +// return null; +// } + + return null; + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMemberServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMemberServiceImpl.java index 8a7b7b3b..f4dbb35d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMemberServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMemberServiceImpl.java @@ -26,6 +26,24 @@ import java.util.List; public class LklLedgerMemberServiceImpl extends BaseServiceImpl implements LklLedgerMemberService { + /** + * 根据银联商户号查询记录 + * + * @param merCupNo + * @return + */ + @Override + public LklLedgerMember getByMerCupNo(String merCupNo) { + if (StrUtil.isBlank(merCupNo)) { + return null; + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("mer_cup_no", merCupNo); + queryWrapper.orderByAsc("id"); + return getOne(queryWrapper); + } + /** * 根据银联商户号新增或修改记录 * diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMerReceiverBindServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMerReceiverBindServiceImpl.java index f9613a26..d0e097e6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMerReceiverBindServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerMerReceiverBindServiceImpl.java @@ -12,6 +12,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.lakala.mapper.LklLedgerMerReceiverBindMapper; @@ -30,13 +31,14 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("mer_cup_no", record.getMer_cup_no()); - queryWrapper.eq("receiver_no", record.getReceiver_no()); + queryWrapper.eq("mer_cup_no", record.getMer_cup_no()) + .eq("receiver_no", record.getReceiver_no()) + .eq("audit_status", CommonConstant.Enable); List existsRecordList = list(queryWrapper); if (!CollectionUtil.isEmpty(existsRecordList) && existsRecordList.get(0) != null @@ -46,7 +48,21 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("mer_cup_no", merCupNo) + .eq("receiver_no", receiverNo) + .eq("audit_status", CommonConstant.Enable); + + + return getOne(queryWrapper); } /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java index 80b3d4d3..09808878 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerReceiverServiceImpl.java @@ -9,8 +9,10 @@ package com.suisung.mall.shop.lakala.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.modules.lakala.LklLedgerReceiver; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.lakala.mapper.LklLedgerReceiverMapper; @@ -40,9 +42,14 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl existsRecordList = list(queryWrapper); - if (!CollectionUtil.isEmpty(existsRecordList) + if (CollectionUtil.isNotEmpty(existsRecordList) && existsRecordList.get(0) != null && existsRecordList.get(0).getId() > 0) { // update @@ -50,6 +57,56 @@ public class LklLedgerReceiverServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("receiver_no", receiverNo).eq("status", CommonConstant.Enable); + queryWrapper.orderByAsc("id"); + + return getOne(queryWrapper); + } + + /** + * 根据条件查询记录 + * + * @param LicenseNo + * @param ContactMobile + * @param platformId + * @return + */ + @Override + public LklLedgerReceiver getByCondition(String LicenseNo, String ContactMobile, Long platformId) { + if (ObjectUtil.isEmpty(platformId)) { + platformId = 0L; + } + if (StrUtil.isBlank(LicenseNo) && StrUtil.isBlank(ContactMobile)) { + return null; + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotBlank(LicenseNo)) { + queryWrapper.eq("license_no", LicenseNo); + } + if (StrUtil.isNotBlank(ContactMobile)) { + queryWrapper.eq("contact_mobile", ContactMobile); + } + + queryWrapper.eq("platform_id", platformId) + .eq("status", CommonConstant.Enable); + + return getOne(queryWrapper); } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java similarity index 98% rename from mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkService.java rename to mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java index ed23b640..781fc7b9 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklTkServiceImpl.java @@ -36,10 +36,13 @@ import java.util.HashMap; import java.util.Map; @Service -public class LklTkService { +public class LklTkServiceImpl { - private static final Logger log = LoggerFactory.getLogger(LklTkService.class); + private static final Logger log = LoggerFactory.getLogger(LklTkServiceImpl.class); @Value("${lakala.tk.server_url}") + private String tkServerUrl; + + @Value("${lakala.server_url}") private String serverUrl; @Value("${lakala.tk.client_id}") @@ -48,6 +51,9 @@ public class LklTkService { @Value("${lakala.tk.client_secret}") private String clientSecret; + @Value("${lakala.org_code}") + private String orgCode; + @Value("${spring.profiles.active}") private String profile; @@ -58,6 +64,10 @@ public class LklTkService { private RedisService redisService; protected String buildLklTkUrl(String urlPath) { + return tkServerUrl + urlPath; + } + + protected String buildLklServiceUrl(String urlPath) { return serverUrl + urlPath; } @@ -406,4 +416,5 @@ public class LklTkService { return jsonObject; } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageBaseController.java index 885ef5b9..7bccf062 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageBaseController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageBaseController.java @@ -24,6 +24,7 @@ import com.suisung.mall.shop.page.service.ShopPageBaseService; import com.suisung.mall.shop.product.service.ShopPageUserFormService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -44,6 +45,7 @@ import java.util.Map; * @author Xinze * @since 2021-06-11 */ +@Slf4j @Api(tags = "后台页面管理") @RestController @RequestMapping("/admin/shop/shop-page-base") @@ -230,6 +232,8 @@ public class ShopPageBaseController extends BaseControllerImpl { throw new ApiUserException(I18nUtil._("用户信息异常!")); } + log.info("ShopPageBaseController 用户信息:{}", JSONUtil.toJsonStr(user)); + ModelAndView view = new ModelAndView("diy"); Integer subsite_id = user.getSite_id(); @@ -244,6 +248,7 @@ public class ShopPageBaseController extends BaseControllerImpl { //Integer tpl_id = getParameter("tpl_id", 1012); Integer app_type = 3; + log.info("ShopPageBaseController 模版修改参数:{},{},{},{}", subsite_id, store_id, tpl_id, app_type); shopPageAppService.getModel(view, subsite_id, store_id, tpl_id, app_type); Map res = new HashMap<>(); diff --git a/mall-shop/src/main/resources/bootstrap-local.yml b/mall-shop/src/main/resources/bootstrap-local.yml index 772c1e31..2a6dfea9 100644 --- a/mall-shop/src/main/resources/bootstrap-local.yml +++ b/mall-shop/src/main/resources/bootstrap-local.yml @@ -157,7 +157,7 @@ lakala: lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer #机构代码 org_code: 1 - #商户号 + #商户号, 测试商户号(未开通分账功能的):8222900539908Q9 merchant_no: 82229007392000A #终端号 term_no: D9296400 diff --git a/mall-shop/src/main/resources/bootstrap-prod.yml b/mall-shop/src/main/resources/bootstrap-prod.yml index 32b090b4..4a18fc04 100644 --- a/mall-shop/src/main/resources/bootstrap-prod.yml +++ b/mall-shop/src/main/resources/bootstrap-prod.yml @@ -152,24 +152,42 @@ sf-express: enable: 2 #拉卡拉进件配置 lakala: + # #服务地址 + # server_url: https://s2.lakala.com + # #应用Id + # app_id: OP10000439 + # #商户证书序列号 + # serial_no: 1737359895636 + # #商户证书 + # api_cert_path: payKey/lakala/prod/api_cert.cer + # #商户私钥 + # api_pri_key_path: payKey/lakala/prod/api_private_key.pem + # #拉卡拉平台证书 + # 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://s2.lakala.com + server_url: https://test.wsmsd.cn/sit #应用Id - app_id: OP10000439 + app_id: OP00000003 #商户证书序列号 - serial_no: 1737359895636 + serial_no: 00dfba8194c41b84cf #商户证书 - api_cert_path: payKey/lakala/prod/api_cert.cer + api_cert_path: payKey/lakala/dev/OP00000003_cert.cer #商户私钥 - api_pri_key_path: payKey/lakala/prod/api_private_key.pem + api_pri_key_path: payKey/lakala/dev/OP00000003_private_key.pem #拉卡拉平台证书 - lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer + lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer #机构代码 - org_code: 980688 - #商户号 - merchant_no: 8226330599900LN - #终端号码,M0780629(B2B收银台) M0780798(专业化扫码) - term_no: M0780798 + org_code: 1 + #商户号, 测试商户号(未开通分账功能的):8222900539908Q9 + merchant_no: 82229007392000A + #终端号 + term_no: D9296400 #拉卡拉拓客进件配置 tk: #服务地址 diff --git a/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_cert.cer b/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_cert.cer new file mode 100644 index 00000000..f85afd02 --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_cert.cer @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIJAN+6gZTEG4TPMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNV +BAYTAlVTMREwDwYDVQQIEwhzaGFuZ2hhaTERMA8GA1UEBxMIc2hhbmdoYWkxFDAS +BgNVBAMUC2xha2FsYV8yMDIxMB4XDTIxMDYxODA3MjEzNFoXDTMxMDYxOTA3MjEz +NFowSTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCHNoYW5naGFpMREwDwYDVQQHEwhz +aGFuZ2hhaTEUMBIGA1UEAxQLbGFrYWxhXzIwMjEwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQDvDBZyHUDndAGxrIcsCV2njhNO3vCEZotTaWYSYwtDvkcA +b1EjsBFabXZaKigpqFXk5XXNI3NIHP9M8XKzIgGvc65NpLAfRjVql8JiTvLyYd1g +IUcOXMInabu+oX7dQSI1mS8XzqaoVRhDZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si ++hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbWdhZ+NHwitnQwAJTLBFvfk28INM39G7XO +sXdVLfsooFdglVTOHpNuRiQAj9gShCCNrpGsNQxDiJIxE43qRsNsRwigyo6DPJk/ +klgDJa417E2wgP8VrwiXparO4FMzOGK15quuoD7DAgMBAAGjTDBKMAkGA1UdEwQC +MAAwEQYJYIZIAYb4QgEBBAQDAgTwMAsGA1UdDwQEAwIFoDAdBgNVHSUEFjAUBggr +BgEFBQcDAgYIKwYBBQUHAwEwDQYJKoZIhvcNAQELBQADggEBAI21YYAlH+Pc1ISv +nbQrGqL8suGL0Hh/8hGaFfrJEJEKr9OeC8jElUhck2MTmfu/Y1lB7r8RBrhGPXi4 +kTXmB6ADs/9+ezNW3WXyFj7fhs3JcZ3mo33T9wyQySDKd//JrEtrTsc/s2PZ602y +qNmPomXSzjrlugaMyC7LI9sR44mc7sQnchjHoxrQFD5/usTFW72UQfYCORsQWYMt +0KKEyAcpRL51RE3xbX1WDtduFYGP62PbwLAn2nCL/j1wlF5hltWj7sditWqKgso5 +F8BTffn2Bb0RdsNxqwMy1cTPrWLeXVOqMDu3ge7hvoav8lZKTjk5Kmqhs7wNAQXK +mg9qSwo= +-----END CERTIFICATE----- diff --git a/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_private_key.pem b/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_private_key.pem new file mode 100644 index 00000000..7d95886c --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/dev/OP00000003_private_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDvDBZyHUDndAGx +rIcsCV2njhNO3vCEZotTaWYSYwtDvkcAb1EjsBFabXZaKigpqFXk5XXNI3NIHP9M +8XKzIgGvc65NpLAfRjVql8JiTvLyYd1gIUcOXMInabu+oX7dQSI1mS8XzqaoVRhD +ZQWhXcJW9bxMulgnzvk0Ggw07AjGF7si+hP/Va8SJmN7EJwfQq6TpSxR+WdIHpbW +dhZ+NHwitnQwAJTLBFvfk28INM39G7XOsXdVLfsooFdglVTOHpNuRiQAj9gShCCN +rpGsNQxDiJIxE43qRsNsRwigyo6DPJk/klgDJa417E2wgP8VrwiXparO4FMzOGK1 +5quuoD7DAgMBAAECggEBANhmWOt1EAx3OBFf3f4/fEjylQgRSiqRqg8Ymw6KGuh4 +mE4Md6eW/B6geUOmZjVP7nIIR1wte28M0REWgn8nid8LGf+v1sB5DmIwgAf+8G/7 +qCwd8/VMg3aqgQtRp0ckb5OV2Mv0h2pbnltkWHR8LDIMwymyh5uCApbn/aTrCAZK +NXcPOyAn9tM8Bu3FHk3Pf24Er3SN+bnGxgpzDrFjsDSHjDFT9UMIc2WdA3tuMv9X +3DDn0bRCsHnsIw3WrwY6HQ8mumdbURk+2Ey3eRFfMYxyS96kOgBC2hqZOlDwVPAK +TPtS4hoq+cQ0sRaJQ4T0UALJrBVHa+EESgRaTvrXqAECgYEA+WKmy9hcvp6IWZlk +9Q1JZ+dgIVxrO65zylK2FnD1/vcTx2JMn73WKtQb6vdvTuk+Ruv9hY9PEsf7S8gH +STTmzHOUgo5x0F8yCxXFnfji2juoUnDdpkjtQK5KySDcpQb5kcCJWEVi9v+zObM0 +Zr1Nu5/NreE8EqUl3+7MtHOu1TMCgYEA9WM9P6m4frHPW7h4gs/GISA9LuOdtjLv +AtgCK4cW2mhtGNAMttD8zOBQrRuafcbFAyU9de6nhGwetOhkW9YSV+xRNa7HWTeI +RgXJuJBrluq5e1QGTIwZU/GujpNaR4Qiu0B8TodM/FME7htsyxjmCwEfT6SDYlke +MzTbMa9Q0DECgYBqsR/2+dvD2YMwAgZFKKgNAdoIq8dcwyfamUQ5mZ5EtGQL2yw4 +8zibHh/LiIxgUD1Kjk/qQgNsX45NP4iOc0mCkrgomtRqdy+rumbPTNmQ0BEVJCBP +scd+8pIgNiTvnWpMRvj7gMP0NDTzLI3wnnCRIq8WAtR2jZ0Ejt+ZHBziLQKBgQDi +bEe/zqNmhDuJrpXEXmO7fTv3YB/OVwEj5p1Z/LSho2nHU3Hn3r7lbLYEhUvwctCn +Ll2fzC7Wic1rsGOqOcWDS5NDrZpUQGGF+yE/JEOiZcPwgH+vcjaMtp0TAfRzuQEz +NzV8YGwxB4mtC7E/ViIuVULHAk4ZGZI8PbFkDxjKgQKBgG8jEuLTI1tsP3kyaF3j +Aylnw7SkBc4gfe9knsYlw44YlrDSKr8AOp/zSgwvMYvqT+fygaJ3yf9uIBdrIilq +CHKXccZ9uA/bT5JfIi6jbg3EoE9YhB0+1aGAS1O2dBvUiD8tJ+BjAT4OB0UDpmM6 +QsFLQgFyXgvDnzr/o+hQJelW +-----END PRIVATE KEY----- diff --git a/mall-shop/src/main/resources/payKey/lakala/dev/lkl_notify_cert_v2.cer b/mall-shop/src/main/resources/payKey/lakala/dev/lkl_notify_cert_v2.cer new file mode 100644 index 00000000..12723ebe --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/dev/lkl_notify_cert_v2.cer @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIGAXRTgcMnMA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT +AkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK +DA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW +YWxpZGF0aW9uIENBMB4XDTIwMTAxMDA1MjQxNFoXDTMwMTAwODA1MjQxNFowZTEL +MAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx +FzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu +Q09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt1zHL54HiI8d2sLJ +lwoQji3/ln0nsvfZ/XVpOjuB+1YR6/0LdxEDMC/hxI6iH2Rm5MjwWz3dmN/6BZeI +gwGeTOWJUZFARo8UduKrlhC6gWMRpAiiGC8wA8stikc5gYB+UeFVZi/aJ0WN0cpP +JYCvPBhxhMvhVDnd4hNohnR1L7k0ypuWg0YwGjC25FaNAEFBYP9EYUyCJjE//9Z7 +sMzHR9SJYCqqo6r9bOH9G6sWKuEp+osuAh+kJIxJMHfipw7w3tEcWG0hce9u/el4 +cYJtg8/PPMVoccKmeCzMvarr7jdKP4lenJbtwlgyfs+JgNu60KMUJH8RS72wC9NY +uFz09wIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo +dJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE +BwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh +a2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFJ2Kx9YZfmWpkKFnC33C0r5D +K3rFMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA +A4IBAQBZoeU0XyH9O0LGF9R+JyGwfU/O5amoB97VeM+5n9v2z8OCiIJ8eXVGKN9L +tl9QkpTEanYwK30KkpHcJP1xfVkhPi/cCMgfTWQ5eKYC7Zm16zk7n4CP6IIgZIqm +TVGsIGKk8RzWseyWPB3lfqMDR52V1tdA1S8lJ7a2Xnpt5M2jkDXoArl3SVSwCb4D +AmThYhak48M++fUJNYII9JBGRdRGbfJ2GSFdPXgesUL2CwlReQwbW4GZkYGOg9LK +CNPK6XShlNdvgPv0CCR08KCYRwC3HZ0y1F0NjaKzYdGNPrvOq9lA495ONZCvzYDo +gmsu/kd6eqxTs/JwdaIYr4sCMg8Z +-----END CERTIFICATE----- diff --git a/mall-shop/src/main/resources/payKey/lakala/prod/api_cert.cer b/mall-shop/src/main/resources/payKey/lakala/prod/api_cert.cer new file mode 100644 index 00000000..0ddadbf3 --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/prod/api_cert.cer @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIGAZSCuCxUMA0GCSqGSIb3DQEBBQUAMGAxFDASBgNVBAMM +C0xBS0FMQS1MQU9QMQswCQYDVQQGEwJDTjEXMBUGA1UECgwOTGFrYWxhIENvLixM +dGQxDzANBgNVBAsMBkxLTC1ZRjERMA8GA1UEBwwIc2hhbmdoYWkwHhcNMjUwMTIw +MDc1ODE1WhcNMzUwMTIwMDc1ODE1WjBgMRQwEgYDVQQDDAtMQUtBTEEtTEFPUDEL +MAkGA1UEBhMCQ04xFzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMQ8wDQYDVQQLDAZM +S0wtWUYxETAPBgNVBAcMCHNoYW5naGFpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAksIeSx7qKgmI7yFSglMBsty3ZoyC8qsCbLSWANwUPYikd5TPojB8 +43wJGJxOBOtDV8FL55q0zX3eQOE4BOVGcDMMUsZsAhy4ST46ne4e8CFVFHmM6TON +tS5Kla0hLjETpUjYStR8En534uoLYvnNPAI1CvmvWiUo+QGd3yc2SmyE+XB/8bKk +wiLjAauGyfb8m2BgCaoBIai+0IImInX2Xb85L0TAu0eYC6fX1T8BCupA4EVOpvLL +cM5P8nye4mibgS46lzlve1soC73W1vGAHnMw4epzk89NHKIMYEmZPoCU6jKuDbR0 +K73QwU0QZt9MSJnTdnWt/PeUJ8PzkhV0RQIDAQABo2AwXjAPBgNVHRMECDAGAQH/ +AgEAMB8GA1UdIwQYMBaAFG1rabju/OE7B3cPuQFZhs77ku5qMB0GA1UdDgQWBBRt +a2m47vzhOwd3D7kBWYbO+5LuajALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQAD +ggEBACzdFsulR2X6HPKX+D2VU7msJyXRVWrAi06SV/zds8lPYUwSTEksbpWejD5L +ABftyv5DL7bU66vL80she2r5d+DbY+gB2hAgRHW+ymzfAqQJOcpciAXZHxc4orf+ +V4YtmLIRT0lg9rfU93D4S9fPe+HHMAmKFQXjnZNiv7DOar62MP0RrI74hWevaZao +gK8cMspxUW7H9VFvJvgGZRTRXVFHIvaPOpvlsdCYfUDomH2sWVLIiaSQoAVXxoET +c0HJB0er7Df2PSBSF/8bl9cVmp5HDB2YgtlfNKaFneGNN2WQtO3gl56heud8hGAe +F4YZkE8ML2mh83QqVSY4AkfWo+0= +-----END CERTIFICATE----- diff --git a/mall-shop/src/main/resources/payKey/lakala/prod/api_private_key.pem b/mall-shop/src/main/resources/payKey/lakala/prod/api_private_key.pem new file mode 100644 index 00000000..68896c6c --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/prod/api_private_key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCSwh5LHuoqCYjv +IVKCUwGy3LdmjILyqwJstJYA3BQ9iKR3lM+iMHzjfAkYnE4E60NXwUvnmrTNfd5A +4TgE5UZwMwxSxmwCHLhJPjqd7h7wIVUUeYzpM421LkqVrSEuMROlSNhK1HwSfnfi +6gti+c08AjUK+a9aJSj5AZ3fJzZKbIT5cH/xsqTCIuMBq4bJ9vybYGAJqgEhqL7Q +giYidfZdvzkvRMC7R5gLp9fVPwEK6kDgRU6m8stwzk/yfJ7iaJuBLjqXOW97WygL +vdbW8YAeczDh6nOTz00cogxgSZk+gJTqMq4NtHQrvdDBTRBm30xImdN2da3895Qn +w/OSFXRFAgMBAAECggEACN60qAOpUXscDJ/t9bSAoMfYSdlqPLJ7RgiwHEMw8fsl +PZj/56SYl8MyZYtk58U0X8RuCwR9swHNggxar2kQFc3wC7y0YHhN5xdcwZjXw9mv +47no+1tDUFUI6vz4yWrr7gx2DifDi/aa1lsg7w18CwlzHUO0BnXCgTJI0Wj0ThEj +k3AxCv41a4dwQW2EejaikMdzkWv7p9cG1cjJocBvaURg8RZrw2v1lqXx9iZb5Ywv +XkQP907AAnUn40bLgQ7hyUruxjKPzIM5ZjIER6PTtvGk1Uzt7Kj2YZZ4egYp0PXv +5fEJIcppeIyGfatEZ4U/ZmfA0L7+xtSY8kICndPSTQKBgQDHy5n6N6JdYyyrVFH/ +x4xTHwyiReOzw5Pz2K9uSxZM6pmDWfZexAxkpMycQotZYOk6GYDqml5XAiXAYVKn +i9FCEC6PnFRZ/v7TN3ag3k8eXwLrQu589+X0ppOizIp01IQ8AWAUr1tA/UcqLt8T +5XSHnoEDo9SY9Aw1kskY5TWoowKBgQC8CwRxfFNWk3Na+U4HgvVv8CSrB7rbkLUI +L11jNKFx4xms8uIjBrIencHsRAazoG73wMsY7MzbPtJKIFcXmSKjLFClJ6luN9np +1tYkWXF/nyo6L2IhCG7N28sxYa56XTR0lDnfkW+LiI7iaC1Z+XUtxoY3ZIL+0Dbv +wCfYS2I19wKBgQCtoRjtRJALzHYzZpHkUQx36BHYrBgYTy0yyuqaVRLKQU6rwfDD +pmiGxlkyqvni8L9+yE8qkoDN6IXaTDnCdVWjreBo2ZjMpTfbYuXrI4dqg3NL9NzB +KcZj+Kdw4YSpx04rv546G7KYJgREentPFSdR/MNt4GCPk/dQT4IH6pnZNQKBgQC2 +esKPFqURCPoSuIf+RhnDzPjoeBHe7KihDsXDddmN2WKbMQA+GUtU5qa/jqwqOHA3 +QQJWZ8XMpUQQ5x1dKyAv1NtVyg1jhhOUFwWsNJgtztl9qWnCwJo2byrZ+v8Eg9pZ +n1YiHNJwR87Q62PHQotyJossyf9NI+WL958zCMR/tQKBgCTDIKnfjq4riVLEOLxl +oGzGMowFTp9v8dyvrYj71C0ZDzLg/EH1tTQ4K46GIXJfyZvIATAIisC6R37KNmUA +w8f6YAOSS+iZBSZo36DoGIqJTYGyYgQDDftMsj/gxthgwRO5Zhwbn63ayJkWYyPy +C1RJ27LO8qX+3/s5pV7G9GlO +-----END PRIVATE KEY----- diff --git a/mall-shop/src/main/resources/payKey/lakala/prod/lkl_platform.cer b/mall-shop/src/main/resources/payKey/lakala/prod/lkl_platform.cer new file mode 100644 index 00000000..c24d19c2 --- /dev/null +++ b/mall-shop/src/main/resources/payKey/lakala/prod/lkl_platform.cer @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIGAXUrc4b4MA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNVBAYT +AkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRcwFQYDVQQK +DA5MYWthbGEgQ28uLEx0ZDEqMCgGA1UEAwwhTGFrYWxhIE9yZ2FuaXphdGlvbiBW +YWxpZGF0aW9uIENBMB4XDTIwMTAxNTA4NDk1MloXDTMwMTAxMzA4NDk1MlowZTEL +MAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcx +FzAVBgNVBAoMDkxha2FsYSBDby4sTHRkMRkwFwYDVQQDDBBBUElHVy5MQUtBTEEu +Q09NMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAXZw9lupWcFXouC +Nhm0DQT47Zf4KOIRF8rqT8Ps3pYzT8odROJ8rq4P+lciGrg29czpqrRM22yQktFr +itvcM7JlE6jFbGH3rycnvGvhRYU/j1N9k0ozm8oVwmKX357/OtGzNivBECGSnU9L +Bkp4Nm9M1K4cOwEuZ0xsQEthZjQYF0mDpnlWmVJL5i1Lq834atN2qrb/mzMHBNtD +JnqRV7rPL39lKpe7LJiitsC2JuW1UbWZZU1NNwA/rz2d83C+KD1DLJ0+sMYY2Q3T +OQ4BPAowDEwOH7XAXrHM/0kRm+ZeIFlwevEGIQWmMt1Ogz+AW4Iq0slINc4wOINK +vH9tHwIDAQABo4HVMIHSMIGSBgNVHSMEgYowgYeAFCnH4DkZPR6CZxRn/kIqVsMo +dJHpoWekZTBjMQswCQYDVQQGEwJDTjEQMA4GA1UECAwHQmVpSmluZzEQMA4GA1UE +BwwHQmVpSmluZzEXMBUGA1UECgwOTGFrYWxhIENvLixMdGQxFzAVBgNVBAMMDkxh +a2FsYSBSb290IENBggYBaiUALIowHQYDVR0OBBYEFIya0Yc4OSBer55JLyA0AYe9 +m8mTMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUA +A4IBAQCBEwOlk3mXigNv94Drn3dcaY2ml/y+8yNpAIuUhuBE00WFoqEX5lOatFy5 +fzdXuC12lBVQ8SjSm3aH7k2X0eXqDzkOHiur2ZBRKmJ++J4TeenuSUOjSIbQK/DT +vxaqFUjYwFSVCyizpy7wfU4wKt+jOuFb9LyULJ9lkM1dV9Kh7Lmd9+nlJYYuPEPU +LJkkVZqSALSiiJudXnTwlISjZTXEAkJpdIlMw+hvPTAkoG95B95M+OV/uLbItGK+ +qT4+RHWo8EbBDPQYo6J4QYHOxRlfMoGBMyrz6XDt7ELLmT7ld4aE02w6KQPfK3gq +kLDT+/STozvaNmXzBJh7J6KqxJBH +-----END CERTIFICATE----- \ No newline at end of file