From dd8aa15e284c9d4c0c858e22f4130d1785261e01 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期四, 10 三月 2022 09:17:40 +0800
Subject: [PATCH] Merge branch 'hemenkou_dev' into dev
---
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java | 122 ++++++++++++++++++++++++++++++----------
1 files changed, 90 insertions(+), 32 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 6200822..e45714e 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
@@ -1,61 +1,65 @@
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;
+import org.json.XML;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.common.constants.PayCpmstant;
+
+import lombok.extern.slf4j.Slf4j;
+
@Slf4j
public class WxPayUtils {
- public static String getUnifiedorder(String appid, String mchId, String payKey, String notifyUrl, String body, String openid, String outTradeNo, BigDecimal money){
+ 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("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
+ 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
+ // 请求微信后台,获取支付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 (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;
- //封装需要签名的字段
+ // 时间戳
+ 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));
+ 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();
}
@@ -72,8 +76,62 @@
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 clientIp) {
+ 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", clientIp);// 用户真实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"));
+ } else if(tradeType.equals("MWEB")) {
+ result.put("mWebUrl",data.getString("mweb_url"));
+ }
+ }
-
+ return result.toJSONString();
+ }
}
--
Gitblit v1.7.1