微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题
關(guān)于微信公眾平臺支付的問題,耗時整整24小時,一直在糾結(jié),幾乎是一個字母一個字母的查看參數(shù)是否正確。是的,我已經(jīng)在開始懷疑人生了。直到在無數(shù)篇文章中看見了http://blog.csdn.net/triplestudio/article/details/77930105。
開發(fā)語言 ? java ? 使用官方下載的sdk
關(guān)于支付調(diào)取失敗的問題有很多,授權(quán)目錄,簽名時參數(shù)名稱區(qū)分大小寫(簽名參數(shù)都是使用托分規(guī)則),甚至考慮是不是你once_str也需要使用回調(diào)的,各種猜想,各種嘗試。。。。微信官方給出的簽名工具生成的簽名和我的一樣,理應(yīng)排除簽名錯誤。可是沒辦法,同樣報錯,簽名不正確。
無意間,我看見過這樣一句話,如果生成的簽名和官方工具相同,但是還是提示簽名不正確,那么你得考慮是不是你的參數(shù)不正確。
prepay_id是我排除的第一個參數(shù),這是調(diào)用接口生成的,我想應(yīng)該不會錯。接下來,我反復(fù)修改了商戶支付平臺的秘鑰,也就是簽名需要的key值,得到的結(jié)果任然是簽名錯誤,我又把隨機字符串nonceStr改成后臺傳過來的,答案還是這樣。我排除了兩個參數(shù),key和nonceStr,我又對appId反復(fù)確認,timeStamp一位一位的數(shù),看是不是十位,我都快不相信電腦的復(fù)制功能了,我懷疑會復(fù)制不正確。最后我排除所有的字段,應(yīng)該都是正確的,但是我任然不能調(diào)起支付。同樣的提示,簽名驗證失敗。
最后,我在上面的文章中看見了一個對prepay_id不正確的肯定,我仿佛看見希望之光。對,沒錯了,排除了所有可能,最后一個就一定是答案,prepay_id有問題。http://blog.csdn.net/triplestudio/article/details/77930105文章指出,由于最新sdk調(diào)用統(tǒng)一下單的時候sign_type是置為 HMAC-SHA256 而不是使用默認的 MD5。我去仔細看了源碼,原因在于,默認不適用沙箱環(huán)境,沙箱環(huán)境下使用的簽名方式是MD5,而非沙箱環(huán)境下,使用的是HMAC-SHA256.
上面代碼修改為
無論什么環(huán)境,都是用MD5加密方式,ok,成功喚醒支付。可以碎覺了
總結(jié)
以上是生活随笔為你收集整理的微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在集群上运行Shark
- 下一篇: IT桔子2013年度中国互联网创业投资盘