From a3e1aec60d2f886b8c48966c889b567719d0c5ea Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期三, 16 十月 2019 16:50:25 +0800
Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div

---
 utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java |  106 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 89 insertions(+), 17 deletions(-)

diff --git a/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java b/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java
index 15006fc..d2878a4 100644
--- a/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java
+++ b/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java
@@ -8,6 +8,9 @@
 import org.yeshi.utils.HttpUtil;
 import org.yeshi.utils.StringUtil;
 import org.yeshi.utils.entity.wx.RedPackParams;
+import org.yeshi.utils.entity.wx.WXAPPInfo;
+import org.yeshi.utils.entity.wx.WXPlaceOrderParams;
+import org.yeshi.utils.exception.WXPlaceOrderParamsException;
 
 /**
  * 寰俊鏀粯甯姪绫�
@@ -42,9 +45,9 @@
 		return null;
 	}
 
-
 	/**
 	 * 鍙戞斁寰俊绾㈠寘
+	 * 
 	 * @param params
 	 * @param pwd
 	 * @param cert
@@ -54,7 +57,7 @@
 		// 杞寲鎴愬垎
 		BigDecimal money = params.getMoney();
 		money = money.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_DOWN);
-		
+
 		Map<String, String> map = new HashMap<>();
 		map.put("nonce_str", StringUtil.getRandomCode(32));
 		map.put("mch_billno", params.getBillno());
@@ -63,43 +66,46 @@
 		map.put("send_name", params.getSendName());
 		map.put("re_openid", params.getOpenid());
 		map.put("total_amount", money.toString());
-		map.put("total_num", params.getTotalNum()+ "");
+		map.put("total_num", params.getTotalNum() + "");
 		map.put("wishing", params.getWishing());
 		map.put("client_ip", params.getClientIp());
 		map.put("act_name", params.getActName());
 		map.put("remark", params.getRemark());
-		
+
 		if (!StringUtil.isNullOrEmpty(params.getSceneId()))
 			map.put("scene_id", params.getSceneId());
-		
+
 		if (!StringUtil.isNullOrEmpty(params.getRiskInfo()))
 			map.put("risk_info", params.getRiskInfo());
-		
+
 		map.put("sign", WXUtil.getSignMD5(map, params.getKey()));
 		String entity = WXUtil.loadWXMessage(map);
 		try {
-			String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack",
-					entity, pwd, cert);
+			String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", entity,
+					pwd, cert);
 			return result;
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 		return null;
 	}
-	
-	
+
 	/**
 	 * 鏌ヨ绾㈠寘棰嗗彇璁板綍
-	 * @param billno 鍟嗘埛璁㈠崟鍙�
-	 * @param mchId  鍟嗘埛鍙�
+	 * 
+	 * @param billno
+	 *            鍟嗘埛璁㈠崟鍙�
+	 * @param mchId
+	 *            鍟嗘埛鍙�
 	 * @param key
-	 * @param appId Appid
+	 * @param appId
+	 *            Appid
 	 * @param pwd
 	 * @param cert
 	 * @return
 	 */
-	public static String getRedPackRecord(String billno, String mchId,  String appId, String key,
-			String pwd, InputStream cert) {
+	public static String getRedPackRecord(String billno, String mchId, String appId, String key, String pwd,
+			InputStream cert) {
 		Map<String, String> map = new HashMap<>();
 		map.put("mch_billno", billno);
 		map.put("mch_id", mchId);
@@ -109,12 +115,78 @@
 		map.put("sign", WXUtil.getSignMD5(map, key));
 		String entity = WXUtil.loadWXMessage(map);
 		try {
-			String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo",
-					entity, pwd, cert);
+			String result = HttpUtil.httpsPost("https://api.mch.weixin.qq.com/mmpaymkttransfers/gethbinfo", entity, pwd,
+					cert);
 			return result;
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 		return null;
 	}
+
+	/**
+	 * 寰俊鏀粯缁熶竴涓嬪崟
+	 * 
+	 * @param params
+	 * @return
+	 * @throws WXPlaceOrderParamsException
+	 */
+	public static Map<String, String> produceOrder(WXPlaceOrderParams params) throws WXPlaceOrderParamsException {
+		if (params == null)
+			throw new WXPlaceOrderParamsException(1, "璇蜂紶鍏ヤ笅鍗曞弬鏁�");
+
+		if (params.getInfo() == null)
+			throw new WXPlaceOrderParamsException(2, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�");
+
+		if (StringUtil.isNullOrEmpty(params.getInfo().getAppId()))
+			throw new WXPlaceOrderParamsException(201, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-appId");
+		if (StringUtil.isNullOrEmpty(params.getInfo().getAppSecret()))
+			throw new WXPlaceOrderParamsException(202, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-appSecret");
+		if (StringUtil.isNullOrEmpty(params.getInfo().getMchId()))
+			throw new WXPlaceOrderParamsException(203, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-mchId");
+		if (StringUtil.isNullOrEmpty(params.getInfo().getMchKey()))
+			throw new WXPlaceOrderParamsException(204, "璇蜂紶鍏ヤ笅鍗曞簲鐢ㄤ俊鎭�-mchKey");
+		if (StringUtil.isNullOrEmpty(params.getBody()))
+			throw new WXPlaceOrderParamsException(3, "璇蜂紶鍏ody");
+
+		if (StringUtil.isNullOrEmpty(params.getOrderNo()))
+			throw new WXPlaceOrderParamsException(4, "璇蜂紶鍏rderNo");
+
+		if (params.getFee() == null)
+			throw new WXPlaceOrderParamsException(5, "璇蜂紶鍏ee");
+
+		if (StringUtil.isNullOrEmpty(params.getIp()))
+			throw new WXPlaceOrderParamsException(6, "璇蜂紶鍏p");
+
+		if (StringUtil.isNullOrEmpty(params.getNotifyUrl()))
+			throw new WXPlaceOrderParamsException(7, "璇蜂紶鍏otifyUrl");
+
+		if (StringUtil.isNullOrEmpty(params.getTradeType()))
+			throw new WXPlaceOrderParamsException(8, "璇蜂紶鍏radeType");
+
+//		if (StringUtil.isNullOrEmpty(params.getOpenId()))
+//			throw new WXPlaceOrderParamsException(9, "璇蜂紶鍏penId");
+
+		Map<String, String> map = new HashMap<String, String>();
+		map.put("appid", params.getInfo().getAppId());
+		map.put("mch_id", params.getInfo().getMchId());
+		map.put("nonce_str", StringUtil.getRandomCode(32));
+		map.put("body", params.getBody());
+		map.put("out_trade_no", params.getOrderNo());
+		map.put("total_fee", "" + params.getFee().multiply(new BigDecimal(100)).intValue());
+		map.put("spbill_create_ip", params.getIp());
+		map.put("notify_url", params.getNotifyUrl());
+		map.put("trade_type", params.getTradeType());
+		if (!StringUtil.isNullOrEmpty(params.getOpenId()))
+			map.put("openid", params.getOpenId());
+		map.put("sign", WXUtil.getSignMD5(map, params.getInfo().getMchKey()));
+
+		String entity = WXUtil.loadWXMessage(map);
+
+		String result = HttpUtil.post("https://api.mch.weixin.qq.com/pay/unifiedorder", entity);
+		System.out.println("缁熶竴涓嬪崟缁撴灉:" + result);
+		Map<String, String> resultMap = WXUtil.parseXML(result);
+
+		return resultMap;
+	}
 }

--
Gitblit v1.8.0