From e7920b14a9baab97035a1a529da85d124a2bcacd Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 16 六月 2020 10:54:29 +0800
Subject: [PATCH] 云发单对测试用户显示

---
 fanli/src/main/java/com/yeshi/fanli/util/alipay/AlipayApi.java |  101 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 64 insertions(+), 37 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/alipay/AlipayApi.java b/fanli/src/main/java/com/yeshi/fanli/util/alipay/AlipayApi.java
index d4900e3..ff95516 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/alipay/AlipayApi.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/alipay/AlipayApi.java
@@ -1,38 +1,82 @@
 package com.yeshi.fanli.util.alipay;
 
 import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Map;
 
-import com.alibaba.fastjson.JSON;
-import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.CertAlipayRequest;
 import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.request.AlipayTradeQueryRequest;
 import com.alipay.api.request.AlipayTradeWapPayRequest;
 import com.alipay.api.response.AlipayTradeQueryResponse;
+import com.yeshi.fanli.dto.AlipayTradeWapPayDTO;
+import com.yeshi.fanli.entity.config.AlipayWapConfig;
+import com.yeshi.fanli.util.AlipayUtil;
+import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.StringUtil;
+
+import net.sf.json.JSONObject;
 
 public class AlipayApi {
 
+	private static DefaultAlipayClient alipayClient = null;
+
+	static {
+		AlipayWapConfig alipayWapConfig = Constant.alipayWapConfig;
+		
+		CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
+		certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
+		certAlipayRequest.setAppId(alipayWapConfig.getAppId());
+		certAlipayRequest.setPrivateKey(alipayWapConfig.getPrivateKey());
+		certAlipayRequest.setFormat("json");
+		certAlipayRequest.setCharset("UTF-8");
+		certAlipayRequest.setSignType("RSA2");
+		certAlipayRequest.setCertPath(
+				AlipayUtil.class.getClassLoader().getResource(alipayWapConfig.getAppCertPath()).getPath());
+		certAlipayRequest.setAlipayPublicCertPath(
+				AlipayUtil.class.getClassLoader().getResource(alipayWapConfig.getAlipayCertPath()).getPath());
+		certAlipayRequest.setRootCertPath(
+				AlipayUtil.class.getClassLoader().getResource(alipayWapConfig.getAlipayRootCertPath()).getPath());
+		try {
+			alipayClient = new DefaultAlipayClient(certAlipayRequest);
+		} catch (AlipayApiException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	
 	/**
 	 * 鍒涘缓鏀粯璇锋眰
 	 * @param map
 	 * @return
 	 * @throws Exception
 	 */
-	public static String tradeWapPayRequest(Map<String, String> map, String payNotify, String backUrl) throws Exception{
+	public static String tradeWapPayRequest(AlipayTradeWapPayDTO payDTO) throws Exception{
+		// 寰呰姹傚弬鏁版暟缁�
+		JSONObject json = new JSONObject();
+		// 鏀舵鏂硅处鍙�
+		json.put("seller_id", payDTO.getSellerId());
+		// 璁㈠崟鍙�
+		json.put("out_trade_no", payDTO.getOutTradeNo());
+		// 璁㈠崟閲戦:0.01鍏冿紝绮惧噯鍒板垎
+		json.put("total_amount",payDTO.getTotalAmount());
+		// 璁㈠崟鏍囬
+		json.put("subject", payDTO.getSubject());
+		// 閿�鍞骇鍝佺爜锛屽晢瀹跺拰鏀粯瀹濈绾︾殑浜у搧鐮�
+		json.put("product_code", payDTO.getProductCode());
+		// 璇ョ瑪璁㈠崟鍏佽鐨勬渶鏅氫粯娆炬椂闂达紝閫炬湡灏嗗叧闂氦鏄�  30鍒嗛挓
+		json.put("timeout_express", payDTO.getTimeoutExpress());
+		
+		
 		AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
 		// 鍓嶅彴鍥炶皟鍦板潃
-		alipayRequest.setReturnUrl(backUrl);
+		alipayRequest.setReturnUrl(payDTO.getReturnUrl());
 		// 鎴愬姛浠樻鍥炶皟
-		alipayRequest.setNotifyUrl(payNotify);
+		alipayRequest.setNotifyUrl(payDTO.getNotifyUrl());
 		
-		alipayRequest.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
+		alipayRequest.setBizContent(URLEncoder.encode(json.toString(), "UTF-8"));
 		
-		return AlipayWapConfig.getInstance().pageExecute(alipayRequest).getBody();
+		return alipayClient.pageExecute(alipayRequest).getBody();
 	}
-	
-	
 	
 	/**
 	 * 鏌ヨ鏄惁浜ゆ槗瀹屾垚
@@ -43,44 +87,27 @@
 	 * @return
 	 * @throws Exception
 	 */
-	public static boolean tradeQuery (String outTradeNo, String tradeNo, String orgPid, String queryOptions) throws Exception {
+	public static AlipayTradeQueryResponse tradeQuery(String outTradeNo, String tradeNo, String orgPid, String queryOptions) throws Exception {
 		// 璁㈠崟鏀粯鏃朵紶鍏ョ殑鍟嗘埛璁㈠崟鍙�,鍜屾敮浠樺疂浜ゆ槗鍙蜂笉鑳藉悓鏃朵负绌�
 		if (StringUtil.isNullOrEmpty(outTradeNo) || StringUtil.isNullOrEmpty(outTradeNo)) {
-			return false;
+			return null;
 		}
 		
 		// 寰呰姹傚弬鏁版暟缁�
-		Map<String, String> map = new HashMap<String, String>();
+		JSONObject json = new JSONObject();
 		if (!StringUtil.isNullOrEmpty(outTradeNo))
-			map.put("out_trade_no", outTradeNo);
+			json.put("out_trade_no", outTradeNo);
 		if (!StringUtil.isNullOrEmpty(tradeNo))
-			map.put("trade_no", tradeNo);
+			json.put("trade_no", tradeNo);
 		if (!StringUtil.isNullOrEmpty(orgPid))
-			map.put("org_pid", orgPid);
+			json.put("org_pid", orgPid);
 		if (!StringUtil.isNullOrEmpty(queryOptions))
-			map.put("query_options", queryOptions);
-		
+			json.put("query_options", queryOptions);
 		
 		AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
-		request.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
-	
-		// 鏀粯瀹濇煡璇�
-		AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", AlipayWapConfig.APP_ID,
-				AlipayWapConfig.APP_PRIVATE_KEY, AlipayWapConfig.PARAM_TYPE, AlipayWapConfig.CHARSET,
-				AlipayWapConfig.ALIPAY_PUBLIC_KEY, AlipayWapConfig.SIGNTYPE);
+		request.setBizContent(json.toString());
 		
-		AlipayTradeQueryResponse response = alipayClient.execute(request);
-		if(response.isSuccess()){
-			// 鐩稿簲鎴愬姛
-			if ("TRADE_SUCCESS".equals(response.getTradeStatus())) { 
-				return true; // 浜ゆ槗鏀粯鎴愬姛
-			} else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
-				return true; // 锛堜氦鏄撶粨鏉燂紝涓嶅彲閫�娆撅級
-			}			
-		} 
-		return false;
+		return alipayClient.certificateExecute(request);
 	}
-	
-	
 	
 }

--
Gitblit v1.8.0