2011-03-02 6 views
0

그래서 필드 유효성 검사까지 Fluent 유효성 검사 및 서비스 레이어 유효성 검사를 사용하여 내 View Model 유효성 검사를 수행했지만 내 질문에 "신용 카드가 거부되었습니다. ", 논리가 아닌 다른 입력 검증과 관련된 오류가 있습니까?ASP.NET MVC 유효성 검사

답변

2

거부되는 신용 카드는 유효성 확인 오류가 아니며 지불 처리 시도의 결과입니다. 이 지불을 호출하는 컨트롤러에서 다음

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

interface IPaymentGateway { 
    PaymentProcessingResult ProcessPayment(PaymentInfo p); 
} 

예를 들어, 당신은 하락에 대한 가능한 이유 승인의 상태를하거나 거절 할 수 있습니다 중 하나 PaymentProcessingResult 클래스를 반환하는 지불 게이트웨이 서비스가 가정 게이트웨이 서비스에서 적절한 응답을 제공 할 수 있습니다.

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 사전을 사용합니다.

관련 문제