Beispiel #1
0
            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);
            }
Beispiel #2
0
        // 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;
            }
        }
Beispiel #3
0
            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);
            }
Beispiel #4
0
        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
                {
                }
            }
        }
Beispiel #5
0
        // 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);
                }
            }
        }
Beispiel #8
0
        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.");
            }
        }
Beispiel #9
0
            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);
            }
Beispiel #10
0
        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();
        }