[微信支付]C# .net 微信掃碼支付Body含有中文導致出現“簽名錯誤”

1.微信支付坑多多,簽名Body竟出錯

經過近期對微信支付的開發,走過太多的坑,真怕以後再做微信支付,特將小問題逐步整理.

此爲微信支付中的native支付第二種支付方式,在請求參數時出現問題:body(商品描述)爲中文時,簽名失敗,爲英文時簽名成功。

系統爲考試系統,測試報名考試是否能正常生成二維碼
測試1:考試名稱爲 wwwsdnh (全英文) [我將考試名稱作爲微信支付的body信息傳入]
在這裏插入圖片描述
微信掃碼後成功顯示,媽呀好激動,終於完成了
在這裏插入圖片描述
結果測試2:考試名稱爲 測試點擊報名考試時是否修改狀態(中文)
前段vue報錯:
在這裏插入圖片描述
後端vs中出現
在這裏插入圖片描述
查看
在這裏插入圖片描述
簽名錯誤,納尼,腫麼可能!我剛剛明明成功了呀!好吧 我服!誰讓微信是爸爸呢!

2.解決方案

通過我的一頓搜索,搞定
原因就是在於body是中文,轉換出了問題導致簽名的算法在轉換時出錯!
解決措施:

找到API的Data類的CalcHMACSHA256Hash方法

在這裏插入圖片描述
在這裏插入圖片描述

將var enc = Encoding.Default;

改爲var enc = Encoding.UTF8; //修改Default爲UTF8**

修改後
在這裏插入圖片描述
在這裏插入圖片描述

3.雖然解決了中文問題,但是還存在一點小問題,比如 數據中存在 冒號,暫時博主沒找出解決方案,坐等大神補充~之後找到後會及時補充.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章