Проверка ASP.NET MVC - PullRequest
       3

Проверка ASP.NET MVC

0 голосов
/ 03 марта 2011

Таким образом, у меня отключена проверка моей модели представления с использованием Fluent Validation, а проверка Service Layer - до проверки поля, но мой вопрос заключается в том, как вы справляетесь с ошибками типа «Ваша кредитная карта была отклонена», ошибками, которые имеют делать с логикой, отличной от проверки ввода?

1 Ответ

2 голосов
/ 03 марта 2011

Отклонение кредитной карты не является ошибкой проверки, а является результатом попытки обработки платежа.Например, предположим, что у вас есть служба платежного шлюза, которая возвращает класс 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 для сохранения сообщения для следующего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...