最近一個項目要增長微信支付的功能,想來這個東西出來這麼久了,按微信提供的應該能夠很快搞定的,結果提供的demo( JS API網頁支付)中各類坑,諮詢他們的客服,態度卻是很是好,就是解決不了問題,最後讓我發郵件,一想,這個郵件一來一回至少又得好幾個小時,沒有辦法只能根據開發文檔一個一個核對,再加上些猜測,終於完成了。爲了別的朋友少踩些坑,特此小文,但願對一此朋友有所幫助。html
固然,要集成微信支付,首先仍是要先有一個微網站,熟悉的請飄過,不瞭解的,能夠參考下我以前的一篇小文 訂餐系統之微信點餐 更多信息能夠登陸微信公衆平臺程序員
目前的狀況應該是,只有認證的服務號能夠申請微信支付功能。相關認證、申請的操做,登陸微信公衆平臺一看就知道了,在此就不細說了。要特別注意的就是要填寫相關請求目錄,請求url時,要特別注意,目前微信公衆平臺是不能本身修改的,只能發郵件給:weixinpay@tencent.com,讓他們修改,郵件格式能夠向客服諮詢。api
固然,還有一個最重要的準備工做,就是先獲取他們的文檔和demo. http://wxpay.weixin.qq.com/doc/index.html 要注意的就是,他們的demo中有不少坑哦。不過,他們的文檔我沒有看到問題,細讀這些文檔仍是少不了的。微信
若是你的賬號如今處於支付測試狀態下,須要進行相關配置。請根據下圖操做。app
圖(1)微信公衆平臺
圖(2)dom
下面我就把我在微信提供的demo基礎上,說明下要修改的地方。以前一直提示什麼訂單數據驗證失敗,當看下圖時就知道OK了。測試
jsapi.aspx.cs 第50行,增長參數: packageReqHandler.setParameter("bank_type", "WX"); //固定爲"WX";微信支付
/tenpayLib/TenpayUtil.cs 中的key 實際上是 PartnerKey,一開始我還覺得是appkey。網站
/tenpayLib/RequestHandler.cs 中的 key必定要賦值爲 TenpayUtil.key,默認是空的。
/tenpayLib/ResponseHandler.cs 中的 key 和appkey 必定要賦值爲 TenpayUtil.key和TenpayUtil.appkey;
若是你的項目是utf-8的,還要修改如下內容:
TenpayUtil.cs.getNoncestr 變成
public static string getNoncestr()
{
Random random = new Random();
return MD5Util.GetMD5(random.Next(1000).ToString(), charset);
}
/tenpayLib/ResponseHandler.cs 中的charset
全部用到charset的地方修改爲utf-8。
本來是一個簡單的事兒,可因爲官方demo的一些問題,用去了我和他們客服的時間,因此但願對在集成或者準備集成的微信支付的朋友有點幫助,作爲程序員,咱們的時間應該是用在更有意義的地方。爲了方便你們,我把本身最後的支付相關代碼也作了整理,雖然不能直接用,其實也是稍微修改下里面的邏輯就能夠直接用,另外,鄙人能力有限,寫得很差,有不對的地方,也請你們海涵哈!
成爲一名優秀的程序員!