今天支付出现了一个这么问题:某个客户用同一张卡支付,前几天能够,今天一直不行。错误时IP参数错误。 spa
问题的根源是与第三方支付的接口,有一个客户IP参数,第三方用来判断是不是恶意用户。咱们程序是这么获取客户IP,以下 代理
if (request.getHeader("x-forwarded-for") != null&& !"unknown".equalsIgnoreCase(request.getHeader("x-forwarded-for"))) { ip = request.getHeader("x-forwarded-for");}else{ 接口
ip = request.getRemoteAddr();} ip
正常状况下没有问题,可是当客户使用代理或者其余机制是 获取的IP是以逗号分隔的多个ip,这时传到第三方支付机构,他们判断IP参数不正确,不符合他们的规则,也就是一个ip。 get
解决方法,若是是多个IP,只保留一个。 request