2014-10-18 26 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的低級異常