async void comprarBono(object sender, System.EventArgs e) { await isRunning(true); cliente = (rodriguez.Data.cliente)Application.Current.Properties["cliente"]; //btnComprar.IsEnabled = false; double montoBono; //tasa = cbMoneda.SelectedItem; Bono b = new Bono() { nombreDestino = txtNombreDestinatario.Text, apellidoDestino = txtApellidoDestinatario.Text, cedulaDestino = txtCedula.Text, telefonoDestino = txtCelular.Text, //monto = int.Parse(txtMonto.Text), fechaCompra = DateTime.Now }; b.clienteId = cliente.ClienteId; if (txtMonto.Text != null) { double.TryParse(txtMonto.Text, out montoBono); b.Monto = montoBono; } if (monedaSeleccionada != null) { b.tasaId = monedaSeleccionada.tasas.First().id; } if (validarBono(b)) { //var currency = monedaSeleccionada.simbolo.Equals("RD") ? "DOP" : monedaSeleccionada.simbolo.Equals("EU") ? "EUR" : monedaSeleccionada.simbolo; var currency = monedaSeleccionada.simbolo.Equals("EU") ? "EUR" : monedaSeleccionada.simbolo; var payment = (new PayPalItem("Bono Supermercado Rodríguez", (decimal)b.Monto, currency)); var result = await CrossPayPalManager.Current.Buy(payment, new Decimal(0)); if (result.Status == PayPalStatus.Cancelled) { await isRunning(false); await DisplayAlert("Cancelado", "Ha cancelado el proceso", "Ok"); } else if (result.Status == PayPalStatus.Error) { await isRunning(false); await DisplayAlert("Error", "Ha ocurrido un error. Intene de nuevo mas tarde", "Ok"); } else if (result.Status == PayPalStatus.Successful) { var paymentId = result.ServerResponse.Response.Id; Debug.WriteLine(result.ServerResponse.Response.Id); PayPalClient paypal = new PayPalClient(); PayPalPayment paymentDetail = await paypal.getPayment(paymentId); b.paypalId = paymentId; //TODO agregar demas propiedades del pago de paypal (estado y metodo) try { var bonoResult = bonoManager.buyBono(b); if (bonoResult != null) { await DisplayAlert("Exito", "Se ha comprado el bono de forma exitosa", "Ok"); await Navigation.PopAsync(); } else { await DisplayAlert("Error", "Ha ocurrido un error. Intene de nuevo mas tarde", "Ok"); } await isRunning(false); } catch (Exception ex) { await isRunning(false); Debug.WriteLine(ex.ToString()); await DisplayAlert("Error", "Ha ocurrido un error. Intene de nuevo mas tarde", "Ok"); } } } else { await isRunning(false); await DisplayAlert("Faltan Datos", "Hay Errores en los datos introducidos", "Ok"); Debug.WriteLine("Hay errores en los datos introducidos"); } }