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


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

        

准備工作

         當然,要集成微信支付,首先還是要先有一個微網站,熟悉的請飄過,不了解的,可以參考下我之前的一篇小文 訂餐系統之微信點餐 更多信息可以登錄微信公眾平台

     目前的情況應該是,只有認證的服務號可以申請微信支付功能。相關認證、申請的操作,登錄微信公眾平台一看就知道了,在此就不細說了。要特別注意的就是要填寫相關請求目錄,請求url時,要特別注意,目前微信公眾平台是不能自己修改的,只能發郵件給:,讓他們修改,郵件格式可以向客服咨詢。

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

  

測試相關配置

        如果你的帳號現在處於支付測試狀態下,需要進行相關配置。請根據下圖操作。

  

                            圖(1)

 

   

                圖(2)

 

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

  

     成為一名優秀的程序員!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM