說明:
驗簽隻需要使用到支付寶公鑰
錯誤原因:
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(調試模式) 導緻驗簽失敗(這個問題可能比較少)。
如果大家根據自查還是沒有解決,歡迎在文章下面進行追問,按照下面格式進行提問(資訊不全不回複,謝謝配合)
正确提問方式:使用環境(沙箱還是正式環境)+接口名稱(中文+英文)+驗簽失敗的交易号+傳回的參數(提供&符号連接配接的格式)
如果解決了大家的問題,歡迎點贊評論支援一下