Browse Source

平安支付绑卡的接口

yujia 8 years ago
parent
commit
78a7104bf2

+ 10 - 0
pom.xml

@@ -436,6 +436,16 @@
 			<groupId>javax.servlet</groupId>
 			<artifactId>servlet-api</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.5.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpasyncclient</artifactId>
+			<version>4.1.2</version>
+		</dependency>
 	</dependencies>
 	<build>
 		<finalName>platform-b2c</finalName>

+ 29 - 0
src/main/java/com/uas/platform/b2c/fa/payment/constant/B2CField.java

@@ -0,0 +1,29 @@
+package com.uas.platform.b2c.fa.payment.constant;
+
+/**
+ * 商城的字段名
+ *
+ * @author yuj 2017-12-21 21:36
+ */
+public class B2CField {
+
+    /**
+     * 个人的uu
+     */
+    public static final String USERUU = "useruu";
+
+    /**
+     * 企业的uu
+     */
+    public static final String ENUU = "enuu";
+
+    /**
+     * 是否是个人账户 (个人账户,企业账户)
+     */
+    public static final String ISPERSONAL = "isPersonal";
+
+    /**
+     * 个人账户中 是否是游离的
+     */
+    public static final String DISSOCIATIVE = "dissociative";
+}

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

@@ -0,0 +1,34 @@
+package com.uas.platform.b2c.fa.payment.constant;
+
+/**
+ * 平安的支付字段
+ *
+ * @author yuj 2017-12-22 10:51
+ */
+public class PingAnField {
+
+    /**
+     * 商户订单数据组成的原始数据字符串
+     */
+    public static final String ORIG = "orig";
+
+    /**
+     * 原始数据字符串的签名
+     */
+    public static final String SIGN = "sign";
+
+    /**
+     * 前台地址
+     */
+    public static final String RETURNURL = "returnurl";
+
+    /**
+     * 后台地址
+     */
+    public static final String NOTIFYURL = "NOTIFYURL";
+
+    /**
+     * 提交动作链接
+     */
+    public static final String ACTIONURL = "actionUrl";
+}

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

@@ -0,0 +1,14 @@
+package com.uas.platform.b2c.fa.payment.constant;
+
+/**
+ * String 的常量
+ *
+ * @author yuj 2017-12-22 11:25
+ */
+public class StringConstant {
+
+    /**
+     * 编码格式
+     */
+    public static final String UTF_8 = "UTF-8";
+}

+ 57 - 0
src/main/java/com/uas/platform/b2c/fa/payment/controller/PingAnController.java

@@ -0,0 +1,57 @@
+package com.uas.platform.b2c.fa.payment.controller;
+
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.fa.payment.facade.PingAnFacade;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+/**
+ * 平安接口的控制器
+ *
+ * @author yuj 2017-12-20 18:05
+ */
+@RestController
+@RequestMapping(value = "/pingAn")
+public class PingAnController {
+
+    private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    private final PingAnFacade pingAnFacade;
+
+    @Autowired
+    public PingAnController(PingAnFacade pingAnFacade) {
+        this.pingAnFacade = pingAnFacade;
+    }
+
+    /**
+     * 支付时的绑卡动作
+     *
+     * @param request 请求
+     * @param isPersonal 是否是个人
+     */
+    @RequestMapping(value = "/pay/bindCard", method = RequestMethod.GET)
+    public String bindCard(HttpServletRequest request, Boolean isPersonal) {
+        String str = pingAnFacade.bindCard(request, isPersonal);
+        logger.log("平安支付控制器", "支付绑卡", "支付时的绑卡");
+        return str;
+    }
+
+
+    /**
+     *  请求个人快捷绑定的支付的银行卡信息
+     *
+     * @param isPersonal 是否是个人
+     * @return String
+     */
+    @RequestMapping(value = "/bindCard/query", method = RequestMethod.GET)
+    public String queryBindCard(Boolean isPersonal) {
+        String resultStr = pingAnFacade.queryBindCard(isPersonal);
+        logger.log("平安支付控制器", "跨行支付绑卡", "查询绑卡信息");
+        return resultStr;
+    }
+}

