2011-03-02 178 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词典存储下一个请求的消息。