Browse Source

账户功能对接平安支付微服务的接口

yujia 8 years ago
parent
commit
1720f51a5f

+ 34 - 0
src/main/java/com/uas/platform/b2c/fa/payment/constant/PingAnRequestUrlPostfix.java

@@ -21,4 +21,38 @@ public class PingAnRequestUrlPostfix {
      * 获取对应的子账户信息
      */
     public static final String PINGANGETSUBACCOUNTINFO = "/pingan/account/subAccountInfo";
+
+    /**
+     * 收单 + 见证 查询地址 收单系统的钱是否到见证宝系统
+     */
+    public static final String BANKRECEIPTSRECHARGEPINGANDETAIL = "/pingan/trade/query/rechargeDetail";
+
+
+    /**
+     * 查询银行在途清算结果【6108】
+     */
+    public static final String QUERYSETTLEACCOUNTS = "/pingan/account/query/settleAccounts";
+
+
+    /**
+     * 查询子帐号历史余额及待转可提现状态信息【6114】
+     */
+    public static final String QUERYSUBACCOUNTHISTORYREMAINDERANDCANWITHDRAWINFO = "/pingan/account/query/histRemainderWithDrawInfo";
+
+    /**
+     * 查询银行时间段内清分提现明细【6073】
+     */
+    public static final String QUERYDISTRIBUTIONANDWITHDRAWDETAIL = "/pingan/account/query/distribution/withDraw";
+
+
+    /**
+     * 根据会员代码查询会员子账号【6092】
+     */
+    public static final String QUERYACCOUNTINFO = "/pingan/account/query/account";
+
+
+    /**
+     * 查询对账文件信息【6103】(余额,充值,体现,交易)
+     */
+    public static final String QUERYACCOUNTSTATEMENT = "/pingan/account//query/accountStatement";
 }

+ 11 - 0
src/main/java/com/uas/platform/b2c/fa/payment/constant/Regex.java

@@ -0,0 +1,11 @@
+package com.uas.platform.b2c.fa.payment.constant;
+
+/**
+ * 正则表达式常量
+ *
+ * @author yuj 2018-01-11 21:42
+ */
+public class Regex {
+
+    public static final String POSITIVE_INTEGER = "^[1-9]+[0-9]*$";
+}

+ 5 - 0
src/main/java/com/uas/platform/b2c/fa/payment/constant/StringConstant.java

@@ -21,4 +21,9 @@ public class StringConstant {
      * 空值
      */
     public static final String EMPTY_STRING = "";
+
+    /**
+     * 最小值
+     */
+    public static final String MIN_POSITIVE_INTEGER = "1";
 }

+ 1 - 1
src/main/java/com/uas/platform/b2c/fa/payment/controller/BankReceiptsController.java