+ 27 - 0
src/main/java/com/uas/platform/b2c/fa/payment/facade/PingAnFacade.java

@@ -0,0 +1,27 @@
+package com.uas.platform.b2c.fa.payment.facade;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 平安的facade层
+ *
+ * Created by yujia on 2017/12/20.
+ */
+public interface PingAnFacade {
+
+    /**
+     * 绑卡动作
+     *
+     * @param request 请求
+     * @param isPersonal 是否是个人账户
+     */
+    String bindCard(HttpServletRequest request, Boolean isPersonal);
+
+    /**
+     * 查询跨行绑卡的信息
+     *
+     * @param isPersonal 是否是个人
+     * @return String
+     */
+    String queryBindCard(Boolean isPersonal);
+}

+ 88 - 0
src/main/java/com/uas/platform/b2c/fa/payment/facade/impl/PingAnFacadeImpl.java

@@ -0,0 +1,88 @@
+package com.uas.platform.b2c.fa.payment.facade.impl;
+
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.fa.payment.constant.B2CField;
+import com.uas.platform.b2c.fa.payment.facade.PingAnFacade;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 平安facade 的impl
+ *
+ * @author yuj 2017-12-20 20:32
+ */
+@Service
+public class PingAnFacadeImpl implements PingAnFacade {
+
+    private final RestTemplate restTemplate;
+
+    @Autowired
+    public PingAnFacadeImpl(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+
+    /**
+     * 绑卡的动作
+     *
+     * @param request    请求
+     * @param isPersonal 是否是个人账户
+     */
+    @Override
+    public String bindCard(HttpServletRequest request, Boolean isPersonal) {
+        Map<String, String> map = getUserInfoMap(isPersonal);
+        map.put(B2CField.USERUU, "1000103422");
+        map.put(B2CField.ENUU, "1000103423");
+        map.put(B2CField.DISSOCIATIVE, Boolean.FALSE.toString());
+        map.put(B2CField.ISPERSONAL, Boolean.TRUE.toString());
+        String httpEntity = restTemplate.postForObject("http://192.168.253.119:20280/UnionPay/bindCard", map, String.class);
+        return httpEntity;
+    }
+
+    /**
+     * 查询跨行绑卡的信息
+     *
+     * @param isPersonal 是否是个人
+     * @return String
+     */
+    @Override
+    public String queryBindCard(Boolean isPersonal) {
+        Map<String, String> map = getUserInfoMap(isPersonal);
+        String resultStr = restTemplate.postForObject("http://192.168.253.119:20280/UnionPay/bindCard/query", map, String.class);
+        return resultStr;
+    }
+
+
+    /**
+     * 组装个人的信息
+     *
+     * @param isPersonal 是否是个人信息
+     * @return Map<String, String>
+     */
+    private Map<String, String> getUserInfoMap(Boolean isPersonal) {
+        HashMap<String, String> map = new HashMap<>();
+        User user = SystemSession.getUser();
+        isPersonal = true;
+        if (isPersonal) {
+            map.put(B2CField.USERUU, String.valueOf(user.getUserUU()));
+            if (user.getEnterprise() != null) {
+                map.put(B2CField.ENUU, String.valueOf(user.getEnterprise().getUu()));
+                map.put(B2CField.DISSOCIATIVE, Boolean.FALSE.toString());
+            } else {
+                map.put(B2CField.DISSOCIATIVE, Boolean.TRUE.toString());
+            }
+            map.put(B2CField.ISPERSONAL, Boolean.TRUE.toString());
+        } else {
+            map.put(B2CField.ENUU, user.getEnterprise().getUu().toString());
+            map.put(B2CField.DISSOCIATIVE, Boolean.FALSE.toString());
+            map.put(B2CField.ISPERSONAL, Boolean.FALSE.toString());
+        }
+
+        return map;
+    }
+}