天天看點

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

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

準備工作

         當然,要內建微信支付,首先還是要先有一個微網站,熟悉的請飄過,不了解的,可以參考下我之前的一篇小文

訂餐系統之微信點餐

更多資訊可以登入

微信公衆平台

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

    當然,還有一個最重要的準備工作,就是先擷取他們的文檔和demo. 

http://wxpay.weixin.qq.com/doc/index.html

要注意的就是,他們的demo中有很多坑哦。不過,他們的文檔我沒有看到問題,細讀這些文檔還是少不了的。

  

測試相關配置

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

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

                            圖(1)

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

                圖(2)

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

        下面我就把我在微信提供的demo基礎上,說明下要修改的地方。之前一直提示什麼訂單資料驗證失敗,當看下圖時就知道OK了。

    

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

   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

     成為一名優秀的程式員!

版權聲明:

作者:J²

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

編輯:

妞妞 妞妞首頁

出處:http://www.cnblogs.com/jijunjian/

本文版權歸作者和部落格園共有,歡迎轉載,大家好,才是真的好!

#top

繼續閱讀