支付寶異步通知不被調用


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

    但問題是登錄之后進行付款,同步通知攔截為什么就是登錄狀態?

另外同步通知會調用自定義頁面,異步通知不會調用自定義頁面

 

在調用異步通知時,驗證結果一直是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>();

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”。萬般無奈之下找到了支付寶人工客服,在對方的配合下最終找到了原因,http502

已經成功調用了異步通知,為什么會502呢?原因就是我內網為了測試,做了外網映射。而之前申請接口的時候,填寫的網站域名與映射的不同,因此bad gateway了。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM