今天支付出現了一個這麼問題:某個客戶用同一張卡支付,前幾天能夠,今天一直不行。錯誤時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