suochencheng 6 жил өмнө
parent
commit
94943898e9

+ 39 - 4
src/main/java/com/izouma/weixin/util/WeixinUtil.java

@@ -6,6 +6,7 @@ import com.izouma.weixin.model.WxpayTemp;
 import com.izouma.weixin.wxpay.MyConfig;
 import com.izouma.weixin.wxpay.MyConfig;
 import com.izouma.weixin.wxpay.WXPay;
 import com.izouma.weixin.wxpay.WXPay;
 import com.izouma.weixin.wxpay.WXPayUtil;
 import com.izouma.weixin.wxpay.WXPayUtil;
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.log4j.Logger;
 import org.json.JSONObject;
 import org.json.JSONObject;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -15,10 +16,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpSession;
 import java.io.*;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.net.InetAddress;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
+import java.net.*;
 import java.security.MessageDigest;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.*;
@@ -224,5 +222,42 @@ public class WeixinUtil {
         return null;
         return null;
     }
     }
 
 
+    public static String getIpAdderss(HttpServletRequest request) {
+
+        InetAddress ia = null;
+        try {
+            // 获取客户端IP地址,考虑反向代理的问题
+            String ip = request.getHeader("x-forwarded-for");
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getHeader("Proxy-Client-IP");
+            }
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getHeader("WL-Proxy-Client-IP");
+            }
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getRemoteAddr();
+                if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
+                    InetAddress inet = null;
+                    try {
+                        inet = InetAddress.getLocalHost();
+                        ip = inet.getHostAddress();
+                    } catch (UnknownHostException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+            if (!StringUtils.isEmpty(ip) && ip.length() > 15) {
+                ip = ip.substring(0, ip.indexOf(","));
+            }
+            return ip;
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+
+
 
 
 }
 }

+ 8 - 1
src/main/java/com/izouma/weixin/web/LeYunFuController.java

@@ -14,6 +14,7 @@ import com.izouma.awesomeadmin.util.PropertiesFileLoader;
 import com.izouma.weixin.dao.WxpayTempMapper;
 import com.izouma.weixin.dao.WxpayTempMapper;
 import com.izouma.weixin.model.WxpayTemp;
 import com.izouma.weixin.model.WxpayTemp;
 import com.izouma.weixin.service.WeiXinService;
 import com.izouma.weixin.service.WeiXinService;
+import com.izouma.weixin.util.WeixinUtil;
 import com.izouma.weixin.wxpay.WXPayUtil;
 import com.izouma.weixin.wxpay.WXPayUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -22,6 +23,8 @@ import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -115,6 +118,10 @@ public class LeYunFuController {
                                @RequestParam(required = true, value = "productId") String productId) {
                                @RequestParam(required = true, value = "productId") String productId) {
         try {
         try {
 
 
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+
+            String ip = WeixinUtil.getIpAdderss(request);
+
             double cash = 1;
             double cash = 1;
 
 
             ProductInfo productInfo = productInfoService.getProductInfoById(productId);
             ProductInfo productInfo = productInfoService.getProductInfoById(productId);
@@ -147,7 +154,7 @@ public class LeYunFuController {
             params.put("body", productInfo.getProductName());            //商品或支付单简要描述
             params.put("body", productInfo.getProductName());            //商品或支付单简要描述
             params.put("out_trade_no", out_trade_no);           //商户系统内部的订单号
             params.put("out_trade_no", out_trade_no);           //商户系统内部的订单号
             params.put("notify_url", PropertiesFileLoader.getProperties("leyunfu_return_url"));     //接收支付结果异步通知回调地址
             params.put("notify_url", PropertiesFileLoader.getProperties("leyunfu_return_url"));     //接收支付结果异步通知回调地址
-            params.put("spbill_create_ip", MbappUtil.getHostAdderss());        //客户端IP
+            params.put("spbill_create_ip", ip);        //客户端IP
             params.put("return_url", PropertiesFileLoader.getProperties("leyunfu_notify_url"));    //页面回调地址
             params.put("return_url", PropertiesFileLoader.getProperties("leyunfu_notify_url"));    //页面回调地址
             params.put("payment_type", "ttrade.weixin.native");   //支付类型
             params.put("payment_type", "ttrade.weixin.native");   //支付类型
             params.put("attach", attach.toString());   //附加数据
             params.put("attach", attach.toString());   //附加数据