收藏
回答

支付报错 网络环境未能通过安全验证,请稍后再试

你好!我是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;

        }


最后一次编辑于  02-25
回答关注问题邀请回答
收藏

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    02-25

    您好,请参考:

    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网络再调起支付,这样可能会引发我们的正常拦截,请保持网络环境一致的情况下重新发起支付流程


    02-25
    赞同
    回复 5
    • 在路上
      在路上
      02-26

      我用以下方法,也无法获得终端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;

                  }



              }


      02-26
      回复
    • 微信支付技术助手
      微信支付技术助手
      02-26回复在路上

      您好,请参考:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5

      02-26
      回复
    • 在路上
      在路上
      02-26回复微信支付技术助手

      这里只有nginx Apache这两种情况,没有iis的说明,请指点一下。困扰很久了。

      02-26
      回复
    • 微信支付技术助手
      微信支付技术助手
      02-27回复在路上

      您好,iis的说明需要开发者自己查询了解,网上有很多案例。

      02-27
      回复
    • 在路上
      在路上
      02-27

      已解决,用上面的方法获取到了终端IP,原来页面返存了。谢谢了。

      02-27
      1
      回复