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