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");
            }
        }