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

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


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

樣例: 服務器


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


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

 Response.Write("success"); spa

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

 

   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,咱們在接收 的時候可能會出現下面的錯誤(若沒有,則忽略)orm


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

<system.web> htm

    <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

相關文章
相關標籤/搜索