相同的配置,同步調用沒問題,異步調用失敗,後來看了下日誌,沒登陸被攔截了。配置攔截器後解決。異步
但問題是登陸以後進行付款,同步通知攔截爲何就是登陸狀態?ide
另外同步通知會調用自定義頁面,異步通知不會調用自定義頁面測試
在調用異步通知時,驗證結果一直是FALSE,檢查發現漢字亂碼了,網站
官網的demo這樣寫的編碼
//獲取支付寶POST過來反饋信息 Map<String,String> params = new HashMap<String,String>(); Map<String,String[]> requestParams = request.getParameterMap(); for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } //亂碼解決,這段代碼在出現亂碼時使用 valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); params.put(name, valueStr); }
實際狀況應該是這樣Map<String,String> params = new HashMap<String,String>();spa
Map<String,String[]> requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } params.put(name, valueStr); }
打印了一下編碼,樓主傻眼了,GB2312!!日誌
編碼問題解決後,樓主又發現個問題,支付寶不斷回調異步通知,儘管返回的是「success」。萬般無奈之下找到了支付寶人工客服,在對方的配合下最終找到了緣由,http502code
已經成功調用了異步通知,爲何會502呢?緣由就是我內網爲了測試,作了外網映射。而以前申請接口的時候,填寫的網站域名與映射的不一樣,所以bad gateway了。blog
接下來就不用我囉嗦了吧,goodluck~~~接口