用MVC作支付寶手機網頁支付問題

支付寶支付接口手機網頁支付安全

從官網扒下來的demo阿里作得仍是至關不錯的,只要參數改正確了基本上都是能跑通,WebForm的沒什麼大問題,此次要講的主要是幾個要注意的問題,由於是用MVC來作服務器

1.要確寶手機網頁支付開通已經申請經過,具體官網都有介紹。asp.net

2.支付寶的同步請求是正常接收到了的,但支付寶支付接口異步通知 AliPaynotify卻沒有接收到任何返回的信息,這裏 支付寶的異步通知其實被 asp.net 的安全機制給攔截了,返回給支付寶的500錯誤信息是 A potentially dangerous Request.Form value was detected from the client異步

解決方法 :

 [HttpPost, ValidateInput(false)]
        public string AliPaynotify(FormCollection collection)

<httpRuntime  requestValidationMode="2.0"  />
編碼

3.在手機上打開連接後能跳轉到支付頁面後,支付寶支付成功後異步回調AliPaynotify,支付寶的例子WebForm 中只要輸出 Response.Write("success"); 支付寶就再也不回調了,MVC該怎麼輸出,支付寶才能接到通知呢?其實能夠用Response.Write("success"); 也能夠用return Content("success")spa

4.支付成功,但AlipayNotify.verifyNotify(params) 這個驗證失敗.net

驗籤順序錯了,正確的順序是這個:service=alipay.wap.trade.create.direct&v=1.0&sec_id=0001?ify_data=…到core文件中調試參數順序,排序的哪一個方法調試

5.支付成功後,支付寶服務器老是會隔一段時間異步返回支付成功的消息給服務器,但VerifyNotify老是不經過,返回的responseTxt以下orm

//驗證消息是不是支付寶發出的合法消息,驗證服務器異步通知 xml

public bool VerifyNotify(Dictionary<string, string> inputPara, string sign)

responseTxt=<?xml version="1.0" encoding="GBK"?><alipay><is_success>F</is_success><error>ILLEGAL_PARTNER</error></alipay>

//判斷responsetTxt是否爲true,isSign是否爲true
//responsetTxt的結果不是true,與服務器設置問題、合做身份者ID、notify_id一分鐘失效有關
//isSign不是true,與安全校驗碼、請求時的參數格式(如:帶自定義參數等)、編碼格式有關
if (responseTxt == "true" && isSign)//驗證成功
{
return true;
}

所以最好是第一次性經過返回Content("success"),當處理異常時處理後也儘可能返回 success不然支付寶服務器始終會認爲服務器沒有正常接收會不斷的發信息。

相關文章
相關標籤/搜索