From c8d237747918de7618c9bbd3ad21f782cee168ab Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 06 一月 2022 16:32:00 +0800
Subject: [PATCH] 商业街代码提交

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
index fcb26e1..26e450e 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
@@ -76,5 +76,60 @@
         parameters.put("paySign", sign);
         return parameters;
     }
+    public static String h5pay(String appid, String mchId, String payKey, String notifyUrl, String body,
+                                         String openid, String outTradeNo, BigDecimal money, String tradeType) {
+        String nonceStr = PayUtil.makeUUID(32);
+        SortedMap<Object, Object> params = new TreeMap<>();
+        params.put("appid", appid);
+        params.put("body", body);
+        params.put("mch_id", mchId);
+        params.put("nonce_str", nonceStr);
+        params.put("notify_url", notifyUrl);
+        params.put("openid", openid);
+        params.put("out_trade_no", outTradeNo);// 商品订单号
+        params.put("spbill_create_ip", PayUtil.getLocalIp());// 服务部署的ip
+        params.put("total_fee", PayUtil.moneyToIntegerStr(money));// 费用的参数转型
+        params.put("trade_type", tradeType);// 对接类型
+        params.put("sign", PayUtil.createSign(PayCpmstant.DEFAULT_ENCODING, params, payKey));// MD5签名
+        // 转换成xml
+        String xmlData = PayUtil.getRequestXml(params);
+        // 请求微信后台,获取支付id
+        String resXml = HttpClientUtil.httpsRequest(PayCpmstant.UNIFIEDORDER_URL, xmlData);
+        log.info("请求微信支付返回参数:" + resXml);
 
+        org.json.JSONObject resultData = XML.toJSONObject(resXml);
+        JSONObject data = JSON.parseObject(resultData.get("xml").toString());
+        JSONObject result = new JSONObject();
+
+            if (data.get("return_msg").equals(PayCpmstant.RETURN_MSG)
+                    && data.get("return_code").equals(PayCpmstant.RETURN_CODE)) {
+                // 将微信统一下单成功的参数拼接再签名
+                // 统一下单返回prepay_id
+                if(tradeType.equals("JSAPI")) {
+                    String prepayId = "prepay_id=" + data.getString("prepay_id");
+                    // 时间戳
+                    Long timeStamp = System.currentTimeMillis() / 1000;
+                    // 封装需要签名的字段
+                    SortedMap<Object, Object> payParams = new TreeMap<>();
+                    payParams.put("appId", appid);
+                    payParams.put("nonceStr", nonceStr);
+                    payParams.put("package", prepayId);
+                    payParams.put("signType", PayCpmstant.SIGN_TYPE);
+                    payParams.put("timeStamp", timeStamp);
+                    // 将参数以及签名计算完成封装返回给前端
+                    result.put("timeStamp", timeStamp);
+                    result.put("nonceStr", nonceStr);
+                    result.put("package", prepayId);
+                    result.put("signType", PayCpmstant.SIGN_TYPE);
+                    result.put("paySign", PayUtil.createSign(PayCpmstant.DEFAULT_ENCODING, payParams, payKey));
+                    }
+                else if(tradeType.equals("NATIVE")){
+                    result.put("codeUrl",data.getString("code_url"));
+                    }
+                }
+
+
+
+        return result.toJSONString();
+    }
 }

--
Gitblit v1.7.1