예제 #1
0
        protected TypeOfCreditCard GetTypeOfCreditCard()
        {
            var result = TypeOfCreditCard.Unknown;

            if (CardNumber == null)
            {
                result = TypeOfCreditCard.Unknown;
            }
            else if (Regex.Match(CardNumber.Replace(" ", ""), "^4[0-9]{6,}$").Length != 0)
            {
                result = TypeOfCreditCard.Visa;
            }
            else if (Regex.Match(CardNumber.Replace(" ", ""), "^5[1-5][0-9]{5,}$").Length != 0)
            {
                result = TypeOfCreditCard.MasterCard;
            }
            else if (Regex.Match(CardNumber.Replace(" ", ""), "^3[47][0-9]{5,}$").Length != 0)
            {
                result = TypeOfCreditCard.AmEx;
            }
            else if (Regex.Match(CardNumber.Replace(" ", ""), "^6(?:011|5[0-9]{2})[0-9]{3,}$").Length != 0)
            {
                result = TypeOfCreditCard.Discover;
            }

            return(result);
        }
예제 #2
0
 private async void Pay()
 {
     var token = stripePaymentService.GeneratePaymentToken(new Models.CardModel
     {
         Number         = CardNumber.Replace(" ", string.Empty),
         ExpMonth       = Convert.ToInt16(Expiry.Substring(0, 2)),
         ExpYear        = Convert.ToInt16(Expiry.Substring(3, 2)),
         Cvc            = Cvv,
         Name           = "Brice Devos",
         AddressCity    = "Paris",
         AddressZip     = "75008",
         AddressCountry = "France",
         AddressLine1   = "16 Rue Victor Hugo"
     });
     var success = await stripePaymentService.PayWithCard(new Models.PaymentModel {
         Amount      = Convert.ToInt16(Amount) * 100,
         Token       = token,
         Description = "Stripe test payment subscription"
     });
 }
예제 #3
0
        private async void Approve_Click(object sender, RoutedEventArgs e)
        {
            if (!IsAllFieldsFilled())
            {
                MessageBox.Show(AppResources.Msg_AllFieldsRequired, AppResources.MsgHdr_AllFieldsRequired, MessageBoxButton.OK);
                return;
            }

            gr_busy.Visibility = Visibility.Visible;

            var card = new Card
            {
                Number   = CardNumber.Replace(" ", ""),
                ExpMonth = ExpMonth,
                ExpYear  = ExpYear,
                Cvc      = CVC,
                Name     = NameOnCard
            };

            if (IsAddressRequired)
            {
                card.AddressLine1 = BillingAddress;
                card.AddressZip   = ZipCode;
                card.AddressState = State;
            }

            var api = new PaymentsApi();

            try
            {
                cardToken = await api.CreateCardToken(card, publicKey);
            }
            catch (Exception ex)
            {
                RaiseEventHandler(false, ex);
                return;
            }

            //TODO: just for testing, remove befor rls
            MessageBox.Show(await Task.Factory.StartNew(() => JsonConvert.SerializeObject(cardToken)), "response from simplify", MessageBoxButton.OK);

            var request = new PayNowRequest
            {
                TokenId  = cardToken.Id,
                Amount   = Amount,
                ItemName = ItemName
            };

            var baseLength  = callbackUrl.LastIndexOf('/') + 1;
            var baseAddress = callbackUrl.Substring(0, baseLength);
            var requestUri  = callbackUrl.Substring(baseLength);

            var settings = new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            };
            var requestBody = await Task.Factory.StartNew(() => JsonConvert.SerializeObject(request, settings));

            try
            {
                using (var client = new HttpClient())
                {
                    client.Timeout     = new TimeSpan(0, 0, TIMEOUT);
                    client.BaseAddress = new Uri(baseAddress);
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.UserAgent.Clear();
                    client.DefaultRequestHeaders.UserAgent.ParseAdd("Simplify-PayNowUC-for-WP");
                    using (var response = await client.PostAsync(requestUri, new StringContent(requestBody, Encoding.UTF8, "application/json")))
                    {
                        RaiseEventHandler(true, response);
                    }
                }
            }
            catch (TaskCanceledException)
            {
                RaiseEventHandler(false, new TimeoutException());
            }
            catch (Exception ex)
            {
                RaiseEventHandler(false, ex);
            }
        }