天天看點

驗簽失敗自查方案-支付寶接口常見錯誤系列

說明: 

  驗簽隻需要使用到支付寶公鑰 

錯誤原因: 

  1.支付寶公鑰使用錯誤導緻 

  2.驗簽方法使用錯誤 

  3.參數錯誤導緻,例如亂碼,帶自定義參數,編碼格式。 

自查流程(按照推薦流程檢查) 

  第一步(重點檢查):支付寶公鑰使用是否錯誤參考這個文章自查:[url]https://openclub.alipay.com/read.php?tid=1495&fid=25[/url]

  第二步:驗簽方法錯誤(請使用下方的demo中的位址接收異步通知進行驗簽測試) 

    說明: 

    正常接口使用 AlipaySignature.rsaCheckV1,sign_type不參與簽名 

   特殊說明:AlipaySignature.rsaCheckV2方法生活号異步通知需要使用,會保留sign_type參數參與驗簽。 

   異步demo分享(适用于所有支付類接口異步驗簽) 

    java,php,.NET驗簽demo下載下傳位址:

[url]https://docs.open.alipay.com/203/105910[/url]

    注意:請大家使用手機網站demo進行驗簽測試即可,使用檔案中的notify_url相關的檔案和方法 

    自行實作驗簽參考:[url]https://doc.open.alipay.com/docs/doc.htm?docType=1&articleId=106120[/url] 

 第三步:異步通知傳回參數檢查 

      1.支付傳回的通知不會亂碼,一般java語言可能會在接收以後出現中文亂碼,這個需要自己處理,demo中也給了一個方案(notify_url.jsp頁面中。如果出現亂碼就開啟再測試): 

//擷取支付寶POST過來回報資訊Map params = new HashMap();Map 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] + ",";    }    //亂碼解決,這段代碼在出現亂碼時使用    //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");    params.put(name, valueStr);}           

2.代碼中開啟debug(調試模式) 導緻驗簽失敗(這個問題可能比較少)。 

如果大家根據自查還是沒有解決,歡迎在文章下面進行追問,按照下面格式進行提問(資訊不全不回複,謝謝配合) 

正确提問方式:使用環境(沙箱還是正式環境)+接口名稱(中文+英文)+驗簽失敗的交易号+傳回的參數(提供&符号連接配接的格式) 

如果解決了大家的問題,歡迎點贊評論支援一下