微支付開發(.net)

最近一週多進行微支付開發工做,總結一下關於微支付開發中遇到的問題。api

如寫得不對請你們提出,第一次本身寫文章。嘿嘿...數組

一、申請微支付,登錄公衆平臺後(公衆號爲服務號並已認證),進入「服務」-「服務中心"-「商戶功能」,完成基本資料的填寫;微信

    JS API與Native APIapp

    JS API:就是經過微信端進入你的微商城,在你的微商城中選購好要購買商品,而後再經過微支付進行付款,經過getBrandWCPayRequest接口來調用微支付測試

    Native API:商家本身生成特定的URL,用戶只須要直接點擊這個連接或掃描這個連接二維碼就能夠直接進行支付,不須要選購商品什麼的。編碼

    這裏只說說JS API加密

    JS API支付受權目錄:就是你最終要進行支付的最後一級目錄:http://www.xxxxx.com/支付文件全部目錄或路徑/ 最後"/"不要忘記spa

    維權通知URL和告警通知URL直接填寫相關URL就行了,如:http://www.xxxxxx.com/tmall/warning.aspx.net

    以上幾項必定要填對,若是資料審覈經過後就很難改,目前是不容許改的,但不知道之後可不能夠,在實際開發中,我發現仍是蠻多人填錯。3d

二、第一步所有審覈經過後,將會有郵件發送給你,包括開發須要的APPID,paySignKey,appSecret,財付通partnerId,partnerKey信息

三、進行開發及測試,必定要認真看文檔,只提一下開發中可能遇到問題

    a.如須要測試,請先登錄公衆平臺,填好測試的地址及白名單

      

        

      b.測試只能在申請微支付的公衆號中進行測試

      c.如使用.net版本DEMO須要注意的地方:WxPayHelper.cs這個類中的CreateBizPackage()方法,注意大小寫及順序

         

複製代碼

nativeObj.Add("appId",AppId);
nativeObj.Add("package",GetCftPackage());
nativeObj.Add("timestamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());
nativeObj.Add("noncestr",Wxpay.CommonUtil.CreateNoncestr());
nativeObj.Add("paySign",GetBizSign(nativeObj));
nativeObj.Add("signType",SignType);

複製代碼

    須要換成如下代碼:

            nativeObj.Add("appId",AppId);
            nativeObj.Add("timeStamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());
            nativeObj.Add("nonceStr", Wxpay.CommonUtil.CreateNoncestr());
            nativeObj.Add("package",GetCftPackage());
            nativeObj.Add("paySign", GetBizSign(nativeObj));
            nativeObj.Add("signType", SignType);

    不然可能會出現支付簽名不對的狀況;

    另外,相應的MD5加密和SHA加密的編碼也須要更改,如不更改,可能會出現,body全是英文能夠進行付款,但若是有中文,就沒法進行付款了。

   byte[] btInput = System.Text.Encoding.Default.GetBytes(s);  ======>  byte[] btInput = System.Text.Encoding.UTF8.GetBytes(s);

   JS API調用支付方法這裏就不貼了,文檔裏面有;

   d.關於支付成功後,後臺通知頁面,須要使用Request.QueryString來接收數據,不要使用Request.Form,要否則你會接收不到數據,同時也須要處理髮送過來的xml數據

     可使用

     

 Stream inputStream = Request.InputStream;
                        byte[] b = new byte[inputStream.Length];
                        //將輸入流讀入字節數組
                        inputStream.Read(b, 0, (int)inputStream.Length);
                        //將字節數組轉換爲通過編碼的字符串
                        string inputStr = System.Text.Encoding.UTF8.GetString(b);

    而後用XmlDocument 來處理數據

  f.訂單的查詢及其它工做,相信你把支付搞定,應該是不成問題的。要注意的就是什麼字段須要參與加密什麼的。

  g.訂單查詢等請使用文檔提供的api,注意是https,不要搞錯了

相關文章
相關標籤/搜索