@@ -43,7 +43,7 @@ public class BankReceiptsController {
     @RequestMapping(value = "/unionPay/pay/bindCard", method = RequestMethod.GET)
     public String bindCard(HttpServletRequest request, Boolean isPersonal, HttpServletResponse response) {
         String str = bankReceiptsService.bindCard(request, isPersonal);
-        response.setCharacterEncoding("UTF-8");
+        response.setContentType("text/html; charset=UTF-8");
         try {
             request.setCharacterEncoding("UTF-8");
         } catch (UnsupportedEncodingException e) {

+ 69 - 2
src/main/java/com/uas/platform/b2c/fa/payment/controller/PingAnAccountController.java

@@ -50,8 +50,75 @@ public class PingAnAccountController {
      */
     @RequestMapping(value = "/subAccountInfo", method = RequestMethod.GET)
     public String getSubAccountInfo(Boolean isPersonal)  {
-        pingAnAccountService.getSubAccountInfo(isPersonal);
-        return "ok";
+        String subAccountInfo = pingAnAccountService.getSubAccountInfo(isPersonal);
+        return subAccountInfo;
     }
 
+    /**
+     * 查询银行在途清算结果【6108】
+     *
+     * @param page 页数
+     * @param funcFlag 功能标识
+     * @param beginDate
+     * @param endDate
+     * @return
+     */
+    @RequestMapping(value = "/query/settleAccounts", method = RequestMethod.GET)
+    public String querySettleAccounts(String page, String funcFlag, String beginDate, String endDate) {
+        return pingAnAccountService.querySettleAccounts(page, funcFlag, beginDate, endDate);
+    }
+
+
+
+    /**
+     * 查询子帐号历史余额及待转可提现状态信息【6114】
+     *
+     * @param beginDate
+     * @param isPersonal
+     * @param endDate
+     * @return String
+     */
+    @RequestMapping(value = "/query/histRemainderWithDrawInfo", method = RequestMethod.GET)
+    public String querySubAccountHistoryRemainderAndCanWithDrawInfo(Boolean isPersonal, String beginDate, String endDate, String page) {
+        return pingAnAccountService.querySubAccountHistoryRemainderAndCanWithDrawInfo(isPersonal, beginDate, endDate, page);
+    }
+
+
+    /**
+     * 查询银行时间段内清分提现明细【6073】
+     * @param isPersonal
+     * @param beginDate 1:当日,2:历史, 如果是当日  beginDate, endDate为空
+     * @param endDate
+     * @param page
+     * @param selectFlag  2:提现 3:清分
+     * @return
+     */
+    @RequestMapping(value = "/query/distribution/withDraw", method = RequestMethod.GET)
+    public String queryDistributionAndWithDrawDetail(Boolean isPersonal, String beginDate, String endDate, String page, String selectFlag) {
+        return pingAnAccountService.queryDistributionAndWithDrawDetail(isPersonal, beginDate, endDate, page, selectFlag);
+    }
+
+    /**
+     * 根据会员代码查询会员子账号【6092】
+     *
+     * @param isPersonal
+     * @return String
+     */
+    @RequestMapping(value = "/query/account", method = RequestMethod.GET)
+    public String queryAccountInfo(Boolean isPersonal) {
+        return pingAnAccountService.queryAccountInfo(isPersonal);
+    }
+
+
+    /**
+     * 查询对账文件信息【6103】(余额,充值,体现,交易)
+     *
+     * @param fileType
+     * @param tranDate
+     * @return String
+     */
+    @RequestMapping(value = "/query/accountStatement", method = RequestMethod.GET)
+    public String queryAccountStatement(String fileType, String tranDate) {
+        return pingAnAccountService.queryAccountStatement(fileType, tranDate);
+    }
 }

+ 10 - 10
src/main/java/com/uas/platform/b2c/fa/payment/controller/PinganTradeController.java

@@ -1,22 +1,13 @@
 package com.uas.platform.b2c.fa.payment.controller;
 
-import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
-import com.uas.platform.b2c.fa.payment.service.BankReceiptsService;
 import com.uas.platform.b2c.fa.payment.service.PinganTradeService;
-import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.logging.BufferedLoggerManager;
-import org.apache.http.HttpStatus;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-
 /**
  * 会员交易接口
  *
@@ -87,7 +78,16 @@ public class PinganTradeController {
     }
 
 
-
+    /**
+     * 查询充值明细(见证+收单)【6146】
+     *
+     * @param orderId 传入的订单号
+     * @return String
+     */
+    @RequestMapping(value = "/query/rechargeDetail", method = RequestMethod.GET)
+    public String queryRechargeDetail(String orderId) {
+        return pinganTradeService.queryRechargeDetail(orderId);
+    }
 
 
 }

+ 54 - 0
src/main/java/com/uas/platform/b2c/fa/payment/service/PingAnAccountService.java

@@ -28,4 +28,58 @@ public interface PingAnAccountService {
      * @return
      */
     String getSubAccountInfo(Boolean isPersonal);
+
+
+    /**
+     * 查询银行在途清算结果【6108】
+     *
+     * @param page
+     * @param funcFlag 1:全部,2:指定时间段
+     * @param beginDate
+     * @param endDate
+     * @return
+     */
+    String querySettleAccounts(String page, String funcFlag, String beginDate, String endDate);
+
+
+    /**
+     * 查询子帐号历史余额及待转可提现状态信息【6114】
+     *
+     * @param isPersonal
+     * @param beginDate
+     * @param endDate
+     * @return String
+     */
+    String querySubAccountHistoryRemainderAndCanWithDrawInfo(Boolean isPersonal, String beginDate, String endDate, String page);
+
+
+    /**
+     * 查询银行时间段内清分提现明细【6073】
+     * @param isPersonal
+     * @param beginDate 1:当日,2:历史, 如果是当日  beginDate, endDate为空
+     * @param endDate
+     * @param page
+     * @param selectFlag  2:提现 3:清分
+     * @return
+     */
+    String queryDistributionAndWithDrawDetail(Boolean isPersonal, String beginDate, String endDate, String page, String selectFlag);
+
+
+    /**
+     * 根据会员代码查询会员子账号【6092】
+     *
+     * @param isPersonal
+     * @return String
+     */
+    String queryAccountInfo(Boolean isPersonal);
+
+
+    /**
+     * 查询对账文件信息【6103】(余额,充值,体现,交易)
+     *
+     * @param fileType
+     * @param tranDate
+     * @return String
+     */
+    String queryAccountStatement(String fileType, String tranDate);
 }

+ 9 - 9
src/main/java/com/uas/platform/b2c/fa/payment/service/PinganTradeService.java

@@ -1,13 +1,5 @@
 package com.uas.platform.b2c.fa.payment.service;
 
-import com.alibaba.fastjson.JSONObject;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-
 /**
  * 平安的facade层
  *
@@ -46,10 +38,18 @@ public interface PinganTradeService {
      * @param isPersonal
      * @return String
      */
-    @RequestMapping(value = "/recharge",method = RequestMethod.POST)
     String rechargeMember(Boolean isPersonal);
 
 
+    /**
+     * 查询充值明细(见证+收单)【6146】
+     *
+     * @param orderId 传入的订单号
+     * @return String
+     */
+    String queryRechargeDetail(String orderId);
+
+
 
 
 

+ 2 - 2
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/BankReceiptsServiceImpl.java

@@ -147,10 +147,10 @@ public class BankReceiptsServiceImpl implements BankReceiptsService {
             map.put(PingAnField.VERIFYCODE, verifyCode);
         } else {
             map.putAll(infoMap);
-            map.put(PingAnField.ORDERID, "200079918420180111UPGHZK50");
+            map.put(PingAnField.ORDERID, "200079918420180111UPUT9M80");
             map.put(PingAnField.CURRENCY, "RMB");
             map.put("amount", "10.00");
-            map.put("paydate", "20180111161547");
+            map.put("paydate", "20180111193234");
             map.put("customerId", "19901120");
             map.put("verifyCode", "111111");
             map.put("issInsCode", "HXB");

+ 109 - 0
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/PingAnAccountServiceImpl.java

@@ -2,12 +2,17 @@ package com.uas.platform.b2c.fa.payment.service.impl;
 
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.fa.payment.constant.PingAnRequestUrlPostfix;
+import com.uas.platform.b2c.fa.payment.constant.Regex;
+import com.uas.platform.b2c.fa.payment.constant.StringConstant;
 import com.uas.platform.b2c.fa.payment.service.PingAnAccountService;
 import com.uas.platform.b2c.fa.payment.support.UserInfoSupport;
+import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -66,4 +71,108 @@ public class PingAnAccountServiceImpl implements PingAnAccountService {
         String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.PINGANGETSUBACCOUNTINFO, infoMap, String.class);
         return resultStr;
     }
+
+    /**
+     * 查询银行在途清算结果【6108】
+     *
+     * @param page
+     * @param funcFlag 1:全部,2:指定时间段
+     * @param
+     * @return
+     */
+    @Override
+    public String querySettleAccounts(String page, String funcFlag, String beginDate, String endDate) {
+        HashMap<String, String> hashMap = new HashMap<>();
+        hashMap.put("FuncFlag", funcFlag);
+        hashMap.put("PageNum", page);
+        if (StringUtils.isEmpty(funcFlag)) {
+            throw new IllegalArgumentException("传入的标识为空");
+        } else {
+            if (!funcFlag.equals(StringConstant.MIN_POSITIVE_INTEGER)) {
+                hashMap.put("BeginDate", "beginDate");
+                hashMap.put("EndDate", "endDate");
+            }
+        }
+
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.QUERYSETTLEACCOUNTS, hashMap, String.class);
+        return resultStr;
+    }
+
+
+    /**
+     * 查询子帐号历史余额及待转可提现状态信息【6114】
+     * @param isPersonal 是否是个人
+     * @param beginDate 开始时间
+     * @param endDate 结束时间
+     * @return
+     */
+    @Override
+    public String querySubAccountHistoryRemainderAndCanWithDrawInfo(Boolean isPersonal, String beginDate, String endDate, String page) {
+        Map<String, String> infoMap = userInfoSupport.getUserInfoMap(isPersonal);
+        infoMap.put("BeginDate", beginDate);
+        infoMap.put("EndDate", endDate);
+        infoMap.put("PageNum", page);
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.QUERYSUBACCOUNTHISTORYREMAINDERANDCANWITHDRAWINFO, infoMap, String.class);
+        return resultStr;
+    }
+
+    /**
+     * 查询银行时间段内清分提现明细【6073】
+     *
+     * @param isPersonal
+     * @param beginDate  1:当日,2:历史, 如果是当日  beginDate, endDate为空
+     * @param endDate
+     * @param page
+     * @param selectFlag 2:提现 3:清分
+     * @return
+     */
+    @Override
+    public String queryDistributionAndWithDrawDetail(Boolean isPersonal, String beginDate, String endDate, String page, String selectFlag) {
+        Map<String, String> infoMap = userInfoSupport.getUserInfoMap(isPersonal);
+        if (StringUtils.isEmpty(beginDate) || StringUtils.isEmpty(endDate)) {
+            infoMap.put("FuncFlag", "1");// 1:当日,2:历史
+        } else {
+            infoMap.put("BeginDate", beginDate);
+            infoMap.put("EndDate", endDate);
+            infoMap.put("FuncFlag", "2");// 1:当日,2:历史
+        }
+        if (StringUtils.isEmpty(page)) {
+            page = StringConstant.MIN_POSITIVE_INTEGER;
+        } else {
+            page = page.matches(Regex.POSITIVE_INTEGER) ? page : StringConstant.MIN_POSITIVE_INTEGER;
+        }
+        infoMap.put("PageNum", page);
+        infoMap.put("SelectFlag", selectFlag);
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.QUERYDISTRIBUTIONANDWITHDRAWDETAIL, infoMap, String.class);
+        return resultStr;
+    }
+
+    /**
+     * 根据会员代码查询会员子账号【6092】
+     *
+     * @param isPersonal
+     * @return String
+     */
+    @Override
+    public String queryAccountInfo(Boolean isPersonal) {
+        Map<String, String> infoMap = userInfoSupport.getUserInfoMap(isPersonal);
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.QUERYACCOUNTINFO, infoMap, String.class);
+        return resultStr;
+    }
+
+    /**
+     * 查询对账文件信息【6103】(余额,充值,体现,交易)
+     *
+     * @param fileType
+     * @param tranDate
+     * @return String
+     */
+    @Override
+    public String queryAccountStatement(String fileType, String tranDate) {
+        Map<String, String> infoMap = new HashedMap();
+        infoMap.put("FileType", fileType);
+        infoMap.put("TranDate", tranDate);
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.QUERYACCOUNTSTATEMENT, infoMap, String.class);
+        return resultStr;
+    }
 }

