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