天天看點

sign check fail:check Sign and Data Fail報錯攻略

錯誤碼:
com.alipay.api.AlipayApiException: sign check fail: check Sign and ​Fail      

           報錯原因:驗簽失敗 ,未使用正确的支付寶公鑰    

在新版接口的調用過程中,常常出現此報錯。許多人認為自己的公私鑰都是比對的,支付已經成功或者說接口已經調用成功,出現這個報錯百思不得其解。要知道在調用接口過程中,商戶有一對RSA密鑰,支付寶同樣有一對RSA密鑰,在調用過程中商戶用自己的私鑰簽名後請求到支付寶伺服器,支付寶伺服器使用商戶的公鑰(商戶上傳到開放平台的公鑰)驗證是否是商戶發送的請求。此時,接口調用成功,支付寶向商戶發送異步通知或者同步通知。支付寶發送異步通知或者同步通知時,支付寶使用了自己的私鑰簽名,是以商戶需要使用支付寶的公鑰驗簽。錯誤就出在商戶驗簽時沒有使用正确的支付寶公鑰。             

下面我用alipay.trade.query(統一收單線下交易查詢接口)為例截圖說明。               

sign check fail:check Sign and Data Fail報錯攻略
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");      

       這裡的your private_key是指商戶的私鑰,alipay_public_key指支付寶公鑰。(若alipay_public_key值不正确就會報此錯 誤)。

報錯解決:

 确認使用的支付寶公鑰是否正确,不同的環境使用的支付寶公鑰不同,如沙箱環境、線上openapi網關和mapi網關對應的支付寶公鑰是不一樣的。更換正确的支付寶公鑰後即可成功。

查詢支付寶公鑰: 

a)沙箱環境                                 

      1 登入開放平台(

https://openhome.alipay.com

);                  

      2 進入開發者中心,點選沙箱應用,在配置應用中,檢視支付寶公鑰即可。 

b)真實環境               

);                                

      2 進入開發者中心,在我的應用下,選擇使用的應用,在接口加簽方式中,選擇對應的支付寶公鑰即可。