你好!我是C#语言开发的,已经获得终端ip了,可还是报这个错,之前没有采取cdn加速,没有出现这个情况,后面采取的cdn加速后就出现这个问题。如果是蜂窝移动网络一切正常,如果是无线wifi就会出现这个问题,实在找不到解决办法,请大侠指点一下。
public static string GetIP()
{
HttpRequest request = HttpContext.Current.Request;
string result = request.ServerVariables["HTTP_CLIENT_IP"];
if (string.IsNullOrEmpty(result))
{
result = request.ServerVariables["HTTP_X_FORWARDED_FOR"];
}
if (string.IsNullOrEmpty(result))
{
result = request.ServerVariables["REMOTE_ADDR"];
}
return result;
}
您好,请参考:
1. 商户侧统一下单传的终端IP(spbill_create_ip)与用户实际调起支付时微信侧检测到的终端IP不一致导致的,这个问题一般是商户在统一下单时没有传递正确的终端IP到spbill_create_ip导致,详细可参见客户端ip获取指引https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5
2. 统一下单与调起支付时的网络有变动,如统一下单时是WIFI网络,下单成功后切换成4G网络再调起支付,这样可能会引发我们的正常拦截,请保持网络环境一致的情况下重新发起支付流程
我用以下方法,也无法获得终端ip,请问是哪里错了吗。
public static string GetRealIP
{
get
{
string userIP = "未获取用户IP";
try
{
if (HttpContext.Current == null
|| HttpContext.Current.Request == null
|| HttpContext.Current.Request.ServerVariables == null)
return "";
string CustomerIP = "";
//CDN加速后取到的IP
CustomerIP = HttpContext.Current.Request.Headers["Cdn-Src-Ip"];
if (!string.IsNullOrEmpty(CustomerIP))
{
return CustomerIP;
}
CustomerIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!String.IsNullOrEmpty(CustomerIP))
return CustomerIP;
if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
{
CustomerIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (CustomerIP == null)
CustomerIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
CustomerIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (string.Compare(CustomerIP, "unknown", true) == 0)
return HttpContext.Current.Request.UserHostAddress;
return CustomerIP;
}
catch { }
return userIP;
}
}
您好,请参考:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5
这里只有nginx Apache这两种情况,没有iis的说明,请指点一下。困扰很久了。
您好,iis的说明需要开发者自己查询了解,网上有很多案例。
已解决,用上面的方法获取到了终端IP,原来页面返存了。谢谢了。