微信公衆號支付一直提示「errmsg choosewxpay fail」,也沒有提示具體錯誤信息,簽名沒有問題(簽名驗證地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1),支付目錄設置也沒有問題,由於用的是微信提供的sdk,全部重點檢查了sdk的具體流程,發現了原來是sdk簽名使用的加密算法問題。php
根據微信支付的業務流程,支付主要有兩個步驟:1 後臺調用統一下單接口獲取prepay_id,2 前端再調用js函數chooseWXPay拉起支付,這兩個流程都須要用到簽名前端
sdk下載地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1,使用的java版本的sdk,默認調用統一下單接口的加密是HMACSHA256,而前端js調用chooseWXPay的加密算法只支持MD5,兩次的加密算法不一致也致使提示錯誤信息「errmsg choosewxpay fail」,具體也不知道這兩個流程的加密算法有什麼關聯,微信也不說明。java
sdk文件WXPay.java中默認爲HMACSHA256,都修改成MD5調用支付接口了算法
後面根據錯誤緣由針對性的查了一下微信支付HMACSHA256仍是有其餘同窗發現了這個問題,http://blog.csdn.net/neverneverstops_/article/details/77067169,只是你們搜索的時候通常都是搜索「errmsg choosewxpay fail」、簽名錯誤等,查到的都是簽名錯誤、支付目錄設置問題等等。api