From d1f26741bddf6f512d62c0100d42c52be8d37e76 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 06 二月 2021 15:35:40 +0800 Subject: [PATCH] 工具类优化 --- utils/src/main/java/org/yeshi/utils/wx/WXPayV3Util.java | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 43 insertions(+), 6 deletions(-) diff --git a/utils/src/main/java/org/yeshi/utils/wx/WXPayV3Util.java b/utils/src/main/java/org/yeshi/utils/wx/WXPayV3Util.java index 457354d..f137533 100644 --- a/utils/src/main/java/org/yeshi/utils/wx/WXPayV3Util.java +++ b/utils/src/main/java/org/yeshi/utils/wx/WXPayV3Util.java @@ -1,5 +1,6 @@ package org.yeshi.utils.wx; +import com.google.gson.Gson; import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder; import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier; import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner; @@ -17,6 +18,7 @@ import org.apache.http.util.EntityUtils; import org.yeshi.utils.StringUtil; import org.yeshi.utils.entity.wx.WXAPPInfo; +import org.yeshi.utils.entity.wx.WXPayOrderInfoV3; import org.yeshi.utils.entity.wx.WXPlaceOrderParams; import org.yeshi.utils.exception.WXOrderException; import org.yeshi.utils.exception.WXPlaceOrderParamsException; @@ -25,6 +27,7 @@ import java.io.FileInputStream; import java.math.BigDecimal; import java.net.URLEncoder; +import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.security.PrivateKey; @@ -63,8 +66,13 @@ private static JSONObject request(String url, String requestData, WXAPPInfo app) throws Exception { HttpPost httpPost = new HttpPost(url); + + if (StringUtil.isNullOrEmpty(requestData)) { + requestData = "{}"; + } + if (!StringUtil.isNullOrEmpty(requestData)) { - StringEntity entity = new StringEntity(requestData, ContentType.APPLICATION_JSON.withCharset(Charsets.UTF_8)); + StringEntity entity = new StringEntity(requestData, ContentType.APPLICATION_JSON.withCharset(Charset.forName("UTF-8"))); entity.setContentType("application/json;charset=utf-8"); httpPost.setEntity(entity); } @@ -163,15 +171,33 @@ * @throws WXOrderException */ public static boolean isPaySuccess(String orderNo, WXAPPInfo app) throws Exception { - String url = String.format("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/%s?mchid=%s", URLEncoder.encode(orderNo), app.getMchId()); - JSONObject result = request(url, null, app); - if (result == null) + WXPayOrderInfoV3 info = getPayOrderInfo(orderNo, app); + if (info == null) return false; - return "SUCCESS".equalsIgnoreCase(result.optString("trade_state")); + return "SUCCESS".equalsIgnoreCase(info.getTrade_state()); + } + + + /** + * 鑾峰彇璁㈠崟淇℃伅 + * + * @param orderNo + * @param app + * @return + * @throws Exception + */ + public static WXPayOrderInfoV3 getPayOrderInfo(String orderNo, WXAPPInfo app) throws Exception { + String url = String.format("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/%s?mchid=%s", URLEncoder.encode(orderNo), app.getMchId()); + JSONObject result = request(url, "", app); + if (result == null) + return null; + return new Gson().fromJson(result.toString(), WXPayOrderInfoV3.class); } public static void main(String[] args) { + + String privateKey = ""; try { String content = IOUtils.toString(new FileInputStream("D:\\椤圭洰\\杩斿埄鍒竆\鍟嗘埛骞冲彴\\1520950211_20210125_cert\\apiclient_key.pem")); @@ -181,19 +207,30 @@ } catch (Exception e) { } + WXAPPInfo app = new WXAPPInfo("wxa99686bb65a9f466", "1520950211", "454328C324C6CC21355D064B44D6524CD7506DD0", privateKey, "XYJkJ2018FAfaodCCx899mLl138rfGVd"); + + WXPlaceOrderParams params = new WXPlaceOrderParams(); params.setBody("褰辫澶у叏VIP-鍖呮湀"); params.setFee(new BigDecimal("0.1")); params.setNotifyUrl("http://api.ysdq.yeshitv.com:8089/BuWan/wx/pay/vip"); params.setOrderNo("buwan-vip-8"); params.setIp("113.249.192.231"); - params.setApp(new WXAPPInfo("wxa99686bb65a9f466", "1520950211", "454328C324C6CC21355D064B44D6524CD7506DD0", privateKey, "XYJkJ2018FAfaodCCx899mLl138rfGVd")); + params.setApp(app); try { String payUrl = WXPayV3Util.createH5Order(params, "http://vip.ysdq.yeshitv.com/wx_result.html"); System.out.println(payUrl); } catch (Exception e) { e.printStackTrace(); } + + try { + WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo("buwan-vip-8", app); + System.out.println(info); + } catch (Exception e) { + e.printStackTrace(); + } } + } -- Gitblit v1.8.0