From 2fa1d8e232e31b52e5594ab9e899cddad696c3fe Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 25 二月 2020 20:19:02 +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