From 8e4133d57e2a232b70013a9f8c77cc0b62967d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E9=B9=8F=E8=BE=89?= <18322780655@163.com> Date: Tue, 13 Jun 2023 11:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0pos=20=E6=9C=BA=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MerchantOrderController.java | 12 +- .../job/CheckTransOrderStatusJob.java | 7 +- .../klk/controller/LaKaLaController.java | 18 -- .../platform/klk/service/LaKalaInterface.java | 23 --- .../klk/service/LkLPayServiceImpl.java | 52 +++++- .../klk/service/impl/LaKalaInterfaceImpl.java | 172 +----------------- 6 files changed, 68 insertions(+), 216 deletions(-) delete mode 100644 pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LaKalaInterface.java diff --git a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java index 06ed1c8..fa0a870 100644 --- a/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java +++ b/pluss-api-page/src/main/java/cn/pluss/platform/controller/MerchantOrderController.java @@ -82,7 +82,6 @@ public class MerchantOrderController { private final MerchantMenberRechargeService merchantMenberRechargeService; private final SxfPayService sxfPayService; private final RyxPayService ryxPayService; - private final LklPayService lklPayService; private final MerchantChannelStatusMapper merchantChannelStatusMapper; @Autowired private DeviceStockService deviceStockService; @@ -93,6 +92,11 @@ public class MerchantOrderController { @Setter(onMethod_ = {@Autowired, @Qualifier("ysPayOldService")}) private PayService ysPayOldService; + + + @Setter(onMethod_ = {@Autowired, @Qualifier("lkLPayService")}) + private PayService lklPayService; + // 微信支付无法确认支付结果状态 private String[] wechatPayNotSureResult = new String[]{"SYSTEMERROR", "USERPAYING", "BANKERROR"}; @@ -846,6 +850,10 @@ public class MerchantOrderController { case 4: result = ysPayOldService.tradeQuery(order,channel.getMerchantId()); break; + case 5: + result=lklPayService.tradeQuery(order,channel.getMerchantId()); + break; + } if(result != null){ @@ -908,7 +916,7 @@ public class MerchantOrderController { result = ysPayOldService.tradeQuery(order,channel.getMerchantId()); break; case 5: - //result = lklPayService.tradeQuery(order,channel.getMerchantId()); + result = lklPayService.tradeQuery(order,channel.getMerchantId()); } if(result != null){ diff --git a/pluss-manage-page/src/main/java/cn/pluss/platform/job/CheckTransOrderStatusJob.java b/pluss-manage-page/src/main/java/cn/pluss/platform/job/CheckTransOrderStatusJob.java index ef3dc0f..1dd94bb 100644 --- a/pluss-manage-page/src/main/java/cn/pluss/platform/job/CheckTransOrderStatusJob.java +++ b/pluss-manage-page/src/main/java/cn/pluss/platform/job/CheckTransOrderStatusJob.java @@ -46,6 +46,9 @@ public class CheckTransOrderStatusJob { @Setter(onMethod_ = {@Autowired, @Qualifier("ysPayOldService")}) private PayService ysPayOldService; + @Setter(onMethod_ = {@Autowired, @Qualifier("lkLPayService")}) + private PayService lklPayService; + /** * 检查待确认订单状态定时任务 5秒执行一次 */ @@ -116,7 +119,9 @@ public class CheckTransOrderStatusJob { //银盛 }else if(channel.getChannel() == 4){ result = ysPayOldService.tradeQuery(order, channel.getMerchantId()); - }else{ + }else if(channel.getChannel()==5){ + result=lklPayService.tradeQuery(order,channel.getMerchantId()); + }else { continue; } if(result != null){ diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java index 89034c3..bd365fc 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/controller/LaKaLaController.java @@ -22,20 +22,6 @@ public class LaKaLaController { @Resource LklPayService lklPayService; - @PostMapping("/lkl") - public void aa(@RequestBody TuoKeVo tuoKeVo){ - laKalaInterface.tuoKeAddMer(tuoKeVo); - } - - - @PostMapping("/jjkl") - public void jjkl(MultipartFile file){ -// try { -// laKalaInterface.laKaLaFileUpload(); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } - } @PostMapping("/jjkls") public void jjkls(){ laKalaInterface.ff(); @@ -45,10 +31,6 @@ public class LaKaLaController { laKalaInterface.createTuoKeInfo("244"); } - @PostMapping("/callBackToke") - public void callBackToke(@RequestBody Map map){ - laKalaInterface.tuoKeCallBack(map); - } @RequestMapping("/tradeCallBack") diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LaKalaInterface.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LaKalaInterface.java deleted file mode 100644 index 85f82b9..0000000 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LaKalaInterface.java +++ /dev/null @@ -1,23 +0,0 @@ -package cn.pluss.platform.klk.service; - -import cn.pluss.platform.klk.vo.OrganVo; -import cn.pluss.platform.klk.vo.TuoKeVo; - -import java.util.List; - -public interface LaKalaInterface { - /** - * 拉卡拉进件 - * */ - void laKaLaAddMer(LaKaLaVO laVO,String ip); - - /** - * 拓客进件 - * */ - void tuoKeAddMer(TuoKeVo tuoKeVo); - - /** - * 获取省市区县 - * */ - List getOrganCode(String code); -} diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LkLPayServiceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LkLPayServiceImpl.java index b4951b0..7b845ad 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LkLPayServiceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/LkLPayServiceImpl.java @@ -323,7 +323,57 @@ public class LkLPayServiceImpl implements PayService { @Override public JSONObject tradeQuery(MerchantOrder order, String mchId) { - return null; + + QueryWrapper baseQueyWrapper = new QueryWrapper<>(); + baseQueyWrapper.eq("merchantCode", order.getMerchantCode()); + MerchantBaseInfo baseInfo = merchantBaseInfoMapper.selectOne(baseQueyWrapper); + MsgException.checkNull(baseInfo, "商户基本信息错误"); + + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("merchant_code", order.getMerchantCode()); + queryWrapper.eq("channel", "5"); + queryWrapper.eq("user_no", LaKalaInterfaceImpl.userNo); + + MerchantBackLkl merchantBackLkl = merchantBackLklMapper.selectOne(queryWrapper); + MsgException.checkNull(merchantBackLkl, "进件信息不存在"); + String req_time = DateUtils.getSdfTimes(); + Long order_amt = changeY2F(order.getConsumeFee()); + + String body = "{\n" + + "\"req_time\":\"" + req_time + "\",\n" + + "\"version\":\"3.0\",\n" + + "\"out_org_code\":\"" + lakalaConfig.getAppid() + "\",\n" + + "\"req_data\":{\n" + + "\"merchant_no\":\"" + merchantBackLkl.getExternalCustomerNo() + "\",\n" + + "\"term_no\":\"" + merchantBackLkl.getTermNos() + "\",\n" + + "\"out_trade_no\":\"" + order.getOrderNumber() + "\"\n" + + "}\n" + + "}\n"; + + JSONObject result = new JSONObject(); + String response = lklPayService.req(body, "api/v3/labs/query/tradequery"); + if (ObjectUtil.isNotEmpty(response)) { + JSONObject object = JSONObject.parseObject(response); + if (object.containsKey("code") && "BBS00000".equals(object.getString("code"))) { + result.put("channelOrderNo", object.get("trade_no")); + result.put("payTime", DateUtils.parse(object.getString("trade_time"), "yyyyMMddHHmmss")); + result.put("transNo", object.get("log_no")); + result.put("code", ResultCode.SUCCESS.code()); + result.put("payStatus", "1"); + result.put("msg", "查询成功!"); + result.put("buyerId", object.get("user_id1")); + return result; + } else { + result.put("code", ResultCode.FAIL.code()); + result.put("msg", object.getString("msg")); + return result; + } + } + log.error("==============>【拉卡拉】交易订单查询失败<=================="); + result.put("code", ResultCode.FAIL.code()); + result.put("msg", "订单查询异常"); + return result; } @Override diff --git a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java index f407abb..80a5d75 100644 --- a/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java +++ b/pluss-service-bundle/src/main/java/cn/pluss/platform/klk/service/impl/LaKalaInterfaceImpl.java @@ -9,7 +9,6 @@ import cn.pluss.platform.channel.ys.impl.YSAuditServiceV3; import cn.pluss.platform.dto.AccountDTO; import cn.pluss.platform.entity.*; import cn.pluss.platform.exception.MsgException; -import cn.pluss.platform.klk.LaKaLaUtility; import cn.pluss.platform.klk.LakalaConfig; import cn.pluss.platform.klk.service.*; import cn.pluss.platform.klk.util.RSAUtil; @@ -38,7 +37,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; @@ -50,7 +48,7 @@ import java.util.*; @Service @Slf4j -public class LaKalaInterfaceImpl implements LaKalaInterface { +public class LaKalaInterfaceImpl { @Resource LklPayService lklPayService; @Resource @@ -151,69 +149,19 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { /** * 拉卡拉模式进件 */ - @Override - public void laKaLaAddMer(LaKaLaVO laVO, String ip) { - String apiPath = "/api/v2/mms/openApi/addMer"; - JSONObject object1 = new JSONObject(); - JSONObject object2 = new JSONObject(); - object1.put("reqData", object2); - object2.put("version", "1.0"); //接口版本号 - object2.put("orderNo", laVO.getOrderNo()); //订单编号(便于后续跟踪排查问题及核对报文) - object2.put("posType", laVO.getPosType()); //进件POS类型 —按接入系统做控制,参见 【POS类型字典表】 - object2.put("orgCode", "1"); //机构代码 (合作方在拉卡拉的标识,请联系业务员) - object2.put("merRegName", laVO.getMerRegName()); //商户注册名称 - object2.put("merRegDistCode", laVO.getMerRegDistCode()); //地区代码,参看地区文档] - object2.put("merRegAddr", laVO.getMerRegAddr()); //商户详细地址 - object2.put("mccCode", laVO.getMccCode()); //商户MCC编号 - if (null != laVO.getMerBlisName() || null != laVO.getMerBlis()) { //小微商户可不传,其它必传,为空则小微商户 - object2.put("merBlisName", laVO.getMerBlisName()); //营业执照名称 - object2.put("merBlis", laVO.getMerBlis()); //营业执照号 - object2.put("merBlisStDt", laVO.getMerBlisStDt()); //营业执照开始日期 - object2.put("merBlisExpDt", "1.0"); //营业执照有效期 - } - - object2.put("merBusiContent", laVO.getMerBusiContent()); //参看【经营内容字典表】文档 - object2.put("larName", laVO.getLarName()); //商户法人姓名 - object2.put("larIdType", laVO.getLarIdType()); //支持其他证件类型,见参【证件类型字典表】 - object2.put("larIdcard", laVO.getLarIdcard()); //法人身份证号码 - object2.put("larIdcardStDt", laVO.getLarIdcardStDt()); //法人身份证开始日期 yyyy-MM-dd - object2.put("larIdcardExpDt", laVO.getLarIdcardExpDt()); //法人身份证有效期 yyyy-MM-dd - object2.put("merContactMobile", laVO.getMerContactMobile()); //商户联系人手机号码 - object2.put("merContactName", laVO.getMerContactName()); //商户联系人 - - object2.put("openningBankCode", laVO.getOpenningBankCode()); //可根据结算卡信息进行查询,(仅支持对私结算卡查询)参见【卡BIN信息查询】 - object2.put("openningBankName", laVO.getOpenningBankName()); //可根据结算卡信息进行查询,(仅支持对私结算卡查询)参见【卡BIN信息查询】 - object2.put("clearingBankCode", laVO.getClearingBankCode()); //可根据结算卡信息进行查询,(仅支持对私结算卡查询)参见【卡BIN信息查询】 - object2.put("acctNo", laVO.getAcctNo()); //结算账户账号 - object2.put("acctName", laVO.getAcctName()); //结算账户名称 - object2.put("acctTypeCode", laVO.getAcctTypeCode()); //结算账户性质 57对公 58 对私 - object2.put("settlePeriod", laVO.getSettlePeriod()); //结算周期 参见【结算周期表】 - object2.put("retUrl", "1.0"); //回调地址url - object2.put("feeData", laVO.getFeeData()); //费率信息集合 参看下方【费率信息】 -// orderService.createOrder(object1.toString(),apiPath,""); - } /** * 拉卡拉拓客进件 * */ public void createTuoKeInfo(String userId) { - - - // UserApp userapp=userAppService.getById(userId); // MsgException.checkNull(userapp,"商户基础信息不完整"); // // MsgException.checkBlank(userapp.getEmail(),"商户邮箱不允许为空"); - - MerchantBaseInfo merchantBaseInfo = mbiService.getMerchantBaseInfoByUserId(userId); - - - - IdCard idCard = idCardService.getCertIdCard(userId); //获取法人身份证信息 MsgException.checkNull(idCard,"商户基本信息不完整"); @@ -442,128 +390,11 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { /** * 参数组装 * */ - @Override - public void tuoKeAddMer(TuoKeVo tuoKeVo) { - JSONObject object1 = new JSONObject(); - JSONObject object2 = new JSONObject(); - object1.put("userNo", userNo); //合作机构信息 由拓客SAAS提供 - object1.put("email", tuoKeVo.getEmail()); //商户邮箱 -// object1.put("busiCode", "PAPER_CODE");//业务类型 BPOS:传统POS, ZPOS:电签,ZPOS4G:4G电签,SUPER_POS:智能pos,B_WIZARD:蓝精灵,PAPER_CODE:码牌,WECHAT_PAY:专业化扫码,KLYX:云音箱,QRCODE:收款王,MONEY_BOX:收钱宝盒根据业务开放取值 - object1.put("busiCode", "PAPER_CODE");//业务类型 BPOS:传统POS, ZPOS:电签,ZPOS4G:4G电签,SUPER_POS:智能pos,B_WIZARD:蓝精灵,PAPER_CODE:码牌,WECHAT_PAY:专业化扫码,KLYX:云音箱,QRCODE:收款王,MONEY_BOX:收钱宝盒根据业务开放取值 - object1.put("merRegName", tuoKeVo.getMerRegName()); //商户注册名称 不能少于七个中文 - object1.put("merType", tuoKeVo.getMerType()); //商户注册类型 TP_MERCHANT:企业 TP_PERSONAL:⼩微个⼈ - object1.put("merName", tuoKeVo.getMerName()); //商户名称(经营名称) 不能少于七个中文 - object1.put("merAddr", tuoKeVo.getMerAddr()); //去掉省,市区后的详细地址 - object1.put("provinceCode", tuoKeVo.getProvinceCode()); //省代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 - object1.put("cityCode", tuoKeVo.getCityCode()); // 市代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 - object1.put("countyCode", tuoKeVo.getCountyCode()); // 区县代码 通过【地区信息→获取地区查询】接口获取 对应 code字段 - object1.put("licenseName", tuoKeVo.getLicenseName()); //营业执照名称 - object1.put("licenseNo", tuoKeVo.getLicenseNo()); //营业执照号码 ⼩微商户可不传, 其他必传 - object1.put("licenseDtStart", tuoKeVo.getLicenseDtStart()); //营业执照开始时间⼩微商户可不传, 其他必传,格式yyyy-MM-dd - object1.put("licenseDtEnd", tuoKeVo.getLicenseDtEnd()); //⼩微商户可不传, 其他必传,格式yyyy-MM-dd - - object1.put("latitude", "108.94647"); //经度 进件所在地址经度error - object1.put("longtude", "34.34727"); //纬度 进件所在地址纬度 error - object1.put("source", tuoKeVo.getSource()); //进件来源 APP: app H5: h5 - object1.put("businessContent", tuoKeVo.getBusinessContent()); //商户经营内容 - object1.put("larName", tuoKeVo.getLarName()); //法⼈姓名 - object1.put("larIdType", tuoKeVo.getLarIdType()); //法⼈证件类型 01 身份证 暂时只支持身份证 - object1.put("larIdCard", tuoKeVo.getLarIdCard()); //法⼈证件号码 - object1.put("larIdCardStart", tuoKeVo.getLarIdCardStart()); //法⼈证件开始⽇期 格式yyyy-MM-dd - object1.put("larIdCardEnd", tuoKeVo.getLarIdCardEnd()); //法⼈证件过期时间 格式yyyy-MM-dd - - object1.put("contactMobile", tuoKeVo.getContactMobile()); //商户联系⼈⼿机号码 - object1.put("contactName", tuoKeVo.getContactName()); //商户联系⼈姓名 - object1.put("openningBankCode", tuoKeVo.getOpenningBankCode()); //结算账户开户⾏号 通过【银行列表查询】接口获取 对应 branchBankNo字段 - object1.put("openningBankName", tuoKeVo.getOpenningBankName()); //结算账户开户⾏名称 通过【银行列表查询】接口获取 对应 branchBankName字段 - object1.put("clearingBankCode", tuoKeVo.getClearingBankCode()); //结算账户清算⾏号 通过【银行列表查询】接口获取 对应 clearNo字段 - object1.put("settleProvinceCode", tuoKeVo.getSettleProvinceCode()); //结算信息省份名称 通过【地区信息→获取银行地区查询】接口获取 对应 code字段 - object1.put("settleProvinceName", tuoKeVo.getSettleProvinceName()); //结算信息省份代码 通过【地区信息→获取银行地区查询】接口获取 对应 name字段 - object1.put("settleCityCode", tuoKeVo.getSettleCityCode()); //结算信息城市名称 通过【地区信息→获取银行地区查询】接口获取 对应 code字段 - object1.put("settleCityName", tuoKeVo.getSettleCityName()); //结算信息城市代码 通过【地区信息→获取银行地区查询】接口获取 对应 name字段 - object1.put("accountNo", tuoKeVo.getAccountNo()); //结算人银行卡号 - - - object1.put("accountName", tuoKeVo.getAccountName()); //结算人账户名称 - object1.put("accountType", tuoKeVo.getAccountType()); //结算账户类型 57 对公 58 对私 -// object1.put("accountIdType",tuoKeVo.getUserNo()); //结算⼈证件类型 为空同法⼈ - object1.put("accountIdCard", tuoKeVo.getAccountIdCard()); //结算⼈证件号码 - - - Set feesSet = new HashSet<>(); - FeesSetVo f = new FeesSetVo(); - f.setFeeCode(tuoKeVo.getFeeCode()); - f.setFeeValue(0.038d); - feesSet.add(f); - - object2.put("termNum", tuoKeVo.getTermNum()); //终端数量 1-5 最⼤ 5个终端 - object2.put("fees", feesSet); //费率集合 - object2.put("mcc", tuoKeVo.getMcc()); //商户MCC编号 通过 【商户类别查询→查询小类】接口获取 对应 code字段 -// object2.put("activityId", tuoKeVo.getActivityId()); //归属活动信息 由拓客SAAS分配 - object2.put("activityId","37"); //归属活动信息 由拓客SAAS分配 - object1.put("bizContent", object2); //业务扩展信息 参⻅ 业务扩展信息 - -// -// Set attchmentsVoSet = new HashSet<>(); -// AttchmentsVo attchmentsVo = new AttchmentsVo(); -// attchmentsVo.setId(tuoKeVo.getId()); -// attchmentsVo.setType(tuoKeVo.getType()); -// attchmentsVoSet.add(attchmentsVo); -// object1.put("attchments", attchmentsVoSet); //附件信息集合 参⻅ 附件信息 - object1.put("attchments", tuoKeVo.getSet()); //附件信息集合 参⻅ 附件信息 - object1.put("settleType", tuoKeVo.getSettleType()); //结算类型 D0秒到 D1次日结算 - - System.out.println("请求报文: " + object1); - /**获取拓客accessToken**/ - Map map = getToken(); - String result=""; - try{ - result = cn.hutool.http.HttpRequest.post(tuoKeMerchat) - .header("Authorization", "bearer " + map.get("access_token")).header("content-type", "application/json") - .body(object1.toString()).execute().body(); - Map arry = (Map) JSONArray.parse(result); - if (String.valueOf(arry.get("status")).equals("WAIT_AUDI")){ - PlussMerchantLklEntity plussMerchantLklEntity =new PlussMerchantLklEntity(); - plussMerchantLklEntity.setMerchantId(tuoKeVo.getMerchantCode()); - plussMerchantLklEntity.setMerchantlkl(String.valueOf(arry.get("merchantNo"))); - plussMerchantLklEntity.setType("0"); - merchantLklService.save(plussMerchantLklEntity); - }else { - - } - }catch (Exception e){ - Map arry = (Map) JSONArray.parse(result); - new MsgException(String.valueOf(arry.get("message"))); - } - - - } @Resource YSAuditServiceV3 auditServiceV3; /** * 进件回调 * */ - public String tuoKeCallBack(Map map){ -// String data = LaKaLaUtility.decrypt(map.get("data").toString()); -// Map arryMap = (Map) JSONArray.parse(data); -// System.out.println(arryMap); -// if (String.valueOf(arryMap.get("status")).equals("SUCCESS")){ -// CallBackVo callBackVo =new CallBackVo(); -// callBackVo.setStatus("00"); -// callBackVo.setNote(String.valueOf(arryMap.get("remark"))); -// callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); -// callBackVo.setJsoon(data); -// auditServiceV3.lklResultHandle(callBackVo); -// } else if (String.valueOf(arryMap.get("status")).equals("FAILURE")) { -// CallBackVo callBackVo =new CallBackVo(); -// callBackVo.setStatus("90"); -// callBackVo.setNote(String.valueOf(arryMap.get("remark"))); -// callBackVo.setSysFlowId(String.valueOf(arryMap.get("customerNo"))); -// callBackVo.setJsoon(data); -// auditServiceV3.lklResultHandle(callBackVo); -// } - return "200"; - } /** * 获取拓客accessToken @@ -687,7 +518,6 @@ public class LaKalaInterfaceImpl implements LaKalaInterface { /** * 获取地区信息 */ - @Override public List getOrganCode(String code) { /**获取拓客accessToken**/ RestTemplate client = new RestTemplate();