訂餐系統之微信支付,踩了官方demo的坑

      最近一個項目要增長微信支付的功能,想來這個東西出來這麼久了,按微信提供的應該能夠很快搞定的,結果提供的demo( JS API網頁支付)中各類坑,諮詢他們的客服,態度卻是很是好,就是解決不了問題,最後讓我發郵件,一想,這個郵件一來一回至少又得好幾個小時,沒有辦法只能根據開發文檔一個一個核對,再加上些猜測,終於完成了。爲了別的朋友少踩些坑,特此小文,但願對一此朋友有所幫助。html

        

準備工做

         固然,要集成微信支付,首先仍是要先有一個微網站,熟悉的請飄過,不瞭解的,能夠參考下我以前的一篇小文 訂餐系統之微信點餐 更多信息能夠登陸微信公衆平臺程序員

     目前的狀況應該是,只有認證的服務號能夠申請微信支付功能。相關認證、申請的操做,登陸微信公衆平臺一看就知道了,在此就不細說了。要特別注意的就是要填寫相關請求目錄,請求url時,要特別注意,目前微信公衆平臺是不能本身修改的,只能發郵件給:,讓他們修改,郵件格式能夠向客服諮詢。api

    固然,還有一個最重要的準備工做,就是先獲取他們的文檔和demo.  http://wxpay.weixin.qq.com/doc/index.html 要注意的就是,他們的demo中有不少坑哦。不過,他們的文檔我沒有看到問題,細讀這些文檔仍是少不了的。微信

  

測試相關配置

        若是你的賬號如今處於支付測試狀態下,須要進行相關配置。請根據下圖操做。app

  

                            圖(1)微信公衆平臺

 

   

                圖(2)dom

 

demo( JS API網頁支付)中可能有問題的地方

        下面我就把我在微信提供的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的一些問題,用去了我和他們客服的時間,因此但願對在集成或者準備集成的微信支付的朋友有點幫助,作爲程序員,咱們的時間應該是用在更有意義的地方。爲了方便你們,我把本身最後的支付相關代碼也作了整理,雖然不能直接用,其實也是稍微修改下里面的邏輯就能夠直接用,另外,鄙人能力有限,寫得很差,有不對的地方,也請你們海涵哈!

      wxpaydemo.rar

  

     成爲一名優秀的程序員!

相關文章
相關標籤/搜索