ASP.NET支付寶掃碼即時到賬支付開發流程(下)


 接上一篇繼續,用戶在掃描完二維碼支付的時候,會顯示用戶在請求數據中傳遞的一些數據,例如訂單號之類的。如圖:


用戶交易完成之后,支付寶服務器會主動發起通知,調用商戶在請求時設定好的頁面路徑(參數notify_url,如果商戶沒有設定,則不會進行該操作),即在biz_data數據中設定的url.

樣例:


注:支付寶通知商戶支付結果為 post 方法提交請求,以上 GET 方式僅為樣例。


商戶在接收到支付寶交易的通知數據后,必須向支付寶返回處理結果,簡單的來說,就是向頁面輸出狀態:

 Response.Write("success");

Response.Write("fail");
另外特別注意的是,前台頁面必須不能有任何的html代碼和空格
回調頁面Notify_Url.aspx代碼為

 

   protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判斷是否有帶返回參數 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//驗證成功 { string notify_data = Request.Form["notify_data"]; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(notify_data); XmlNode root = xmlDoc.DocumentElement;//返回的根節點 string is_success = root.SelectSingleNode("trade_status").InnerText; if (is_success == "TRADE_FINISHED" || is_success == "TRADE_SUCCESS") { string temp = root.SelectSingleNode("subject").InnerText;//傳 的時候把商品名稱傳成訂單號了,所以接收到的也是訂單號 string orderNo = temp.Split('-')[1];//訂單號 string total_fee = root.SelectSingleNode("total_fee").InnerText;//訂單金額 //用戶可在這里處理訂單情況,修改訂單狀態等,然后給支付寶服務器返回success,即Response.Write("success") Response.Write("success"); //請不要修改或刪除 } else { Response.Write("fail"); //請不要修改或刪除 } } else//驗證失敗 { Response.Write("fail"); } } else { Response.Write("無通知參數"); } }

其中接收到的notify_data數據是一堆xml,我們在接收 的時候可能會出現下面的錯誤(若沒有,則忽略)


解決方法是在配置文件中加上下面這段代碼

<system.web>

    <httpRuntime requestValidationMode="2.0" />

</system.web>

另外,在接收數據的頁面上加上 ValidateRequest="false" 

至此,支付寶掃碼開發的流程基本就結束了,其實也很簡單,只要好好的研究文檔和Demo,也很容易就做出來了。

如果各位朋友在開發中還有什么問題,可以聯系我,我們共同交流。QQ470576160


 

開發包下載:http://www.7qizhi.com/resource-25.html

Demo下載:http://www.7qizhi.com/resource-37.html





免責聲明!

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



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