2011-03-02 176 views
0

所以我有我的視圖模型驗證使用Fluent驗證和我的服務層驗證下來至於字段驗證,但我的問題是你如何處理像「你的信用卡被拒絕「,與邏輯和輸入驗證有關的錯誤?ASP.NET MVC驗證

回答

2

被拒絕的信用卡不是驗證錯誤,而是支付處理嘗試的結果。例如,假設你有一個返回PaymentProcessingResult類,它可以具有的批准狀況,或者有所下降,有可能的原因衰落的支付網關服務:

class PaymentProcessingResult { 
    bool IsApproved { get; set; } 
    string DeclineReason { get; set; } 
} 

interface IPaymentGateway { 
    PaymentProcessingResult ProcessPayment(PaymentInfo p); 
} 

然後在控制器,它調用此付款網關服務,您可以提供一個適當的迴應:

class CheckoutController : Controller { 

    IPaymentGayeway paymentGateway; 

    [HttpPost] 
    public ActionResult ProcessPayment() { 
    var paymentInfo = /* get payment info, from a shopping cart or the like */; 

    var paymentResponse = this.paymentGateway.ProcessPayment(paymentInfo); 

    if (paymentResponse.IsApproved) return View("PaymentReceipt"); 
    else return View("PaymentDeclined", paymentRespone); 

    } 
} 

爲安全起見,一定不要暴露有關的下降的原因太多的信息。付款被拒絕可以通過許多方式進行傳達。您不必顯示付款拒絕視圖,您可以重定向回到輸入付款信息的頁面,並突出顯示並在其中顯示消息,可能使用TempData詞典存儲下一個請求的消息。