From ef270bd1855b5ce3f398c5df024840a498e33a8f Mon Sep 17 00:00:00 2001
From: MercuryZ <zdmisif@126.com>
Date: 星期四, 31 三月 2022 14:09:17 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/AliPayUtils.java |  124 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 124 insertions(+), 0 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/AliPayUtils.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/AliPayUtils.java
new file mode 100644
index 0000000..e2f8c6d
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/AliPayUtils.java
@@ -0,0 +1,124 @@
+package com.sandu.ximon.admin.utils;
+
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.domain.AlipayTradeRefundModel;
+import com.alipay.api.request.AlipayTradeQueryRequest;
+import com.alipay.api.request.AlipayTradeRefundRequest;
+import com.alipay.api.response.AlipayTradeRefundResponse;
+import com.google.gson.Gson;
+import com.sandu.ximon.admin.config.AlipayConfig;
+import com.sandu.ximon.admin.pay.alipay.UsrAlipayConfigService;
+import com.sandu.ximon.dao.domain.AliConfigEntity;
+import com.sandu.ximon.dao.domain.WxConfigEntity;
+import lombok.AllArgsConstructor;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+
+@AllArgsConstructor
+public class AliPayUtils {
+
+
+    public static boolean alipayQuery(String out_trade_no, Long streetlightId) {
+        AliConfigEntity aliConfigEntity = UsrAlipayConfigService.getBean().getConfigByPoleId(streetlightId);// 鑾峰彇瀹㈡埛鐨勬敮浠樺疂閰嶇疆
+        String checkStr = ConfigCheckUtils.checkAlipayConfig(aliConfigEntity);
+        if (checkStr != null) {
+            LogUtils.error("鏌ヨ澶辫触");
+            return false;
+        }
+        //鑾峰緱鍒濆鍖栫殑AlipayClient
+        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,
+                aliConfigEntity.getAppId(), aliConfigEntity.getPrivateKey(),
+                AlipayConfig.format, AlipayConfig.charset, aliConfigEntity.
+                getPublicKey(), AlipayConfig.sign_type);
+
+        //璁剧疆璇锋眰鍙傛暟
+        AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
+
+        //鍟嗘埛璁㈠崟鍙凤紝鍟嗘埛缃戠珯璁㈠崟绯荤粺涓敮涓�璁㈠崟鍙�
+        alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"}");
+
+        //璇锋眰
+        String result = null;
+        try {
+            result = alipayClient.execute(alipayRequest).getBody();
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        Map map = (Map) new Gson().fromJson(result, Map.class).get("alipay_trade_query_response");
+        if (map.get("sub_msg") != null) {
+            if ("浜ゆ槗涓嶅瓨鍦�".equals(map.get("sub_msg"))) {
+                return false;
+            }
+        }
+        if (map.get("trade_status") == null) {
+            return false;
+        }
+        if ("TRADE_SUCCESS".equals(map.get("trade_status"))) {
+//            String payTime = (String) map.get("send_pay_date");
+            return true;
+        } else if ("TRADE_CLOSED".equals(map.get("trade_status"))) {
+            LogUtils.error("浜ゆ槗宸插叧闂�(鏀粯瀹�)");
+            return false;
+        }
+        return false;
+    }
+
+
+    /**
+     * 鏀粯瀹濋��娆炬帴鍙�
+     *
+     * @return
+     */
+    public static boolean alipayrefund(Long streetlightId,
+                                       String out_trade_no,
+                                       Double refundAmount) {
+        //LogService.getBean().log((long)0, ServerTask.SERVER_TASK,"閫�娆炬搷浣�",null,"{ 杩涜鏀粯瀹濋��娆�:"+out_trade_no+" }");
+        //閫�娆鹃噾棰濓紝涓嶈兘澶т簬璁㈠崟鎬婚噾棰�
+        String refund_amount = refundAmount + "";
+        //閫�娆剧殑鍘熷洜璇存槑
+        String refund_reason = "鍏呯數妗╅��娆�";
+        //鏍囪瘑涓�娆¢��娆捐姹傦紝鍚屼竴绗斾氦鏄撳娆¢��娆鹃渶瑕佷繚璇佸敮涓�锛屽闇�閮ㄥ垎閫�娆撅紝鍒欐鍙傛暟蹇呬紶銆�
+        String out_request_no = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+
+        AliConfigEntity AliConfigEntity = UsrAlipayConfigService.getBean().getConfigByPoleId(streetlightId);   //鎵惧埌鏄摢涓鎴风殑鍏呯數妗�  灏遍��娆剧粰璋�
+        String checkStr = ConfigCheckUtils.checkAlipayConfig(AliConfigEntity);
+        if (checkStr != null) {
+            return false;
+        }
+
+        // SDK 鍏叡璇锋眰绫伙紝鍖呭惈鍏叡璇锋眰鍙傛暟锛屼互鍙婂皝瑁呬簡绛惧悕涓庨獙绛撅紝寮�鍙戣�呮棤闇�鍏虫敞绛惧悕涓庨獙绛�
+        AlipayClient client = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AliConfigEntity.getAppId(),
+                AliConfigEntity.getPrivateKey(), AlipayConfig.format,
+                AlipayConfig.charset, AliConfigEntity.getPublicKey(), AlipayConfig.sign_type);
+        AlipayTradeRefundRequest alipay_request = new AlipayTradeRefundRequest();
+        AlipayTradeRefundModel model = new AlipayTradeRefundModel();
+        model.setOutTradeNo(out_trade_no);
+//        model.setTradeNo(out_trade_no);
+        model.setRefundAmount(refund_amount);
+        model.setRefundReason(refund_reason);
+        model.setOutRequestNo(out_request_no);
+        alipay_request.setBizModel(model);
+
+        AlipayTradeRefundResponse alipay_response = null;
+        try {
+            alipay_response = client.execute(alipay_request);
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+//        System.out.println(alipay_response.getBody());
+        if ("10000".equals(alipay_response.getCode())) {
+            //  閫�娆炬垚鍔�
+            //   LogService.getBean().log((long)0, ServerTask.SERVER_TASK,"閫�娆炬搷浣�",null,"{ 杩涜鏀粯瀹濋��娆�(鎴愬姛):"+out_trade_no+",閫�娆鹃噾棰�:"+refundAmount+" }");
+            return true;
+        }
+        //淇濆瓨閫�娆鹃噾棰濆拰閫�娆惧崟鍙凤紝灏嗚鍗曠姸鎬佺疆涓哄畬鎴愶紙RFERROR锛夛紝淇濆瓨鍒版暟鎹簱
+        //  LogService.getBean().log((long)0, ServerTask.SERVER_TASK,"閫�娆炬搷浣�",null,"{ 杩涜鏀粯瀹濋��娆�(澶辫触):"+out_trade_no+",閫�娆鹃噾棰�:"+refundAmount+",reason: "+ JSON.toJSONString(alipay_response)+" }");
+        return false;
+    }
+
+
+}

--
Gitblit v1.9.3