public Charge MakePayment(string token, decimal salePrice, string buyer) { Charge c = new Charge(); var options = new ChargeCreateOptions { Amount = Convert.ToInt64(salePrice), Currency = "usd", Description = "Charge for " + buyer + " on " + Convert.ToString(DateTime.Now), Source = token }; try { var service1 = new ChargeService(); c = service1.Create(options); } catch (Exception ex) { StripeException stripeException = ex.InnerException as StripeException; if (stripeException != null) { string errorMsg = HandleStripeException(stripeException); } } return(c); }
// Should log it.. private static void StripeExceptionHandler(StripeException e) { switch (e.StripeError.ErrorType) { case "card_error": Console.WriteLine(" Code: " + e.StripeError.Code); Console.WriteLine("Message: " + e.StripeError.Message); break; case "api_connection_error": break; case "api_error": break; case "authentication_error": break; case "invalid_request_error": break; case "idempotency_error": break; case "rate_limit_error": break; case "validation_error": break; default: // Unknown Error Type break; } }
private string HandleStripeException(StripeException ex) { string errorMsg = String.Empty; Dictionary <String, String> stripeErrorDictionary = new Dictionary <String, String>() { { "invalid_number", "The card number is not a valid credit card number." }, { "invalid_expiry_month", "The card's expiration month is invalid." }, { "invalid_expiry_year", "The card's expiration year is invalid." }, { "invalid_cvc", "The card's security code is invalid." }, { "invalid_swipe_data", "The card's swipe data is invalid." }, { "incorrect_number", "The card number is incorrect." }, { "expired_card", "The card has expired." }, { "incorrect_cvc", "The card's security code is incorrect." }, { "incorrect_zip", "The card's zip code failed validation." }, { "card_declined", "The card was declined." }, { "missing", "There is no card on a customer that is being charged." }, { "processing_error", "An error occurred while processing the card." }, }; if (stripeErrorDictionary.ContainsKey(ex.StripeError.Code)) { errorMsg = stripeErrorDictionary[ex.StripeError.Code]; } else { errorMsg = "An unknown error occurred."; } return(errorMsg); }
void IEmailHelper.SendStripeError(StripeException error) { Guard.ArgumentNotNull(error.StripeError, "stripeError"); Guard.ArgumentNotNull(error.StripeError.ErrorType, "errorType"); Guard.ArgumentNotNull(error.StripeError.Message, "message"); AlternateView plainView = null; if (emailErrors == "On") { try { string body = String.Empty; //first we create the Plain Text part plainView = AlternateView.CreateAlternateViewFromString(error.StripeError.Code + error.StripeError.ErrorType + error.StripeError.Message, null, "text/plain"); List <AlternateView> views = new List <AlternateView>(); views.Add(plainView); SendMail(adminEmail, "Stripe Error", views); } catch { } } }
// Returns user Error from Stripe Payment Exception string ErrorStripe(StripeException e) { switch (e.StripeError.ErrorType) { case "card_error": case "api_connection_error": return(e.StripeError.Message); //Console.WriteLine("Code: " + e.StripeError.Code); //Console.WriteLine("Message: " + e.StripeError.Message); //break; //case "api_error": // break; //case "authentication_error": // break; //case "invalid_request_error": // break; //case "rate_limit_error": // break; //case "validation_error": // break; default: return(null); } }
public static PaymentGatewayResult <T> Failed(StripeException error) { return(new PaymentGatewayResult <T> { Succeeded = false, Code = error.HttpStatusCode.ToString(), Error = error.Message }); }
public static void UpdatePollingSourceList(PollingResponse pollingResponse) { Source source = pollingResponse.Source; if (source == null) { mPollingAdapter.AddItem( "No source found", "Stopped", "Error", "None"); return; } if (pollingResponse.IsSuccess) { mPollingAdapter.AddItem( source.Status, "complete", source.Id, source.Type); } else if (pollingResponse.IsExpired) { mPollingAdapter.AddItem( "Expired", "Stopped", source.Id, source.Type); } else { StripeException stripeEx = pollingResponse.StripeException; if (stripeEx != null) { mPollingAdapter.AddItem( "error", "ERR", stripeEx.Message, source.Type); } else { mPollingAdapter.AddItem( source.Status, "failed", source.Id, source.Type); } } }
public string ErrorHandler(StripeException exception) { System.Diagnostics.Debug.WriteLine("Error:" + exception.StripeError); switch (exception.StripeError.ErrorType) { case "api_connection_error": // Failure to connect to Stripe's API. case "api_error": // API errors cover any other type of problem (e.g., a temporary problem with Stripe's servers), and are extremely uncommon. return("Unable to connect to our payment servers. Please try again at a later time."); case "authentication_error": // Failure to properly authenticate yourself in the request. return("We're unable to connect to our services to handle your request. Please contact customer support for further details."); case "card_error": // Card errors are the most common type of error you should expect to handle. // They result when the user enters a card that can't be charged for some reason. // Sends in DeclineCode if it is not null, if so, we use the Code instead. return(CardError(exception.StripeError.DeclineCode ?? exception.StripeError.Code)); case "idempotency_error": // Idempotency errors occur when an Idempotency-Key is re-used on a request that does not match the first request's API endpoint and parameters. // NOTE: This is handled already in the StripeController. This is a fallback message. return("Your transaction seems to already have been handled. Please check your purchase history or contact customer support for further details."); case "invalid_request_error": // Invalid request errors arise when your request has invalid parameters. return("Your request could not be processed at this current time. Please contact customer support for further details."); case "rate_limit_error": // Too many requests hit the API too quickly. return("We're experiencing higher volumes of connections. Please try again at a later time."); default: return("Our server encountered an error, and was unable to handle your request. Try again later, and if the issue persists, contact customer support."); } }
public async Task <CardValidate> CardToToken(CreditCard creditCard) { CardValidate ccValidate = new CardValidate(); try { var options = new TokenCreateOptions { Card = new TokenCardOptions { Number = creditCard.Numbers, ExpYear = Convert.ToInt64(creditCard.Year), ExpMonth = Convert.ToInt64(creditCard.Month), Cvc = creditCard.Cvc, //Currency = "usd" } }; var tokenService = new TokenService(); Token stripeToken = tokenService.CreateAsync(options).Result; ccValidate.ccConfirm = stripeToken.Id; } catch (Exception ex) { string stackTrace = Environment.StackTrace; StripeException stripeException = ex.InnerException as StripeException; if (stripeException != null) { ccValidate.ErrorMessages.Add(HandleStripeException(stripeException)); } } return(ccValidate); }
protected void ReturnToPaymentFormWithException(Order order, HttpRequest request, StripeException e) { // Pass through request fields var requestFields = string.Join("", request.Form.AllKeys.Select(k => "<input type=\"hidden\" name=\"" + k + "\" value=\"" + request.Form[k] + "\" />")); //Add error details from the exception. requestFields = requestFields + "<input type=\"hidden\" name=\"TransactionFailed\" value=\"true\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.chargeId\" value=\"" + e.StripeError.ChargeId + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.Code\" value=\"" + e.StripeError.Code + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.Error\" value=\"" + e.StripeError.Error + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.ErrorDescription\" value=\"" + e.StripeError.ErrorDescription + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.ErrorType\" value=\"" + e.StripeError.ErrorType + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.Message\" value=\"" + e.StripeError.Message + "\" />"; requestFields = requestFields + "<input type=\"hidden\" name=\"FailureReason.Parameter\" value=\"" + e.StripeError.Parameter + "\" />"; var paymentForm = PaymentMethodService.Instance.Get(order.StoreId, order.PaymentInformation.PaymentMethodId.Value).GeneratePaymentForm(order, requestFields); //Force the form to auto submit paymentForm += "<script type=\"text/javascript\">document.forms[0].submit();</script>"; //Write out the form HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Write(paymentForm); HttpContext.Current.Response.End(); }