Ver código fonte

feat:“优化汇付企业商户入驻接口,添加查询余额接口备用”

soobin 1 ano atrás
pai
commit
400fb37ff8

+ 13 - 0
src/main/java/com/szwl/controller/THuifuMchController.java

@@ -411,5 +411,18 @@ public class THuifuMchController {
         return R.ok(str);
     }
 
+    @ApiOperation(value = "查询余额")
+    @GetMapping("/checkBalance")
+    public ResponseModel<?> checkBalance(@RequestParam Long adminId) throws Exception {
+        if(adminId == null) {
+            return R.fail(ResponseCodesEnum.A0001);
+        }
+        LambdaQueryWrapper<THuifuMch> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(THuifuMch::getAdminId,adminId);
+        THuifuMch tHuifuMch = tHuifuMchService.getOne(queryWrapper);
+        String result = tHuifuMchService.checkBalance(tHuifuMch);
+        return R.ok(result);
+    }
+
 }
 

Diferenças do arquivo suprimidas por serem muito extensas
+ 3 - 1
src/main/java/com/szwl/mapper/xml/THuifuMchCheckMapper.xml


+ 6 - 0
src/main/java/com/szwl/model/entity/THuifuMchCheck.java

@@ -91,6 +91,9 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "结算账户类型,“0”为对公账户,“1”为个人账户")
     private String cardType;
 
+    @ApiModelProperty(value = "结算周期,0为工作日,1为自然日")
+    private String settleCycle;
+
     @ApiModelProperty(value = "结算账号")
     private String cardNo;
 
@@ -145,6 +148,9 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "核准号")
     private String openLicenceNo;
 
+    @ApiModelProperty(value = "银行号")
+    private String bankCode;
+
     @ApiModelProperty(value = "营业执照有效期类型,0:非长期有效 ,1:长期有效 ")
     private String licenseValidityType;
 

+ 7 - 0
src/main/java/com/szwl/service/THuifuMchService.java

@@ -98,4 +98,11 @@ public interface THuifuMchService extends IService<THuifuMch> {
      * @return
      */
     String updateConStat(THuifuMchCheck tHuifuMchCheck) throws BasePayException;
+
+    /**
+     * 查询账户余额
+     * @param tHuifuMch
+     * @return
+     */
+    String checkBalance(THuifuMch tHuifuMch) throws Exception;
 }

+ 64 - 12
src/main/java/com/szwl/service/impl/THuifuMchServiceImpl.java

@@ -221,24 +221,33 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
         cardInfo.put("prov_id", tHuifuMchCheck.getCardProvId());
         // 银行所在市
         cardInfo.put("area_id", tHuifuMchCheck.getCardAreaId());
-        // 持卡人证件类型
-        cardInfo.put("cert_type", "00");
-        // 持卡人证件号码
-        cardInfo.put("cert_no", tHuifuMchCheck.getCertNo());
-        // 持卡人证件有效期类型,1:长期有效,0:非长期有效;
-        cardInfo.put("cert_validity_type", tHuifuMchCheck.getCertValidityType());
-        // 持卡人证件有效期开始
-        cardInfo.put("cert_begin_date", tHuifuMchCheck.getCertBeginDate());
-        if (StringUtils.isNotEmpty(tHuifuMchCheck.getCertEndDate())) {
-            cardInfo.put("cert_end_date", tHuifuMchCheck.getCertEndDate());
+        // 如果是对私
+        if (StringUtils.isNotEmpty(tHuifuMchCheck.getCardType()) && tHuifuMchCheck.getCardType().equals("1")) {
+            // 持卡人证件类型
+            cardInfo.put("cert_type", "00");
+            // 持卡人证件号码
+            cardInfo.put("cert_no", tHuifuMchCheck.getCertNo());
+            // 持卡人证件有效期类型,1:长期有效,0:非长期有效;
+            cardInfo.put("cert_validity_type", tHuifuMchCheck.getCertValidityType());
+            // 持卡人证件有效期开始
+            cardInfo.put("cert_begin_date", tHuifuMchCheck.getCertBeginDate());
+            // 持卡人证件有效期截止日期
+            if (StringUtils.isNotEmpty(tHuifuMchCheck.getCertEndDate())) {
+                cardInfo.put("cert_end_date", tHuifuMchCheck.getCertEndDate());
+            }
+        }
+        if (StringUtils.isNotEmpty(tHuifuMchCheck.getCardType()) && tHuifuMchCheck.getCardType().equals("0")) {
+            // 银行号
+            cardInfo.put("bank_code", tHuifuMchCheck.getBankCode());
+            // 支行联行号
+            cardInfo.put("branch_code", tHuifuMchCheck.getBranchCode());
         }
-        // 持卡人证件有效期截止日期
         request.put("card_info", cardInfo);
         JSONObject settleConfig = new JSONObject();
-        // 结算周期
         // 如果是修改接口
         if (tHuifuMchCheck.getStatus().equals("4")) {
             url = "https://api.huifu.com/v2/user/busi/modify";
+            // 结算周期
             settleConfig.put("settle_status", "1");
         }
         settleConfig.put("settle_cycle", "T1");
@@ -991,4 +1000,47 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
         }
         return null;
     }
+
+    @Override
+    public String checkBalance(THuifuMch tHuifuMch) throws Exception {
+        // 请求接口
+        String url = "https://api.huifu.com/v2/trade/acctpayment/balance/query";
+        HuifuBaseCommon.doInit(OppsMerchantConfig.getMerchantConfig());
+        // 请求参数:Data
+        JSONObject request = new JSONObject();
+        // 请求流水号
+        request.put("req_seq_id", SequenceTools.getReqSeqId32());
+        // 请求日期
+        request.put("req_date", DateTools.getCurrentDateYYYYMMDD());
+        // 汇付ID
+        request.put("huifu_id", tHuifuMch.getHuifuId());
+
+        // 签名:sign
+        String s = JSON.toJSONString(request);
+        String s1 = JSON.toJSONString(JSONObject.parseObject(s, TreeMap.class));
+        String sign = HuifuUtils.sign(s1, HuifuConstant.RSA_PRIVATE_KEY);
+
+        // 公共参数
+        System.out.println("请求参数:"+ request);
+        JSONObject requestData = new JSONObject();
+        requestData.put("sys_id", HuifuConstant.SYS_ID);
+        requestData.put("product_id", HuifuConstant.PRODUCT_ID);
+        requestData.put("sign", sign);
+        requestData.put("data", request);
+
+        String result = OkHttpClientTools.httpPost(url, requestData.toString(), HuifuConstant.PRODUCT_ID);
+        System.out.println("返回的数据:"+ result);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        JSONObject dataObject = jsonObject.getJSONObject("data");
+        String acctInfoList = dataObject.getString("acctInfo_list");
+        JSONArray acctInfoArray = JSONArray.parseArray(acctInfoList);
+
+        // 如果 "acctInfo_list" 是数组,遍历数组并获取 "balance_amt" 字段的值
+        String balanceAmt = "0";
+        for (int i = 0; i < acctInfoArray.size(); i++) {
+            JSONObject acctInfoObject = acctInfoArray.getJSONObject(i);
+            balanceAmt = acctInfoObject.getString("balance_amt");
+        }
+        return balanceAmt;
+    }
 }