mitao
2025-11-17 5398047ebefeb3a63224d8d840b31cf62b575fb5
汇付进件对接
3个文件已修改
201 ■■■■■ 已修改文件
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/ElectronicLedgerController.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/account/controller/ElectronicLedgerController.java
@@ -111,7 +111,7 @@
            System.out.println("验证码:"+userWithdrawalReq.getCode());
            userWithdrawalReq.setCopy1(userWithdrawalReq.getCopy1().replaceAll(" ","+"));
            userWithdrawalReq.setCopy2(userWithdrawalReq.getCopy2().replaceAll(" ","+"));
            // 用户进件 TODO
            // 用户进件
            Map<String, Object> resultMap = douGongBasicDataBiz.userBasicDataIndv(userWithdrawalReq);
            String respCode = (String) resultMap.get("resp_code");
            //CusApplicationResp cusApplicationResp = CusApplicationExample.create(userWithdrawalReq);
@@ -125,20 +125,17 @@
            userWithdrawal.setImgUrlOne(userWithdrawalReq.getIdCardReversePicture());
            userWithdrawal.setIdCardFrontPicture(userWithdrawalReq.getCopy1());
            userWithdrawal.setIdCardReversePicture(userWithdrawalReq.getCopy2());
            userWithdrawal.setCusId((String) resultMap.get("huifu_id"));
            userWithdrawalService.insert(userWithdrawal);
            //调用汇付业务入驻接口 todo
            userWithdrawal.setHuiFuId((String) resultMap.get("huifu_id"));
            //调用汇付业务入驻接口
            Map<String, Object> map = douGongBasicDataBiz.userBusinessOpen(userWithdrawal);
            if (!"200".equals((String) map.get("resp_code"))){
            if (!"200".equals(map.get("resp_code"))){
                return ResultUtil.error((String) map.get("resp_desc"));
            }
            UserWithdrawal userWithdrawal1 = new UserWithdrawal();
            userWithdrawal1.setId(userWithdrawal.getId());
            BeanUtils.copyProperties(cusApplicationResp, userWithdrawal1);
            userWithdrawalService.updateById(userWithdrawal1);
            String tokenNo = (String) map.get("token_no");
            userWithdrawal.setTokenNo(tokenNo);
            userWithdrawalService.insert(userWithdrawal);
            // 开通电子账簿
            BalanceAcctReq balanceAcctReq = new BalanceAcctReq();
/*          BalanceAcctReq balanceAcctReq = new BalanceAcctReq();
            balanceAcctReq.setCusId(userWithdrawal1.getCusId());
            balanceAcctReq.setOutRequestNo(ToolUtil.getRandomString(32));
            balanceAcctReq.setPassword(password);
@@ -151,7 +148,7 @@
            electronicLedger.setPassword(SecureUtil.md5(password));
            electronicLedger.setRelAcctNo(cusApplicationResp.getRelAcctNo());
            electronicLedger.setUserType(1);
            electronicLedgerService.insert(electronicLedger);
            electronicLedgerService.insert(electronicLedger);*/
            // 绑卡 存卡
            UserBankAccount userBankAccount = new UserBankAccount();
            userBankAccount.setBankAcctType("1");
@@ -188,11 +185,11 @@
            bankCardService.insert(bankCard);
            UserBankAccountReq userBankAccountReq = new UserBankAccountReq();
/*            UserBankAccountReq userBankAccountReq = new UserBankAccountReq();
            BeanUtils.copyProperties(userBankAccount, userBankAccountReq);
            System.err.println(userWithdrawalReq.getCode());
            userBankAccountReq.setCusId(cusApplicationResp.getCusId());
            userBankAccountReq.setCode(userWithdrawalReq.getCode());
            userBankAccountReq.setCode(userWithdrawalReq.getCode());*/
            return ResultUtil.success();
        }catch (Exception e){
            log.error("用户进件失败", e);
@@ -222,6 +219,8 @@
                                                 String copy2,
                                                 String code,
                                                 String bankCode,
                                                 String bankCardProvinceCode,
                                                 String bankCardCityCode,
                                                 HttpServletRequest request){
        try {
            Integer driverId = userInfoService.getUserIdFormRedis(request);
@@ -249,72 +248,71 @@
            userWithdrawal.setBankName(bankName);
            userWithdrawal.setCode(code);
            userWithdrawal.setBankCode(bankCode);
            CusApplicationResp renew = CusApplicationExample.renew(userWithdrawal);
            userWithdrawal.setBankCardProvinceCode(bankCardProvinceCode);
            userWithdrawal.setBankCardCityCode(bankCardCityCode);
            //CusApplicationResp renew = CusApplicationExample.renew(userWithdrawal);
            Map<String, Object> resultMap = douGongBasicDataBiz.userBasicDataIndvModify(userWithdrawal);
            log.info("修改个人用户进件信息返回:{}",renew);
            if("succeeded".equals(renew.getApplicationStatus())){
                userWithdrawal1.setIdCardFrontPicture(copy1);
                userWithdrawal1.setIdCardReversePicture(copy2);
                userWithdrawal1.setCertificateCode(certificateCode);
                userWithdrawal1.setCertificateName(certificateName);
                userWithdrawal1.setCertificateExpireTime(certificateExpireTime);
                userWithdrawal1.setOpenAccountName(openAccountName);
                userWithdrawal1.setBankCardCode(bankCardCode);
                userWithdrawal1.setPhone(phone);
                userWithdrawal1.setBankName(bankName);
                userWithdrawal1.setImgUrl(idCardFrontPicture);
                userWithdrawal1.setImgUrlOne(idCardReversePicture);
                userWithdrawalService.updateById(userWithdrawal1);
                int count = userBankAccountService.selectCount(new EntityWrapper<UserBankAccount>()
                        .eq("bankCardCode", bankCardCode).eq("userId",driverId).eq("userType",1).eq("status",1));
                System.out.println(count);
                if(count<1){
                    UserBankAccount userBankAccount = new UserBankAccount();
                    userBankAccount.setBankAcctType("1");
                    userBankAccount.setOutRequestNo(ToolUtil.getRandomString(32));
                    userBankAccount.setUserType(1);
                    userBankAccount.setCreateTime(new Date());
                    userBankAccount.setBankCardCode(userWithdrawal.getBankCardCode());
                    userBankAccount.setBankCode(userWithdrawal.getBankCode());
                    userBankAccount.setBankBranchCode(userWithdrawal.getBankBranchCode());
                    userBankAccount.setPhone(userWithdrawal.getPhone());
                    userBankAccount.setUserId(driverId);
                    userBankAccount.setBankName(userWithdrawal.getBankName());
                    userBankAccountService.insert(userBankAccount);
                    BankCard bankCard = new BankCard();
                    bankCard.setDriverId(userWithdrawal.getUserId());
                    bankCard.setBankAcctType("1");
                    bankCard.setOutRequestNo(ToolUtil.getRandomString(32));
                    bankCard.setInsertTime(new Date());
                    bankCard.setCode(userWithdrawal.getBankCardCode());
                    bankCard.setBankCode(userWithdrawal.getBankCode());
                    bankCard.setBankBranchCode(userWithdrawal.getBankBranchCode());
                    bankCard.setBank(userWithdrawal.getBankName());
                    bankCard.setPhone(userWithdrawal.getPhone());
                    bankCard.setName(userWithdrawal.getOpenAccountName());
                    bankCard.setIfDefault(true);
                    bankCardService.insert(bankCard);
                }
                return ResultUtil.success();
            if (!"200".equals(resultMap.get("resp_code"))){
                return ResultUtil.error((String) resultMap.get("resp_desc"));
            }
            if("failed".equals(renew.getApplicationStatus())){
                List<FailureMsgParam> failureMsgs = renew.getFailureMsgs();
                if(failureMsgs != null && failureMsgs.size()>0){
                    return ResultUtil.error(failureMsgs.get(0).getReason());
                }
            //调用用户业务入驻修改
            Map<String, Object> map = douGongBasicDataBiz.userBusinessOpenModify(userWithdrawal);
            if (!"200".equals(map.get("resp_code"))){
                return ResultUtil.error((String) map.get("resp_desc"));
            }
            userWithdrawal1.setIdCardFrontPicture(copy1);
            userWithdrawal1.setIdCardReversePicture(copy2);
            userWithdrawal1.setCertificateCode(certificateCode);
            userWithdrawal1.setCertificateName(certificateName);
            userWithdrawal1.setCertificateExpireTime(certificateExpireTime);
            userWithdrawal1.setOpenAccountName(openAccountName);
            userWithdrawal1.setBankCardCode(bankCardCode);
            userWithdrawal1.setPhone(phone);
            userWithdrawal1.setBankName(bankName);
            userWithdrawal1.setImgUrl(idCardFrontPicture);
            userWithdrawal1.setImgUrlOne(idCardReversePicture);
            userWithdrawal1.setHuiFuId((String) resultMap.get("huifu_id"));
            userWithdrawal1.setTokenNo((String) map.get("token_no"));
            userWithdrawalService.updateById(userWithdrawal1);
            int count = userBankAccountService.selectCount(new EntityWrapper<UserBankAccount>()
                    .eq("bankCardCode", bankCardCode).eq("userId",driverId).eq("userType",1).eq("status",1));
            System.out.println(count);
            if(count<1){
                UserBankAccount userBankAccount = new UserBankAccount();
                userBankAccount.setBankAcctType("1");
                userBankAccount.setOutRequestNo(ToolUtil.getRandomString(32));
                userBankAccount.setUserType(1);
                userBankAccount.setCreateTime(new Date());
                userBankAccount.setBankCardCode(userWithdrawal.getBankCardCode());
                userBankAccount.setBankCode(userWithdrawal.getBankCode());
                userBankAccount.setBankBranchCode(userWithdrawal.getBankBranchCode());
                userBankAccount.setPhone(userWithdrawal.getPhone());
                userBankAccount.setUserId(driverId);
                userBankAccount.setBankName(userWithdrawal.getBankName());
                userBankAccountService.insert(userBankAccount);
                BankCard bankCard = new BankCard();
                bankCard.setDriverId(userWithdrawal.getUserId());
                bankCard.setBankAcctType("1");
                bankCard.setOutRequestNo(ToolUtil.getRandomString(32));
                bankCard.setInsertTime(new Date());
                bankCard.setCode(userWithdrawal.getBankCardCode());
                bankCard.setBankCode(userWithdrawal.getBankCode());
                bankCard.setBankBranchCode(userWithdrawal.getBankBranchCode());
                bankCard.setBank(userWithdrawal.getBankName());
                bankCard.setPhone(userWithdrawal.getPhone());
                bankCard.setName(userWithdrawal.getOpenAccountName());
                bankCard.setIfDefault(true);
                bankCardService.insert(bankCard);
            }
            return ResultUtil.success();
        }catch (UpyztException e) {
        }catch (Exception e) {
            e.printStackTrace();
            String message = e.getMessage();
            return ResultUtil.error(message);
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr();
        }
    }
@@ -334,7 +332,7 @@
                return ResultUtil.tokenErr();
            }
            UserInfo userInfo = userInfoService.selectById(id);
            List<UserWithdrawal> userId = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>().eq("phone", userInfo.getPhone()));
            List<UserWithdrawal> userId = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>().eq("phone", userInfo.getPhone()).eq("type", 1));
            if(userId.size()==0){
                return ResultUtil.success("yes");
            }
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/DouGongBasicDataBiz.java
@@ -28,7 +28,7 @@
@Component
public class DouGongBasicDataBiz {
    @Autowired
    private HuiFuProperties huiFuProperties;
    private static HuiFuProperties huiFuProperties;
    /**
     * 个人用户基本信息开户
@@ -99,7 +99,7 @@
        // 请求日期
        paramsInfo.put("req_date", DateUtil.format(new Date(),"yyyyMMdd"));
        // 汇付客户Id
        paramsInfo.put("huifu_id", userWithdrawal.getCusId());
        paramsInfo.put("huifu_id", userWithdrawal.getHuiFuId());
        String[] certificateExpireDateArr = userWithdrawal.getCertificateExpireTime().split(",");
        String startDateStr = certificateExpireDateArr[0];
        // 个人证件有效期开始日期
@@ -138,7 +138,7 @@
        // 2.组装请求参数
        Map<String, Object> paramsInfo = new HashMap<>();
        // 汇付ID
        paramsInfo.put("huifu_id", userWithdrawal.getCusId());
        paramsInfo.put("huifu_id", userWithdrawal.getHuiFuId());
        // 请求流水号
        paramsInfo.put("req_seq_id", RequestSeqUtil.generateForHuiFu());
        // 请求日期
@@ -147,7 +147,7 @@
        paramsInfo.put("upper_huifu_id", huiFuProperties.getUpperHuifuId());
        //// 结算信息配置
        //paramsInfo.put("settle_config", "{\"settle_cycle\":\"D1\",\"min_amt\":\"0.01\",\"remained_amt\":\"10.00\",\"settle_abstract\":\"结算摘要\",\"out_settle_flag\":\"2\",\"settle_batch_no\":\"300\",\"fixed_ratio\":\"2\"}");
        //// 结算卡信息
        // 结算卡信息
        JSONObject cardInfo = new JSONObject();
        cardInfo.put("card_type", "1");
        cardInfo.put("card_name", userWithdrawal.getBindAcctName());
@@ -181,7 +181,7 @@
     * @return
     * @throws Exception
     */
    public Map<String, Object> userBusinessOpenModify(UserWithdrawalReq userWithdrawalReq) throws Exception {
    public Map<String, Object> userBusinessOpenModify(UserWithdrawal userWithdrawal) throws Exception {
        // 1. 数据初始化,填入对应的商户配置
        MerConfig merConfig = new MerConfig();
        merConfig.setProcutId(huiFuProperties.getProductId());
@@ -192,24 +192,40 @@
        // 2.组装请求参数
        Map<String, Object> paramsInfo = new HashMap<>();
        // 汇付ID
        paramsInfo.put("huifu_id", "6666000105765113");
        paramsInfo.put("huifu_id", userWithdrawal.getHuiFuId());
        // 请求流水号
        paramsInfo.put("req_seq_id", RequestSeqUtil.generateForHuiFu());
        // 请求日期
        paramsInfo.put("req_date", DateUtil.format(new Date(),"yyyyMMdd"));
        // 渠道商/商户汇付Id
        paramsInfo.put("upper_huifu_id", "6666000003084836");
        // 乐接活配置当合作平台为乐接活,必填
        paramsInfo.put("ljh_data", "test");
        // 汇薪云配置当合作平台为汇薪云,必填
        paramsInfo.put("hxy_data", "test");
        // 结算信息配置
        paramsInfo.put("settle_config", "{\"settle_cycle\":\"D1\",\"min_amt\":\"0.01\",\"remained_amt\":\"10.00\",\"settle_abstract\":\"结算摘要\",\"out_settle_flag\":\"2\",\"settle_batch_no\":\"300\",\"fixed_ratio\":\"2\"}");
        paramsInfo.put("upper_huifu_id", huiFuProperties.getUpperHuifuId());
        // 结算卡信息
        paramsInfo.put("card_info", "{\"card_type\":\"0\",\"card_name\":\"交通银行股份有限公司\",\"card_no\":\"6217001210064762121\",\"prov_id\":\"310000\",\"area_id\":\"310100\",\"branch_code\":\"105305264815\",\"cert_type\":\"00\",\"cert_no\":\"110101197003077513\",\"cert_validity_type\":\"0\",\"cert_begin_date\":\"20210806\",\"cert_end_date\":\"20410806\",\"mp\":\"15556622368\"}");
        JSONObject cardInfo = new JSONObject();
        cardInfo.put("card_type", "1");
        cardInfo.put("card_name", userWithdrawal.getBindAcctName());
        cardInfo.put("card_no", userWithdrawal.getBankCardCode());
        cardInfo.put("prov_id", userWithdrawal.getBankCardProvinceCode());
        cardInfo.put("area_id", userWithdrawal.getBankCardCityCode());
        cardInfo.put("cert_type", "00");
        String[] certificateExpireDateArr = userWithdrawal.getCertificateExpireTime().split(",");
        String startDateStr = certificateExpireDateArr[0];
        // 个人证件有效期开始日期
        cardInfo.put("cert_begin_date", startDateStr.replace("-", ""));
        // 个人证件有效期截止日期
        String endDateStr = certificateExpireDateArr[1];
        if (!"长期".equals(endDateStr)) {
            String formatEndDate = endDateStr.replace("-", "");
            cardInfo.put("cert_end_date", formatEndDate);
            // 个人证件有效期类型
            cardInfo.put("cert_validity_type", "0");
        }else {
            // 个人证件有效期类型
            cardInfo.put("cert_validity_type", "1");
        }
        paramsInfo.put("card_info", cardInfo.toJSONString());
        // 3. 发起API调用
        Map<String, Object> response = BasePayRequest.requestBasePay("v2/user/busi/open", paramsInfo, null, false);;
        log.info("用户业务入驻返回参数:" + response);
        log.info("用户业务入驻修改返回参数:" + response);
        return response;
    }
}
UserJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserWithdrawal.java
@@ -157,6 +157,15 @@
    @ApiModelProperty(value = "开户行所在市编码")
    private String bankCardCityCode;
    @ApiModelProperty(value = "进件类型 0-江苏银行;1-汇付")
    private Integer type;
    @ApiModelProperty(value = "汇付ID")
    private String huiFuId;
    @ApiModelProperty(value = "取现卡序列号")
    private String tokenNo;
    /*
    @TableField("companyId")
    @ApiModelProperty(value = "分公司ID")