支付寶異步通知不被調用

   相同的配置,同步調用沒問題,異步調用失敗,後來看了下日誌,沒登陸被攔截了。配置攔截器後解決。異步

    但問題是登陸以後進行付款,同步通知攔截爲何就是登陸狀態?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);
    }
View Code

實際狀況應該是這樣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);
}
View Code

打印了一下編碼,樓主傻眼了,GB2312!!日誌

編碼問題解決後,樓主又發現個問題,支付寶不斷回調異步通知,儘管返回的是「success」。萬般無奈之下找到了支付寶人工客服,在對方的配合下最終找到了緣由,http502code

已經成功調用了異步通知,爲何會502呢?緣由就是我內網爲了測試,作了外網映射。而以前申請接口的時候,填寫的網站域名與映射的不一樣,所以bad gateway了。blog

接下來就不用我囉嗦了吧,goodluck~~~接口

相關文章
相關標籤/搜索