+ 19 - 13
src/main/java/com/uas/platform/b2c/fa/payment/service/impl/PinganTradeServiceImpl.java

@@ -1,21 +1,14 @@
 package com.uas.platform.b2c.fa.payment.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2c.fa.payment.constant.B2CField;
+import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.fa.payment.constant.PingAnField;
-import com.uas.platform.b2c.fa.payment.constant.StringConstant;
-import com.uas.platform.b2c.fa.payment.service.BankReceiptsService;
+import com.uas.platform.b2c.fa.payment.constant.PingAnRequestUrlPostfix;
 import com.uas.platform.b2c.fa.payment.service.PinganTradeService;
 import com.uas.platform.b2c.fa.payment.support.UserInfoSupport;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.client.RestTemplate;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -31,10 +24,13 @@ public class PinganTradeServiceImpl implements PinganTradeService {
 
     private final UserInfoSupport userInfoSupport;
 
+    private final SysConf sysConf;
+
     @Autowired
-    public PinganTradeServiceImpl(RestTemplate restTemplate, UserInfoSupport userInfoSupport) {
+    public PinganTradeServiceImpl(RestTemplate restTemplate, UserInfoSupport userInfoSupport, SysConf sysConf) {
         this.restTemplate = restTemplate;
         this.userInfoSupport = userInfoSupport;
+        this.sysConf = sysConf;
     }
 
     /**
@@ -133,7 +129,17 @@ public class PinganTradeServiceImpl implements PinganTradeService {
         return resultStr;
     }
 
-
-
-
+    /**
+     * 查询充值明细(见证+收单)【6146】
+     *
+     * @param orderId 传入的订单号
+     * @return String
+     */
+    @Override
+    public String queryRechargeDetail(String orderId) {
+        HashMap<String, String> map = new HashMap<>();
+        map.put(PingAnField.ORDERID, orderId);
+        String resultStr = restTemplate.postForObject(sysConf.getPingAnUrl() + PingAnRequestUrlPostfix.BANKRECEIPTSRECHARGEPINGANDETAIL, map, String.class);
+        return resultStr;
+    }
 }

+ 0 - 1
src/main/java/com/uas/platform/b2c/fa/payment/support/UserInfoSupport.java

@@ -40,7 +40,6 @@ public class UserInfoSupport {
             map.put(B2CField.DISSOCIATIVE, Boolean.FALSE.toString());
             map.put(B2CField.ISPERSONAL, Boolean.FALSE.toString());
         }
-
         return map;
     }
 }