public IBankClient GetClient(string cardNumber) { var detector = new CreditCardDetector(cardNumber); switch (detector.Brand) { case CardIssuer.AmericanExpress: case CardIssuer.ChinaUnionPay: case CardIssuer.Dankort: case CardIssuer.DinersClub: case CardIssuer.Discover: case CardIssuer.Hipercard: case CardIssuer.JCB: case CardIssuer.Laser: case CardIssuer.Maestro: case CardIssuer.MasterCard: case CardIssuer.RuPay: case CardIssuer.Switch: case CardIssuer.Visa: case CardIssuer.Unknown: return(_client); default: return(_client); } }
protected void ValidateCardNumber() { RuleFor(order => order) .Custom((order, context) => { if (order.CardNumber == string.Empty) { return; } var detector = new CreditCardDetector(order.CardNumber); if (!detector.IsValid()) { var failure = new ValidationFailure(nameof(order.CardNumber), "Número do cartão inválido") { ErrorCode = "003" }; context.AddFailure(failure); } }); RuleFor(order => order.CardNumber) .MaximumLength(22) .NotEmpty() .When(cmd => cmd.PaymentMethodId == default) .WithMessage("O número do cartão é obrigatório e deve conter ate 22 dígitos") .WithErrorCode("004"); }
public IHttpActionResult Get(string number) { GeneralResponse oResponse = new GeneralResponse(); try { CreditCardDetector detector = new CreditCardDetector(number); var response = new { IsValid = detector.IsValid(), Brand = number.CreditCardBrandNameIgnoreLength(), }; oResponse.Success = 1; oResponse.Message = "Exito - validacion de la tarjeta realizada"; oResponse.Data = response; return(Content(HttpStatusCode.OK, oResponse)); } catch (Exception ex) { oResponse.Success = 0; oResponse.Message = "Error - no se pudo validar la tarjeta de credito"; oResponse.Data = ex.Message; return(Content(HttpStatusCode.BadRequest, oResponse)); } }
public async Task <ActionResult <FulfillResponse> > Fulfill(FulfillRequest request) { var detector = new CreditCardDetector(request.CardNumber); if (!detector.IsValid()) { _logger.LogError($"Invalid Card Number | Correlation Id: {request.CorrelationId}"); return(BadRequest("Invalid card number")); } var merchantId = HttpContext.User.Identity.Name; var id = await _paymentService.InitialiseAsync(request, merchantId); var bankRequest = new BankFulfillRequest { ExpiryMonthYear = request.ExpiryMonthYear, CardNumber = request.CardNumber, Amount = request.Amount, CurrencyCode = request.CurrencyCode, CVV = request.CVV, MerchantId = merchantId }; var result = await _clientFactory.GetClient(request.CardNumber).FulfillAsync(bankRequest); var status = GetStatus(result.Status); await _paymentService.FulfillAsync(id, status, result.TransactionId); return(Ok(new FulfillResponse { BankTransactionId = result.TransactionId, Status = status })); }
public Response <ValidationResponse> Post([FromBody] ValidationRequest request) { var result = new Response <ValidationResponse>("payment/validate", 1); result.Data = new ValidationResponse(); try { var detector = new CreditCardDetector(request.CreditCardNumber); result.Data.Status = detector.IsValid(CardIssuer.MasterCard, CardIssuer.Visa); if (!result.Data.Status) { result.Data.Message = "credit card is not valid. currently supporting only mastercard and visa cards"; } } catch (Exception e) { result.Data.Status = false; result.Data.Message = e.Message; } return(result); }
public Response <ValidationResponse> Post([FromBody] ValidationRequest request) { var result = new Response <ValidationResponse>("payment/validate", 2); result.Data = new ValidationResponse(); try { var detector = new CreditCardDetector(request.CreditCardNumber); result.Data.Status = detector.IsValid(CardIssuer.MasterCard, CardIssuer.Maestro, CardIssuer.Visa, CardIssuer.AmericanExpress, CardIssuer.DinersClub, CardIssuer.Discover, CardIssuer.RuPay); if (!result.Data.Status) { result.Data.Message = "credit card is not valid. currently supporting only mastercard, maestro, visa, americanexpress, dinersclub, discover and rupay cards"; } } catch (Exception e) { result.Data.Status = false; result.Data.Message = e.Message; } return(result); }
/// <summary> /// Card validation using CreditCardDetector package which usage Luhn algorithm. /// </summary> /// <param name="cardNumber"></param> /// <returns></returns> private static bool IsValidCard(string cardNumber) { cardNumber = cardNumber.Replace("-", ""); cardNumber = cardNumber.Replace(" ", ""); CreditCardDetector detector = new CreditCardDetector(cardNumber); return(detector.IsValid()); }
public static CardIssuer GetCardType(string cardNumber) { if (!string.IsNullOrEmpty(cardNumber)) { CreditCardDetector detector = new CreditCardDetector(cardNumber); return(detector.Brand); } return(CardIssuer.Unknown); }
public void TestUnknownCardIssuerGeneration() { for (int i = 0; i < 10000; i++) { var unkCard = CreditCardFactory.RandomCardNumber(CardIssuer.Unknown); CreditCardDetector detector = new CreditCardDetector(unkCard); detector.Brand.ShouldBe <CardIssuer>(CardIssuer.Unknown); } }
public ActionResult <Payment> Post([FromBody] Payment payment) { var card = new CreditCardDetector(payment.CardNumber); if (card.IsValid()) { payment.BankSuccess = true; payment.BankTransactionId = Guid.NewGuid().ToString(); } return(Ok(payment)); }
public void GivenANumber_Constructor_CreatesANewInstance(KeyValuePair <string, string[]> data) { // Arrange. foreach (var number in data.Value) { // Act. var detector = new CreditCardDetector(number); // Assert. detector.IsValid().ShouldBe(true); detector.Brand.ToString().ShouldBe(data.Key); } }
public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard(CardIssuer cardIssuer) { // Arrange. // Act. var number = CreditCardFactory.RandomCardNumber(cardIssuer); // Assert. var detector = new CreditCardDetector(number); detector.Brand.ShouldBe(cardIssuer); detector.IsValid(cardIssuer).ShouldBe(true); detector.IsValid().ShouldBe(true); }
public IActionResult Resolve(Home home) { CreditCardDetector validator = new CreditCardDetector(home.no); Home homeValidate = new Home(); homeValidate.no = home.no; homeValidate.isValid = validator.IsValid(); homeValidate.brand = validator.BrandName; DateTime currentDate = DateTime.UtcNow; DateTime creditCardDate = new DateTime(int.Parse(home.year), int.Parse(home.month), currentDate.Day); int comparation = DateTime.Compare(currentDate, creditCardDate); homeValidate.isExpired = comparation < 0; return(View("Index", homeValidate)); }
void OnEntryTextChanged(object sender, TextChangedEventArgs args) { CreditCardDetector det = null; if (!String.IsNullOrEmpty(args.NewTextValue)) { det = new CreditCardDetector(args.NewTextValue); IsValid = det.IsValid(); ((Entry)sender).Text = det.CardNumber; } else { IsValid = false; } }
private static bool CardNumberIsValid(AuthorizationInput authorizationInput, out string cardNumber) { cardNumber = authorizationInput.Card.CardNumber; if (cardNumber.Any(c => !char.IsDigit(c) && c != ' ')) { return(false); } CreditCardDetector detector = new CreditCardDetector(authorizationInput.Card.CardNumber); if (detector.IsValid()) { cardNumber = detector.CardNumber; return(true); } return(false); }
public void InvalidCardNumberDataRaisesError(string cardNumber) { //Arrange ValidationResult result; CreditCardDetector creditCardDetector; var request = this.FakeValidRequestPayment(); request.Card.CardNumber = cardNumber; //Act result = this.requestPaymentAggregateValidator.Validate(request); //Assert Assert.NotEmpty(result.Errors); Assert.Throws <ArgumentException>(() => creditCardDetector = new CreditCardDetector("")); }
public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_MaxLength(CardIssuer cardIssuer) { // Arrange. var maxLength = TestHelperUtilities.Lengths(cardIssuer).Last(); // Act. var number = CreditCardFactory.RandomCardNumber(cardIssuer, maxLength); // Assert. var detector = new CreditCardDetector(number); number.Length.ShouldBe(maxLength); detector.Brand.ShouldBe(cardIssuer); detector.IsValid(cardIssuer).ShouldBe(true); detector.IsValid().ShouldBe(true); }
public static void CheckCard() { Console.WriteLine("Please Enter the Credit Card Number: "); string CCNum = Console.ReadLine(); bool result = CCNum.All(char.IsDigit); while (CCNum.Length < 14 || result == false) { Console.WriteLine("Incorrect Credit Card Number provided, please provide a valid number"); CCNum = Console.ReadLine(); result = CCNum.All(char.IsDigit); } CreditCardDetector detector = new CreditCardDetector(CCNum); Console.WriteLine("Is the Credit Card valid? " + detector.IsValid()); Console.ReadLine(); }
/// <summary> /// Returns true if ... is valid. /// </summary> /// <param name="context">The context.</param> /// <returns> /// <c>true</c> if the specified context is valid; otherwise, <c>false</c>. /// </returns> protected override bool IsValid(PropertyValidatorContext context) { var cardNumber = context.PropertyValue.ToString(); if (string.IsNullOrEmpty(cardNumber)) { return(false); } if (!cardNumber.All(char.IsDigit)) { return(false); } var detector = new CreditCardDetector(cardNumber); return(detector.IsValid()); }
public void GivenACardIssuer_RandomCardNumber_ReturnsAValidCard_Length_MinLength(CardIssuer cardIssuer) { // Arrange. var lengths = TestHelperUtilities.Lengths(cardIssuer); foreach (var len in lengths) { // Act. var number = CreditCardFactory.RandomCardNumber(cardIssuer, len); // Assert. var detector = new CreditCardDetector(number); number.Length.ShouldBe(len); detector.Brand.ShouldBe(cardIssuer); detector.IsValid(cardIssuer).ShouldBe(true); detector.IsValid().ShouldBe(true); } }
private void ProccessPayment(OrderCreatedEvent order) { var payment = new Payment(order.Id, order.CreditCard.CardNumber, order.CreditCard.Expiration, order.CreditCard.Name); var detector = new CreditCardDetector(order.CreditCard.CardNumber); if (detector.IsValid()) { payment.Apply(detector.BrandName); } else { payment.Deny(); } var mongoClient = new MongoClient(Environment.GetEnvironmentVariable("MONGOCONNECTION") ?? _configuration.GetSection("MongoSettings").GetSection("Connection").Value); var payCollection = mongoClient.GetDatabase(Environment.GetEnvironmentVariable("DATABASENAME") ?? _configuration.GetSection("MongoSettings").GetSection("DatabaseName").Value).GetCollection <Payment>("Payments"); // Businness rules, validations... etc.. payCollection.InsertOne(payment); }
public ActionResult Reservation(ReservationModelView rmv) { ViewBag.IdTicket = new SelectList(eventFactory.getTicketsForEvent(rmv.IdEvent).ToList(), "Id", "Name"); if (String.IsNullOrEmpty(rmv.FullName) || String.IsNullOrEmpty(rmv.Email) || String.IsNullOrEmpty(rmv.number) || String.IsNullOrEmpty(rmv.FullName) || String.IsNullOrEmpty(rmv.expiry) || String.IsNullOrEmpty(rmv.cvc) || String.IsNullOrEmpty(rmv.name) || rmv.Quantity == 0) { rmv.ValidationMessage = "Sva polja moraju biti unesena."; return(View(rmv)); } CreditCardDetector detector = new CreditCardDetector(rmv.number); if (detector.IsValid() == false) { rmv.ValidationMessage = "Kartica nije valjana."; return(View(rmv)); } eventFactory.AddNewReservation(rmv); return(RedirectToAction("Details", "Event", new { IdEvent = rmv.IdEvent })); }
public CreditCardValidity GetCreditCardInfo(string ccNumber) { var card = _creditCards.Find(c => c.CardNumber.Equals(decimal.Parse(ccNumber))); CreditCardDetector detector = new CreditCardDetector(ccNumber); var cardValidity = new CreditCardValidity() { BrandName = detector.BrandName, CardNumber = decimal.Parse(detector.CardNumber), IsValid = detector.IsValid() }; if (!cardValidity.IsValid) { cardValidity.Error = "Unknown card and/or not valid card! "; } if (card == null) { cardValidity.Error += "Card doesn't exist on the database!"; } return(cardValidity); }
public CreditCardValidity GetCreditCardInfo(string ccNumber) { CreditCardDetector detector = new CreditCardDetector(ccNumber); CreditCardValidity validity = new CreditCardValidity() { CardNumber = decimal.Parse(detector.CardNumber), BrandName = detector.BrandName, IsValid = detector.IsValid() }; if (!validity.IsValid) { validity.Error = "Unknown card and/or not valid card! "; } var ccInfo = _creditCardRepository.GetCreditCardInfo(decimal.Parse(ccNumber)); if (ccInfo == null) { validity.Error += "Card doesn't exist on the database!"; } return(validity); }
public ActionResult <PaymentDetails> Post([FromBody] Card card) { var cardnumber = new CreditCardDetector(card.cardnumber.ToString()); var payment = new PaymentDetails { cvv = card.cvv, currency = card.currency, ExpiryMonth = card.ExpiryMonth, cardnumber = card.cardnumber, PaymentID = Guid.NewGuid() }; if (cardnumber.IsValid()) { payment.statuscode = "Payment Successful"; } else { payment.statuscode = "Payment unsuccessful"; } return(Ok(payment)); }
private bool NumberValid(string cardNumber) { CreditCardDetector creditCardDetector = new CreditCardDetector(cardNumber); return(creditCardDetector.IsValid()); }
protected void Page_Load(object sender, EventArgs e) { //-------------------------------------------------------------------------------------------------- int idusr = 0; if (!IsPostBack) { CargaCombos(false); } txtNum4.TextChanged += (s, ea) => { string num = ""; if (!String.IsNullOrEmpty(txtNum1.Text) && !String.IsNullOrEmpty(txtNum2.Text) && !String.IsNullOrEmpty(txtNum3.Text) && !String.IsNullOrEmpty(txtNum4.Text)) { num = txtNum1.Text.Trim() + txtNum2.Text.Trim() + txtNum3.Text.Trim() + txtNum4.Text.Trim(); if (Session["tvm"] != null) { tvm = Session["tvm"] as TarjetasViewModel; } else { tvm = new TarjetasViewModel(); } ccv = new CreditCardDetector(num); if (ccv.IsValid()) { tvm.idemisor = SetEmisor(ccv.Brand); tvm.NumeroTarjeta = num; emisor.Value = tvm.idemisor.ToString(); } else { tvm.idemisor = SetEmisor(ccv.Brand); tvm.NumeroTarjeta = ""; emisor.Value = tvm.idemisor.ToString(); } Session["tvm"] = tvm; ws = Session["wsac"] as wsac.IsacClient; jsonPa = ws.GetCatalogo(2, ""); //pais jsonEmi = ws.GetCatalogo(4, ""); //emisor jsonEdo = ws.GetCatalogo(7, ""); //estados jsonCd = ws.GetCatalogo(8, "order by municipio"); //ciudades spnJS.Text = "<script>CargaCombos(); SetEmisor('" + tvm.idemisor.ToString() + "');</script>"; } }; /*btnCancelar.Click += (s, ea) => * { * Session["rvm"] = null; * Session["tvm"] = null; * Response.Redirect("index.aspx"); * };*/ btnGuardar.Click += (s, ea) => { if (Session["tvm"] != null) { tvm = Session["tvm"] as TarjetasViewModel; } else { tvm = new TarjetasViewModel(); } tvm.Idusuario = 0; //int.Parse(Session["idusrlogged"].ToString()); tvm.idpais = int.Parse(hidPais.Value); tvm.ExpiraMM = mes.Value; tvm.ExpiraYY = anio.Value; tvm.Cvc = cvc.Value; tvm.TitularFN = nombre.Value; tvm.TitularLN = apellidos.Value; tvm.CalleyNum = domicilio.Value; tvm.IdEstado = int.Parse(hidEstado.Value); tvm.IdCiudad = int.Parse(hidCiudad.Value); tvm.CP = codpostal.Value; Session["tvm"] = tvm; if (tvm.EsIncompleta()) { CargaCombos(true); } else { if (tvm.ExpiraMM.Length < 2 || tvm.ExpiraYY.Length < 2) { CargaCombos(true); } else { RecargasViewModel rvm = Session["rvm"] as RecargasViewModel; rvm.TipoTrans = TipoTransaccion.PrimeraVez; rvm.idFormaPago = 2; //tarjeta Session["rvm"] = rvm; Response.Redirect("registro.aspx"); } } }; }
/// <summary> /// Gestiona la validacion de la tarjeta de credito, /// y pasa los datos a la clase mvfactura /// </summary> private async void manipularTarjeta() { CreditCardDetector detector; try { if (numeroTarjeta.IsMaskFull) { detector = new CreditCardDetector(numeroTarjeta.Text); if (detector.IsValid()) { if (caducidadTarjeta.IsMaskFull) { if (ccvTarjeta.IsMaskFull) { string[] caducidadSeparada = caducidadTarjeta.Text.Split('/'); int mesCaducidad = int.Parse(caducidadSeparada[0]); int anyoCaducidad = int.Parse(caducidadSeparada[1]); int anyoActual = int.Parse(DateTime.Now.ToString("yy")); int mesActual = int.Parse(DateTime.Now.ToString("MM")); if (mesCaducidad > 12) { await this.ShowMessageAsync("Informacion", "El mes de caducidad es erroneo, no existe el mes: " + mesCaducidad); } else { if (anyoCaducidad == anyoActual) { if (mesCaducidad <= mesActual) { await this.ShowMessageAsync("Informacion", "La operacion no se puede completar porque la tarjeta esta caducada, mes: " + mesCaducidad); } else { this.DialogResult = true; } } else if (anyoCaducidad < anyoActual) { await this.ShowMessageAsync("Informacion", "La operacion no se puede completar porque la tarjeta esta caducada, año: " + anyoCaducidad); } else { this.DialogResult = true; } } } else { await this.ShowMessageAsync("Informacion", "CCV Tarjeta incompleto"); } } else { await this.ShowMessageAsync("Informacion", "Fecha caducidad incompleta"); } } else { await this.ShowMessageAsync("Error", "El numero de tarjeta: " + numeroTarjeta.Text + " no es valido"); } } else { await this.ShowMessageAsync("Informacion", "Numero Tarjeta incorrecto, compruebe su longitud, solo se acepta visa y mastercard"); } } catch (ArgumentException ex) { logger.Error("Error en los argumentos de la tarjeta de credito en la interfazCobro del cliente", ex); } catch (Exception ex2) { logger.Error("Error excepcion desconocida en la interfaz de cobro", ex2); } }
/** * * ****************************************************************************************** * This Action is used to Display Order Receipt. * ****************************************************************************************** */ public async Task <IActionResult> OrderConfirmation(String creditCard) { CreditCardDetector detector = new CreditCardDetector(creditCard); if (detector.IsValid()) { var user = await _UserManagercontext.GetUserAsync(User); var userid = user.Id; bool save = true; var query = _context.Cart.Where(x => x.CustomerID == userid).Select(x => x); var storeInventory = _context.StoreInventory.Include(s => s.Product).Select(x => x); var orderID = 1; var lastOrderID = _context.OrdersHistory.FirstOrDefault(); if (lastOrderID == null) { orderID = 1; } else { var lastOrder = _context.OrdersHistory.Select(x => x).ToList(); orderID = lastOrder.Count() + 1; } List <string> list = new List <string>(); OrderHistory odrHist = new OrderHistory { OrderID = orderID, CustomerID = userid }; _context.Add(odrHist); foreach (var item in query) { foreach (var product in storeInventory) { if (product.StoreID == item.StoreID) { if (product.ProductID == item.ProductID) { if (item.Quantity <= product.StockLevel) { Order ord = new Order { OrderID = orderID, ProductID = item.ProductID, StoreID = item.StoreID, Quantity = item.Quantity }; _context.Add(ord); product.StockLevel = (product.StockLevel - item.Quantity); Cart custCart = new Cart(); custCart = _context.Cart.Where(s => s.CustomerID == userid).Where(s => s.ProductID == product.ProductID).Where(s => s.StoreID == product.StoreID).SingleOrDefault(); _context.Cart.Remove(custCart); } else { save = false; string str = product.Product.Name.ToString(); list.Add(str); } } } } } if (save) { await _context.SaveChangesAsync(); var confirm = _context.Orders.Include(s => s.Product).Include(s => s.Store).Where(s => s.OrderID == orderID).Select(x => x).OrderBy(s => s.StoreID); ViewData["Creditcheck"] = orderID; return(View(confirm.ToList())); } else { return(View("InsufficientQuantity", list)); } } else { ViewData["check"] = creditCard; ViewData["Message"] = "Invalid Credit Card Number"; return(View("CreditCard", creditCard)); } }
public NuevaTarjeta(TipoAnadidor tipo, TarjetasViewModel _t, RecargasViewModel _r) { try { InitializeComponent(); Title = "Nueva tarjeta"; ToolbarItems.Add(new ToolbarItem("Ayuda", "ayuda2.png", () => { var page = new InfoAyuda("nuevat.html"); Navigation.PushPopupAsync(page); })); #if __IOS__ grdScanner.IsVisible = false; #endif tvm = _t; rvm = _r; this.BindingContext = tvm; Refresh(); tvm.Idusuario = App.usr.idusuario; if (App.usr.idpais != 0) { tvm.idpais = App.usr.idpais; } txtNum.Completed += (s, e) => txtMes.Focus(); txtMes.Completed += (s, e) => txtAno.Focus(); txtAno.Completed += (s, e) => txtCvc.Focus(); txtCvc.Completed += (s, e) => txtTitularFN.Focus(); txtTitularFN.Completed += (s, e) => txtTitularLN.Focus(); txtTitularLN.Completed += (s, e) => txtCalleNum.Focus(); txtCalleNum.Completed += (s, e) => txtCP.Focus(); tvm.TarjetaIncompleta += (s, e) => { if (e.estaincompleta) { if (tvm.idpais == 0 || tvm.IdEstado == 0 || tvm.IdCiudad == 0) { lblvalGeo.IsVisible = true; } else { lblvalGeo.IsVisible = false; } btnGuardar.IsEnabled = false; } else { lblvalGeo.IsVisible = false; btnGuardar.IsEnabled = true; } }; txtNum.TextChanged += (sender, e) => { if (!String.IsNullOrEmpty(txtNum.Text)) { if (cardval.IsValid) { CreditCardDetector det = new CreditCardDetector(txtNum.Text); tvm.idemisor = SetEmisor(det.Brand); tvm.NumeroTarjeta = txtNum.Text; lblvalCard.IsVisible = false; //.Text = ""; } else { CreditCardDetector det = new CreditCardDetector(txtNum.Text); tvm.idemisor = SetEmisor(det.Brand); tvm.NumeroTarjeta = ""; lblvalCard.IsVisible = true; //.Text = "El numero de tarjeta es obligatorio, y tal cual aparece en la tarjeta"; } } }; txtMes.TextChanged += Valfecha; txtAno.TextChanged += Valfecha; txtCvc.TextChanged += Valfecha; txtTitularFN.TextChanged += (s, e) => { if (valTitulFN.IsValid) { lblvalTitular.IsVisible = false; //.Text = ""; tvm.TitularFN = CleanString.UseRegex(txtTitularFN.Text); } else { lblvalTitular.IsVisible = true; //.Text = "El nombre del titular es obligatorio y tal cual aparece en la tarjeta"; tvm.TitularFN = ""; } }; txtTitularLN.TextChanged += (s, e) => { if (valTitulLN.IsValid) { lblvalTitular.IsVisible = false; //.Text = ""; tvm.TitularLN = CleanString.UseRegex(txtTitularLN.Text); } else { lblvalTitular.IsVisible = true; //.Text = "El nombre del titular es obligatorio y tal cual aparece en la tarjeta"; tvm.TitularLN = ""; } }; txtCalleNum.TextChanged += (s, e) => { if (valCalle.IsValid) { lblvalCalle.IsVisible = false; //.Text = ""; tvm.CalleyNum = CleanString.UseRegex(txtCalleNum.Text); } else { lblvalCalle.IsVisible = true; //.Text = "El nombre del titular es obligatorio y tal cual aparece en la tarjeta"; tvm.CalleyNum = ""; } }; txtCP.TextChanged += (s, e) => { if (cpval.IsValid) { lblvalCP.IsVisible = false; //.Text = ""; tvm.CP = check.SafeSqlLiteral(txtCP.Text); } else { lblvalCP.IsVisible = true; //.Text = "El nombre del titular es obligatorio y tal cual aparece en la tarjeta"; tvm.CP = ""; } }; string title = ""; ListaOpciones lo; //grdPais.Tapped += async (object sender, EventArgs e) => TapGestureRecognizer tapgrdPais = new TapGestureRecognizer(); tapgrdPais.Tapped += async(s, e) => { grdPais.BackgroundColor = Color.FromHex("#e5e5e5"); //Color.FromHex((App.Current.Resources["ButtonRojo"] as Style).Setters.Where(x => x.Property == BackgroundColorProperty).FirstOrDefault().Value.ToString()); //.Opacity = .5; await Task.Delay(100); grdPais.BackgroundColor = Color.Transparent; //grdEstado.Opacity = 1; ls.Clear(); title = "Seleccione un país"; ls = tvm.lsPais().Select(x => new Opcion { idopc = x.idpais, opc = x.pais, imgopc = x.img }).ToObservableCollection(); lo = new ListaOpciones(ls, title, 2); lo.IdOpc = 1; await App.Nav.PushAsync(lo, Constantes.animated); }; grdPais.GestureRecognizers.Add(tapgrdPais); TapGestureRecognizer tapgrdTipo = new TapGestureRecognizer(); tapgrdTipo.Tapped += async(s, e) => //grdTipo.Tapped += async (object sender, EventArgs e) => { grdTipo.BackgroundColor = Color.FromHex("#e5e5e5"); //Color.FromHex((App.Current.Resources["ButtonRojo"] as Style).Setters.Where(x => x.Property == BackgroundColorProperty).FirstOrDefault().Value.ToString()); //.Opacity = .5; await Task.Delay(100); grdTipo.BackgroundColor = Color.Transparent; //grdEstado.Opacity = 1; ls.Clear(); title = "Seleccione emisor"; ls = tvm.LsEmisores().Select(x => new Opcion { idopc = x.idemisor, opc = x.emisor, imgopc = x.img }).ToObservableCollection(); lo = new ListaOpciones(ls, title, 2); lo.IdOpc = 2; await App.Nav.PushAsync(lo, Constantes.animated); }; grdTipo.GestureRecognizers.Add(tapgrdTipo); TapGestureRecognizer tapgrdScanner = new TapGestureRecognizer(); tapgrdScanner.Tapped += async(s, e) => //vclScanner.Tapped += (s, e) => { grdScanner.BackgroundColor = Color.FromHex("#e5e5e5"); //Color.FromHex((App.Current.Resources["ButtonRojo"] as Style).Setters.Where(x => x.Property == BackgroundColorProperty).FirstOrDefault().Value.ToString()); //.Opacity = .5; await Task.Delay(100); grdScanner.BackgroundColor = Color.Transparent; //grdEstado.Opacity = 1; #if __ANDROID__ var plataforma = DependencyService.Get <ICardReader>(); if (plataforma != null) { plataforma.CardFound = delegate(string FormattedCardNumber, int ExpiryMonth, int ExpiryYear, string CardholderName, Card.IO.CardType CardType) { txtNum.Text = FormattedCardNumber; //txtTitular.Text = CardholderName; txtMes.Text = (ExpiryMonth > 0 ? ExpiryMonth.ToString() : ""); if (ExpiryYear > 0) { if (ExpiryYear.ToString().Length > 2) { txtAno.Text = ExpiryYear.ToString().Substring(2, 2); } else { txtAno.Text = ExpiryYear.ToString(); } } else { txtAno.Text = ""; } }; plataforma.ReadCard(); } #endif #if __IOS__ //var plataforma = DependencyService.Get<ICardReader>(); //if (plataforma != null) //{ // plataforma.CardFound = delegate (string FormattedCardNumber, int ExpiryMonth, int ExpiryYear, string CardholderName, Card.IO.CreditCardType CardType) // { // txtNum.Text = FormattedCardNumber; // //txtTitular.Text = CardholderName; // txtMes.Text = (ExpiryMonth > 0 ? ExpiryMonth.ToString() : ""); // if (ExpiryYear > 0) // { // if (ExpiryYear.ToString().Length > 2) // txtAno.Text = ExpiryYear.ToString().Substring(2, 2); // else // txtAno.Text = ExpiryYear.ToString(); // } // else // txtAno.Text = ""; // }; // plataforma.ReadCard(); //} #endif }; grdScanner.GestureRecognizers.Add(tapgrdScanner); TapGestureRecognizer tapgrdEstado = new TapGestureRecognizer(); tapgrdEstado.Tapped += async(s, e) => //grdEstado.Tapped += async (object sender, EventArgs e) => { grdEstado.BackgroundColor = Color.FromHex("#e5e5e5"); //Color.FromHex((App.Current.Resources["ButtonRojo"] as Style).Setters.Where(x => x.Property == BackgroundColorProperty).FirstOrDefault().Value.ToString()); //.Opacity = .5; await Task.Delay(100); grdEstado.BackgroundColor = Color.Transparent; //grdEstado.Opacity = 1; ls.Clear(); title = "Seleccione estado"; ls = tvm.lsEstados(tvm.idpais).Select(x => new Opcion { idopc = x.idestado, opc = x.estado, }).ToObservableCollection(); lo = new ListaOpciones(ls, title, 2); lo.IdOpc = 3; await App.Nav.PushAsync(lo, Constantes.animated); }; grdEstado.GestureRecognizers.Add(tapgrdEstado); TapGestureRecognizer tapgrdCiudad = new TapGestureRecognizer(); tapgrdCiudad.Tapped += async(s, e) => //btnCiudad.Clicked += async (s,e) => //vclCiudad.Tapped += async (s, e) => { grdCiudad.BackgroundColor = Color.FromHex("#e5e5e5"); await Task.Delay(100); grdCiudad.BackgroundColor = Color.Transparent; //grdEstado.Opacity = 1; ls.Clear(); title = "Seleccione ciudad"; ls = tvm.lsMunicipios(tvm.IdEstado).OrderBy(x => x.municipio).Select(x => new Opcion { idopc = x.idmunicipio, opc = x.municipio, }).ToObservableCollection(); lo = new ListaOpciones(ls, title, 2); lo.IdOpc = 4; await App.Nav.PushAsync(lo, Constantes.animated); }; grdCiudad.GestureRecognizers.Add(tapgrdCiudad); btnGuardar.Clicked += async(sender, e) => { if (tvm.EsIncompleta()) { await DisplayAlert("Error", "Faltan capturar o seleccionar algunos campos", "OK"); } else { if (txtAno.Text.Trim().Length < 2 || txtMes.Text.Trim().Length < 2) { await DisplayAlert("Error", "Revise mes y año de expiración", "OK"); } else { int mm = int.Parse(txtMes.Text.Trim()); int yy = int.Parse(txtAno.Text.Trim()); if (mm < 1 || mm > 12 || yy < DateTime.Now.Year - 2000) { await DisplayAlert("Error", "Revise mes y año de expiración", "OK"); } else { if (App.usr == null || (App.usr != null && (App.usr.email == null || App.usr.idusuario == 0))) { var login = new Login(App.Current); await App.Nav.PushAsync(login, Constantes.animated); } else { btnGuardar.IsEnabled = false; //tvm.TarjetaAlta += async (s, ea) => //{ // UserDialogs.Instance.HideLoading(); // if (ea.Error != null || ea.Cancelled) // await DisplayAlert("Error", "Ocurrio un error, vuelva a intentar", "OK"); // else // await App.Nav.PopAsync(Constantes.animated); //}; //UserDialogs.Instance.ShowLoading("Guardando..."); //tvm.Alta(); rvm.idFormaPago = 2; //tarjeta rvm.TipoTrans = TipoTransaccion.PrimeraVez; rvm.IdTarjeta = 0; Procesar pro = App.Nav.NavigationStack.OfType <Procesar>().FirstOrDefault(); if (pro == null) { await App.Nav.PushAsync(new Procesar(rvm, tvm, TipoTransaccion.PrimeraVez), Constantes.animated); } else { pro.Refresh(rvm, tvm, TipoTransaccion.PrimeraVez); await App.Nav.PopAsync(Constantes.animated); //boto nueva tarjeta (this) await App.Nav.PopAsync(Constantes.animated); //boto medios pago } } } } } }; tvm.ChecaIncompleta(); } catch (Exception e) { } }