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