From 6c6c0825e59377261b9972af95e1e4dafb43fcfd Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期五, 25 十一月 2022 17:44:04 +0800
Subject: [PATCH] Merge branch 'local_20221104' into huacheng_test
---
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java | 49 ++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 42 insertions(+), 7 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 26e450e..32529e4 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,10 +1,12 @@
package com.panzhihua.common.utlis;
import java.math.BigDecimal;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
+import com.panzhihua.common.utlis.wx.WXPayUtil;
import org.json.XML;
import com.alibaba.fastjson.JSON;
@@ -17,7 +19,7 @@
public class WxPayUtils {
public static String getUnifiedorder(String appid, String mchId, String payKey, String notifyUrl, String body,
- String openid, String outTradeNo, BigDecimal money) {
+ String openid, String outTradeNo, BigDecimal money,String attach) {
String nonceStr = PayUtil.makeUUID(32);
SortedMap<Object, Object> params = new TreeMap<>();
params.put("appid", appid);
@@ -26,6 +28,10 @@
params.put("nonce_str", nonceStr);
params.put("notify_url", notifyUrl);
params.put("openid", openid);
+ //附加数据
+ if(StringUtils.isNotEmpty(attach)){
+ params.put("attach", attach);
+ }
params.put("out_trade_no", outTradeNo);// 商品订单号
params.put("spbill_create_ip", PayUtil.getLocalIp());// 服务部署的ip
params.put("total_fee", PayUtil.moneyToIntegerStr(money));// 费用的参数转型
@@ -77,7 +83,7 @@
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 openid, String outTradeNo, BigDecimal money, String tradeType, String clientIp) {
String nonceStr = PayUtil.makeUUID(32);
SortedMap<Object, Object> params = new TreeMap<>();
params.put("appid", appid);
@@ -87,7 +93,7 @@
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("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签名
@@ -122,14 +128,43 @@
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("NATIVE")) {
+ result.put("codeUrl",data.getString("code_url"));
+ } else if(tradeType.equals("MWEB")) {
+ result.put("mWebUrl",data.getString("mweb_url"));
+ }
+ }
return result.toJSONString();
}
+
+ public static String refund(String appid,String mchId,String orderNo,BigDecimal totalFee,BigDecimal refundFee,String refundNo,Boolean isTest) throws Exception {
+ //创建请求地址
+ String url = PayCpmstant.REFUND_URL;
+ Map<String, String> paramMap = new LinkedHashMap<>();
+ paramMap.put("appid",appid);
+ paramMap.put("mch_id",mchId);
+ paramMap.put("nonce_str", WXPayUtil.generateNonceStr());
+ paramMap.put("out_refund_no",refundNo);
+ paramMap.put("out_trade_no",orderNo);
+ paramMap.put("refund_fee",String.valueOf(refundFee.multiply(BigDecimal.valueOf(100)).longValue()));
+ paramMap.put("total_fee",String.valueOf(totalFee.multiply(BigDecimal.valueOf(100)).longValue()));
+ paramMap.put("sign",WXPayUtil.generateSignature(paramMap,PayCpmstant.REFUND_KEY));
+ log.info("微信退款请求参数:{},{},{},{}",url,WXPayUtil.mapToXml(paramMap),mchId,isTest);
+ //接收请求返回值
+ String content = HttpClientUtil.doRefund(url,WXPayUtil.mapToXml(paramMap),mchId,isTest);
+ log.info("微信退款返回字符串:{}",content);
+ Map<String, String> resultMap = WXPayUtil.xmlToMap(content);
+ if (PayCpmstant.RETURN_CODE.equals(resultMap.get(PayCpmstant.RETURN_CODE_CODE))
+ && PayCpmstant.RETURN_CODE.equals(resultMap.get(PayCpmstant.RESULT_CODE_CODE))) {
+ log.info("调用微信退款申请接口成功");
+ return JSONObject.toJSONString(resultMap);
+ }else{
+ log.error("调用微信退款申请接口失败");
+ return "";
+ }
+ }
}
--
Gitblit v1.7.1