0
所以我有我的視圖模型驗證使用Fluent驗證和我的服務層驗證下來至於字段驗證,但我的問題是你如何處理像「你的信用卡被拒絕「,與邏輯和輸入驗證有關的錯誤?ASP.NET MVC驗證
所以我有我的視圖模型驗證使用Fluent驗證和我的服務層驗證下來至於字段驗證,但我的問題是你如何處理像「你的信用卡被拒絕「,與邏輯和輸入驗證有關的錯誤?ASP.NET MVC驗證
被拒絕的信用卡不是驗證錯誤,而是支付處理嘗試的結果。例如,假設你有一個返回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詞典存儲下一個請求的消息。