微信支付--統一下單接口返回簽名錯誤

以下是微信官方給出的錯誤排除,很重要,必須仔細看看
你好,請按照以下幾點仔細檢查:

1) 使用微信的在線簽名工具檢查簽名是否和程序生成的一致

https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 簽名工具用谷歌打開。

選擇MD5,XML,然後把請求參數xml放進去,就能校驗簽名。

2)如果和微信的在線簽名工具一致,說明程序沒有錯誤,確定是API密鑰錯誤(被別人改動或者記錯了)

在商戶平臺的賬戶信息中更改API密鑰(賬戶設置-安全設置-API安全), 15分鐘後生效

2.1)統一下單用的是A商戶號,也必須是A商戶號登陸商戶平臺設置key纔對。

2.2)要注意統一下單請求參數中total_fee參數的類型是int類型。

3) 如果和微信的在線簽名工具不一致,說明程序有錯誤,常見的錯誤可能是:

3.1) 編碼問題,確保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新簽名,看是否簽名錯誤,如果英文不會錯中文才會錯,基本肯定是編碼問題

3.2:)消息中字段大小寫和文檔中完全一致

4 )統一下單和調起支付簽名類型需要一致。

參數的類型和格式,長度限制需要完全符合文檔的要求

//----------------------分割線-------------------------------------------
使用微信的在線簽名工具檢查簽名後發現簽名生成的是正確的
最後本次經過排查發現造成簽名錯誤的原因是
body 中文問題

雖然在提交xml時進行了utf-8編碼,但好像沒有生效。

於是對body進行一下編碼:

  // 商品描述
  byte[] b = body.getBytes("UTF-8");
  body = new String(b,"UTF-8");

在這裏插入圖片描述

成功支付

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