From 52558369e964d726fd0e0b50f328794e501a7527 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期日, 23 二月 2020 00:37:35 +0800
Subject: [PATCH] 优化物业登录

---
 AppFrontService/src/main/java/com/java110/app/smo/AppAbstractComponentSMO.java |   89 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 85 insertions(+), 4 deletions(-)

diff --git a/AppFrontService/src/main/java/com/java110/app/smo/AppAbstractComponentSMO.java b/AppFrontService/src/main/java/com/java110/app/smo/AppAbstractComponentSMO.java
index ff180b4..d3a9f18 100644
--- a/AppFrontService/src/main/java/com/java110/app/smo/AppAbstractComponentSMO.java
+++ b/AppFrontService/src/main/java/com/java110/app/smo/AppAbstractComponentSMO.java
@@ -1,21 +1,33 @@
 package com.java110.app.smo;
 
-import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.app.properties.WechatAuthProperties;
 import com.java110.core.component.AbstractComponentSMO;
 import com.java110.core.context.IPageData;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.PayUtil;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.http.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.HttpStatusCodeException;
 import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
 
 public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
 
     private static final Logger logger = LoggerFactory.getLogger(AppAbstractComponentSMO.class);
-
+    @Autowired
+    private WechatAuthProperties wechatAuthProperties;
 
     /**
      * 璋冪敤涓績鏈嶅姟
@@ -38,7 +50,7 @@
         try {
             responseEntity = restTemplate.exchange(url, httpMethod, httpEntity, String.class);
         } catch (HttpStatusCodeException e) { //杩欓噷spring 妗嗘灦 鍦�4XX 鎴� 5XX 鏃舵姏鍑� HttpServerErrorException 寮傚父锛岄渶瑕侀噸鏂板皝瑁呬竴涓�
-            responseEntity = new ResponseEntity<String>("璇锋眰涓嬫父绯荤粺寮傚父锛�" + e.getResponseBodyAsString(), e.getStatusCode());
+            responseEntity = new ResponseEntity<String>( e.getResponseBodyAsString(), e.getStatusCode());
         } catch (Exception e) {
             responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
         } finally {
@@ -48,4 +60,73 @@
 
     }
 
+    /**
+     * 棰勪笅鍗�
+     *
+     * @param orderNum
+     * @param money
+     * @param openId
+     * @return
+     * @throws Exception
+     */
+    protected Map<String, String> java110Payment(RestTemplate restTemplate,String feeName, String orderNum, double money, String openId) throws Exception {
+        logger.info("銆愬皬绋嬪簭鏀粯銆� 缁熶竴涓嬪崟寮�濮�, 璁㈠崟缂栧彿=" + orderNum);
+        SortedMap<String, String> resultMap = new TreeMap<String, String>();
+//鐢熸垚鏀粯閲戦锛屽紑鍙戠幆澧冨鐞嗘敮浠橀噾棰濇暟鍒�0.01銆�0.02銆�0.03鍏�
+
+        double payAmount = PayUtil.getPayAmountByEnv(MappingCache.getValue("HC_ENV"), money);
+//娣诲姞鎴栨洿鏂版敮浠樿褰�(鍙傛暟璺熻繘鑷繁涓氬姟闇�姹傛坊鍔�)
+
+        Map<String, String> resMap = this.java110UnifieldOrder(restTemplate,feeName, orderNum, wechatAuthProperties.TRADE_TYPE_JSAPI, payAmount, openId);
+        if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) {
+            resultMap.put("appId", wechatAuthProperties.getAppId());
+            resultMap.put("timeStamp", PayUtil.getCurrentTimeStamp());
+            resultMap.put("nonceStr", PayUtil.makeUUID(32));
+            resultMap.put("package", "prepay_id=" + resMap.get("prepay_id"));
+            resultMap.put("signType", "MD5");
+            resultMap.put("sign", PayUtil.createSign(resultMap, wechatAuthProperties.getKey()));
+            resultMap.put("code", "0");
+            resultMap.put("msg", "涓嬪崟鎴愬姛");
+            logger.info("銆愬皬绋嬪簭鏀粯銆戠粺涓�涓嬪崟鎴愬姛锛岃繑鍥炲弬鏁�:" + resultMap);
+        } else {
+            resultMap.put("code", resMap.get("return_code"));
+            resultMap.put("msg", resMap.get("return_msg"));
+            logger.info("銆愬皬绋嬪簭鏀粯銆戠粺涓�涓嬪崟澶辫触锛屽け璐ュ師鍥�:" + resMap.get("return_msg"));
+        }
+        return resultMap;
+    }
+
+    /**
+     * 灏忕▼搴忔敮浠樼粺涓�涓嬪崟
+     */
+    private Map<String, String> java110UnifieldOrder(RestTemplate restTemplate, String feeName, String orderNum, String tradeType, double payAmount, String openid) throws Exception {
+//灏佽鍙傛暟
+        SortedMap<String, String> paramMap = new TreeMap<String, String>();
+        paramMap.put("appid", wechatAuthProperties.getAppId());
+        paramMap.put("mch_id", wechatAuthProperties.getMchId());
+        paramMap.put("nonce_str", PayUtil.makeUUID(32));
+        paramMap.put("body", "HC鏅烘収瀹跺洯-" + feeName);
+        paramMap.put("out_trade_no", orderNum);
+        paramMap.put("total_fee", PayUtil.moneyToIntegerStr(payAmount));
+        paramMap.put("spbill_create_ip", PayUtil.getLocalIp());
+        paramMap.put("notify_url", wechatAuthProperties.getWxNotifyUrl());
+        paramMap.put("trade_type", tradeType);
+        paramMap.put("openid", openid);
+        paramMap.put("sign", PayUtil.createSign(paramMap, wechatAuthProperties.getKey()));
+//杞崲涓簒ml
+        String xmlData = PayUtil.mapToXml(paramMap);
+
+        logger.debug("璋冪敤鏀粯缁熶竴涓嬪崟鎺ュ彛" + xmlData);
+
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(
+                wechatAuthProperties.getWxPayUnifiedOrder(), xmlData, String.class);
+
+        logger.debug("缁熶竴涓嬪崟杩斿洖" + responseEntity);
+//璇锋眰寰俊鍚庡彴锛岃幏鍙栭鏀粯ID
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            throw new IllegalArgumentException("鏀粯澶辫触" + responseEntity.getBody());
+        }
+        return PayUtil.xmlStrToMap(responseEntity.getBody());
+    }
+
 }

--
Gitblit v1.8.0