最近一直在做微信公眾號開發,遇到個DT的問題:
大家都知道使用jssdk的時候開發人員必須在后台按照官方文檔給定的規則生成簽名,我前前個月就寫好了這個測試demo頁面,而且完全正常能用,像分享等這些功能都親測使用過;但昨天再用的話就一直提醒 invalid signature,天吶,確認自己沒動過這代碼呀,怎么好端端突然 invalid signature呢?經過層層排查,終於找出了這個蛋疼的地方。
c#后台實現signature簽名:
舊版的是注釋的那一行(以前一直這么用好好的),新版的是下一行。話說剛開始實在沒找出原因,無賴又看了一遍文檔,按照條數逐一排查了一遍,前5條完全沒問題。那么問題肯定就出在第6條了,
將當前請求的url換成 自動獲取以后,終於config:ok 了;返回頭對比了一下兩者區別:
http://xxxx/weixin/Test/Jsapi
http://xxxx/weixin/Test/jsapi
發現了問題在於jJ大小寫上;發現問題了,但我一直納悶前段時間我一直用着好好的呀,也沒動過這的代碼;莫非是官方更新?? 本人是這么理解的,后台開發人員經過Shal加密后,將必要的參數傳給前台(nonceStr,timestamp,signature),然后微信再進行一次Shal加密,最終和后台傳過去的簽名signature做比較,但微信加密 這可能大小寫沒有處理(或者人家就是故意要區分大小寫,或者像javaURl本來就區分大小寫,本人覺得不合適),所有出現了兩邊signature一直不等的情況,所以就一直出現 invalid signature。。。。給正在做或將要做的朋友提個醒,繞過它。