Explorar o código

第三方支付

qin %!s(int64=2) %!d(string=hai) anos
pai
achega
8f4ac6074c

+ 9 - 1
src/main/java/com/poteviohealth/ym/ipos/controller/SettlementController.java

@@ -3,7 +3,9 @@ package com.poteviohealth.ym.ipos.controller;
 import com.poteviohealth.cgp.common.controller.BaseWebController;
 import com.poteviohealth.cgp.common.facade.log.OperateType;
 import com.poteviohealth.cgp.common.facade.log.OperationLog;
+import com.poteviohealth.cgp.common.integrated.StringParams;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
 import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
 import com.poteviohealth.ym.ipos.service.ISplitService;
@@ -29,11 +31,17 @@ public class SettlementController extends BaseWebController {
     private ISplitService splitService;
 
 
-        @PostMapping("/merchantQuery")
+    @PostMapping("/merchantQuery")
     @ApiOperation(value = "结算查询")
     @OperationLog(type = OperateType.SELECT, description ="结算查询")
     public VaultsResponse<SettlementQueryBack> merchantQuery(@RequestBody SettlementQueryDetail detail) {
         return splitService.merchantSettlementQuery(detail);
     }
 
+    @PostMapping("/accountBalanceQuery")
+    @ApiOperation(value = "单账户查询")
+    @OperationLog(type = OperateType.SELECT, description ="单账户查询")
+    public VaultsResponse<AccountBalanceBack> accountBalanceQuery(@RequestBody StringParams params) {
+        return splitService.accountBalanceQuery(params.getId());
+    }
 }

+ 19 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/AccountBalance.java

@@ -0,0 +1,19 @@
+package com.poteviohealth.ym.ipos.model.split;
+
+import com.poteviohealth.ym.ipos.model.base.Base;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 4.51.单账户余额查询
+ * https://open.wangcaio2o.com/docs/ipos-sa/4.51.md
+ * @author Qin
+ */
+@Data
+public class AccountBalance extends Base {
+    @ApiModelProperty(value = "请求类型,固定值:account_balance_query_request",required = true)
+    private String request_type = "account_balance_query_request";
+
+    @ApiModelProperty(value = "用户id 所查询的用户id")
+    private String merchant_id;
+}

+ 19 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/back/AccountBalanceBack.java

@@ -0,0 +1,19 @@
+package com.poteviohealth.ym.ipos.model.split.back;
+
+import com.poteviohealth.ym.ipos.model.back.BaseBack;
+import com.poteviohealth.ym.ipos.model.split.detail.AccountBalanceList;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 单账户余额查询返回值
+ * @author Qin
+ */
+@Data
+public class AccountBalanceBack extends BaseBack {
+
+    @ApiModelProperty(value = "数据列表")
+    private List<AccountBalanceList> list;
+}

+ 28 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/detail/AccountBalanceList.java

@@ -0,0 +1,28 @@
+package com.poteviohealth.ym.ipos.model.split.detail;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 单账户查询列表
+ * @author Qin
+ */
+public class AccountBalanceList {
+
+    @ApiModelProperty(value = "账户类型:01-基本户 02-现金户 03-延时户 04-钱包户 05-充值户 06-微信延时户 09-营销户")
+    private String type;
+
+    @ApiModelProperty(value = "账户余额(分),可用余额+冻结余额")
+    private Integer balance_amt;
+
+    @ApiModelProperty(value = "可用余额(分)")
+    private Integer avl_amt;
+
+    @ApiModelProperty(value = "冻结余额(分)")
+    private Integer frz_amt;
+
+    @ApiModelProperty(value = "昨日日终余额(分)")
+    private Integer last_avl_amt;
+
+    @ApiModelProperty(value = "状态:N-正常 C-关闭 F-冻结 D-销户")
+    private String status;
+}

+ 9 - 0
src/main/java/com/poteviohealth/ym/ipos/service/ISplitService.java

@@ -5,6 +5,7 @@ import com.poteviohealth.ym.ipos.model.back.BaseBack;
 import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
 import com.poteviohealth.ym.ipos.model.split.SplitRecords;
 import com.poteviohealth.ym.ipos.model.split.SplitRecordsDetail;
+import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
 import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
 
@@ -52,4 +53,12 @@ public interface ISplitService {
      * @return
      */
     VaultsResponse<SettlementQueryBack> merchantSettlementQuery(SettlementQueryDetail detail);
+
+
+    /**
+     * 单账户余额查询
+     * @param merchantId
+     * @return
+     */
+    VaultsResponse<AccountBalanceBack> accountBalanceQuery(String merchantId);
 }

+ 28 - 0
src/main/java/com/poteviohealth/ym/ipos/service/impl/SplitServiceImpl.java

@@ -9,6 +9,7 @@ import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.back.BaseBack;
 import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
 import com.poteviohealth.ym.ipos.model.split.*;
+import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
 import com.poteviohealth.ym.ipos.model.split.back.PayConfirmBack;
 import com.poteviohealth.ym.ipos.model.split.back.PayConfirmQueryBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
@@ -181,4 +182,31 @@ public class SplitServiceImpl implements ISplitService {
 
         return VaultsResponse.failed(back.getResult().getComment());
     }
+
+    @Override
+    public VaultsResponse<AccountBalanceBack> accountBalanceQuery(String merchantId) {
+        AccountBalance accountBalance =  new AccountBalance();
+        accountBalance.setMerchant_id(merchantId);
+        AccountBalanceBack back = null;
+
+        try {
+            String val = (String) YmUtil.resultBack(accountBalance,new AccountBalanceBack());
+            JSONObject jsonObject = new JSONObject(JSON.parseObject(val));
+            if(val.contains("list")){
+                List<AccountBalanceList> list = jsonObject.getJSONArray("list").stream().map(item -> JSON.parseObject(item.toString(), new TypeReference<AccountBalanceList>() {})).collect(Collectors.toList());
+                jsonObject.put("list",list);
+            }
+            back = JSONObject.toJavaObject(jsonObject, AccountBalanceBack.class);
+
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+            return VaultsResponse.failed(e.getMessage());
+        }
+
+        if(YmUtil.SUCCESS.equals(back.getResult().getId())){
+            return VaultsResponse.success(back);
+        }
+
+        return VaultsResponse.failed(back.getResult().getComment());
+    }
 }

+ 3 - 1
src/main/java/com/poteviohealth/ym/ipos/utils/YmUtil.java

@@ -32,7 +32,9 @@ public class YmUtil {
             String val = HttpUtils.post(URL,jsonObject);
             log.info(clazz.getClass()+"==return=="+val);
             if(clazz.getClass().toString().contains("UserSearchBack")
-                    || clazz.getClass().toString().contains("SettlementQueryBack")){
+                    || clazz.getClass().toString().contains("SettlementQueryBack")
+                    || clazz.getClass().toString().contains("AccountBalanceBack")
+        ){
                 return val;
             }
             return JSONObject.parseObject(val, clazz.getClass());