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