From 40b7f4a7f493cfa5d8b2531d99d7ef8f5a9d5f0a Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 27 十一月 2024 14:41:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java | 45 +++++++++++++++++++++++++++++++++++++-------- 1 files changed, 37 insertions(+), 8 deletions(-) diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java index 2eb601c..eb2213c 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java @@ -11,6 +11,10 @@ import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.*; import com.alipay.api.response.*; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAAutoCertificateConfig; +import com.wechat.pay.java.service.payments.jsapi.JsapiService; +import com.wechat.pay.java.service.payments.jsapi.model.CloseOrderRequest; import org.apache.commons.collections.map.HashedMap; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.dom4j.Document; @@ -341,8 +345,9 @@ //将结果xml解析成map body1 = body1.replaceAll("<!\\[CDATA\\[",""); body1 = body1.replaceAll("]]>", ""); + System.err.println("调起支付结果-------------->" + body1); try { - map1 = this.xmlToMap(body1, "UTF-8"); + map1 = PayMoneyUtil.xmlToMap(body1, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (DocumentException e) { @@ -362,7 +367,7 @@ map2.put("nonceStr", map1.get("nonce_str")); map2.put("package", "prepay_id=" + prepay_id); map2.put("signType", "MD5"); - map2.put("timeStamp", new Date().getTime() + ""); + map2.put("timeStamp", System.currentTimeMillis() + ""); String s2 = this.weixinSignature(map2); map2.put("prepay_id", prepay_id); @@ -382,7 +387,7 @@ map3.put("package", "Sign=WXPay"); map3.put("partnerid", mchId); map3.put("prepayid", prepay_id); - map3.put("timestamp", new Date().getTime() / 1000); + map3.put("timestamp", System.currentTimeMillis() / 1000); String s1 = this.weixinSignature(map3); map3.put("sign", s1); System.err.println(map3); @@ -390,11 +395,11 @@ } return null; }else{ - System.err.println(map1.get("err_code_des")); + System.err.println("调起支付异常-------------->" + map1.get("err_code_des")); return ResultUtil.error(map1.get("err_code_des")); } }else{//签名错误,请检查后再试1----1602881362 - System.err.println(map1.get("return_msg") + appid + "----" + mchId); + System.err.println("调起支付异常-------------->" + map1.get("return_msg") + appid + "----" + mchId); return ResultUtil.error(map1.get("return_msg"), new JSONObject()); } } @@ -412,7 +417,7 @@ String param = this.getParam(request); param = param.replaceAll("<!\\[CDATA\\[",""); param = param.replaceAll("]]>", ""); - Map<String, String> map = this.xmlToMap(param, "UTF-8"); + Map<String, String> map = PayMoneyUtil.xmlToMap(param, "UTF-8"); String return_code = map.get("return_code"); if("SUCCESS".equals(return_code)){ String result_code = map.get("result_code"); @@ -815,7 +820,7 @@ body1 = body1.replaceAll("<!\\[CDATA\\[",""); body1 = body1.replaceAll("]]>", ""); try { - map1 = this.xmlToMap(body1, "UTF-8"); + map1 = PayMoneyUtil.xmlToMap(body1, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (DocumentException e) { @@ -849,7 +854,31 @@ return ResultUtil.error(map1.get("return_msg"), new JSONObject()); } } - + + + /** + * 微信关闭订单 + * @param out_trade_no + */ + public void closeWXOrder(String out_trade_no) { + // 使用自动更新平台证书的RSA配置 + // 一个商户号只能初始化一个配置,否则会因为重复的下载任务报错 + Config config = new RSAAutoCertificateConfig.Builder() + .merchantId(mchId) + .privateKeyFromPath("D:\\app\\cert\\weixin\\1602881362\\apiclient_key.pem") + .merchantSerialNumber("7D555A6E50E9205504024685DF6B821319C4DD70") + .apiV3Key("MIIEvQIBADANBgkqhkiG9w0BAQEFAASC") + .build(); + // 构建service + JsapiService service = new JsapiService.Builder().config(config).build(); + CloseOrderRequest closeRequest = new CloseOrderRequest(); + closeRequest.setMchid(mchId); + closeRequest.setOutTradeNo(out_trade_no); + // 方法没有返回值,意味着成功时API返回204 No Content + service.closeOrder(closeRequest); + } + + /** -- Gitblit v1.7.1