2014-10-18 34 views
0

/赶上stripe.net文档说,你应该如下处理错误:尝试Stripe.Net MVC位指示

上的任何服务的出现将引发与条纹返回的消息StripeException任何错误。尝试运行服务调用并捕获StripeException是一个好主意。

如何处理捕获错误并返回视图。

如果chargeService.Create失败,返回视图(stripeCharge);

public ActionResult Create(StripeCharge stripeCharge) 
    { 
     if (ModelState.IsValid) 
     { 
      var myPlan = new StripeChargeCreateOptions(); 
      myPlan.Amount = stripeCharge.Amount; 

      try 
      { 
       var chargeService = new StripeChargeService(); 
       StripeCharge response = chargeService.Create(myPlan); 
      } 
      catch (Exception e) 
      { 
       errorMessage = e.Message; 
      } 

      return RedirectToAction("Index"); 
     } 

     return View(stripeCharge); 
    } 

更新 在进一步研究这个,这可能是一个solution

public ActionResult Create(StripeCharge stripeCharge) 
    { 
     if (ModelState.IsValid) 
     { 
      var myPlan = new StripeChargeCreateOptions(); 
      myPlan.Amount = stripeCharge.Amount; 

      try 
      { 
       var chargeService = new StripeChargeService(); 
       StripeCharge response = chargeService.Create(myPlan); 
       return RedirectToAction("Index"); 
      } 
      catch (Exception e) 
      { 
       errorMessage = e.Message; 
       return View(stripeCharge); 
      } 
     } 
     return View(stripeCharge); 
    } 

回答

0

我正在处理相同的代码现在。我相信你会想要以不同的方式处理错误,最有可能是'card_error',最有可能是'拒绝'或'incorrect_cvc'。

下面的代码片段应该是基本程序流程一段所列的各种错误的documentaion page

try 
    { 
     var stripeCharge = chargeService.Create(myPlan); 
     return stripeCharge.Id; 
    } 
catch (StripeException e) 
    { 
     switch (e.StripeError.ErrorType) 
      { 
       case "card_error": 
         switch (e.StripeError.Code) 
         { 
          case "incorrect_cvc": 
           // example error logger 
           ErrorLog.Enter(e.Message); 
           ErrorLog.Enter(e.HttpStatusCode); 
           ErrorLog.Enter(e.StripeError.ChargeId); 
           return "Incorrect CVC code"; 
          case "card_declined": 
           // todo 
           return ""; 
          case "processing_error": 
           // todo 
           return ""; 
         } 
         return "Other Card Error"; 

        case "api_error": 
         // todo 
         return ""; 

        case "invalid_request_error": 
         // todo 
         return ""; 
       } 

       return "Unknown Error"; 
    } 
0

尝试在一个内抓住

这样你能够确定应该将采取什么样的条纹行动使用StripeException的低级异常