From dbc8f0b2058d809e6dad0ada92d391109cbb4f57 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期五, 15 十一月 2019 15:05:53 +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 | 92 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 88 insertions(+), 4 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 9c3b6c0..9828646 100644 --- a/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java +++ b/utils/src/main/java/org/yeshi/utils/wx/WXPayUtil.java @@ -1,10 +1,16 @@ package org.yeshi.utils.wx; +import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.methods.PostMethod; +import org.dom4j.DocumentException; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.StringUtil; import org.yeshi.utils.entity.wx.RedPackParams; @@ -20,6 +26,22 @@ * */ public class WXPayUtil { + + private static String post(String url,String entity) + { + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + method.setRequestBody(entity); + try { + client.executeMethod(method); + return method.getResponseBodyAsString(); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } /** * 浠樻鍒伴浂閽� @@ -199,8 +221,12 @@ String entity = WXUtil.loadWXMessage(map); - String result = HttpUtil.post("https://api.mch.weixin.qq.com/pay/unifiedorder", entity); - System.out.println("缁熶竴涓嬪崟缁撴灉:" + result); + String result = post("https://api.mch.weixin.qq.com/pay/unifiedorder", entity); + try { + System.out.println("缁熶竴涓嬪崟缁撴灉:" + new String(result.getBytes("GBK"), "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } Map<String, String> resultMap = WXUtil.parseXML(result); return resultMap; @@ -261,8 +287,27 @@ map.put("out_trade_no", orderNo); map.put("sign", WXUtil.getSignMD5(map, app.getMchKey())); String result = HttpUtil.post("https://api.mch.weixin.qq.com/pay/orderquery", WXUtil.loadWXMessage(map)); - System.out.println("璁㈠崟鏌ヨ缁撴灉:" + result); - Map<String, String> resultMap = WXUtil.parseXML(result); + try { + try { + result = new String(result.getBytes("GBK"), "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + System.out.println("璁㈠崟鏌ヨ缁撴灉:" + new String(result.getBytes("GBK"), "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + Map<String, String> resultMap = null; + try { + resultMap = WXUtil.parseXML(result); + } catch (Exception e) { + try { + result = new String(result.getBytes("GBK"), "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + resultMap = WXUtil.parseXML(result); + } if ("SUCCESS".equalsIgnoreCase(resultMap.get("return_code")) && "SUCCESS".equalsIgnoreCase(resultMap.get("result_code"))) { if ("SUCCESS".equalsIgnoreCase(resultMap.get("trade_state")))// 鏀粯鎴愬姛 @@ -274,4 +319,43 @@ } } + /** + * + * @param refundOrderNo + * -閫�娆惧崟鍙� + * @param app + * @return + * @throws WXOrderException + */ + public static boolean isRefundSuccess(String refundOrderNo, WXAPPInfo app) throws WXOrderException { + Map<String, String> map = new HashMap<String, String>(); + map.put("appid", app.getAppId()); + map.put("mch_id", app.getMchId()); + map.put("nonce_str", StringUtil.getRandomCode(32)); + map.put("out_refund_no", refundOrderNo); + map.put("sign", WXUtil.getSignMD5(map, app.getMchKey())); + String result = post("https://api.mch.weixin.qq.com/pay/refundquery", WXUtil.loadWXMessage(map)); + System.out.println("璁㈠崟鏌ヨ缁撴灉:" + result); + Map<String, String> resultMap = null; + try { + resultMap = WXUtil.parseXML(result); + } catch (Throwable e) { + try { + result = new String(result.getBytes("GBK"), "UTF-8"); + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } + resultMap = WXUtil.parseXML(result); + } + if ("SUCCESS".equalsIgnoreCase(resultMap.get("return_code")) + && "SUCCESS".equalsIgnoreCase(resultMap.get("result_code"))) { + if ("SUCCESS".equalsIgnoreCase(resultMap.get("refund_status_0")))// 閫�娆炬垚鍔� + return true; + else + return false; + } else { + throw new WXOrderException(100, "寰俊鏀粯鎺ュ彛鍑洪敊:" + result); + } + } + } -- Gitblit v1.8.0