From 26cd8c7b2bc7a725a3de28d3ed883a6f54da84f1 Mon Sep 17 00:00:00 2001
From: DESKTOP-71BH0QO\L、ming <172680469@qq.com>
Date: 星期二, 20 四月 2021 16:59:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java |   79 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 79 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
new file mode 100644
index 0000000..6200822
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
@@ -0,0 +1,79 @@
+package com.panzhihua.common.utlis;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.common.constants.PayCpmstant;
+import lombok.extern.slf4j.Slf4j;
+import org.json.XML;
+
+import java.math.BigDecimal;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+
+@Slf4j
+public class WxPayUtils {
+
+    public static String getUnifiedorder(String appid, String mchId, String payKey, String notifyUrl, String body, String openid, String outTradeNo, BigDecimal money){
+        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", "JSAPI");//对接类型
+        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
+            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));
+        }
+        return result.toJSONString();
+    }
+
+    public static SortedMap<Object, Object> prepayId(Map<String, String> map) {
+        SortedMap<Object, Object> parameters = new TreeMap<>();
+        parameters.put("appId", "");
+        parameters.put("timeStamp", PayUtil.create_timestamp());
+        parameters.put("nonceStr", map.get("nonce_str"));
+        parameters.put("package", "prepay_id=" + map.get("prepay_id"));
+        parameters.put("signType", "MD5");
+        String sign = PayUtil.createSign("UTF-8", parameters, "商户秘钥");
+        parameters.put("prepay_id", "prepay_id=" + map.get("prepay_id"));
+        parameters.put("paySign", sign);
+        return parameters;
+    }
+
+
+
+
+}

--
Gitblit v1.7.1