Pregunta

Estoy construyendo una aplicación móvil para Android con Xamarin y quiero usar PayPal para que el usuario nos pague. Después del pago, quiero enviar la confirmación a nuestro servidor para verificar que el pago sea bueno y completado e hice la modificación relacionada con los comprados.

Utilicé el SDK de Android para crear una biblioteca de enlace Java. Utilicé el tutorial en: https://github.com /paypal/paypal-android-sdk/blob/master/docs/single_payment.md

PaymentConfirmation confirm = 
    data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);

Lo convirtí en C # de SO:

PaymentConfirmation confirm = 
    data.GetParcelableExtra(PaymentActivity.ExtraResultConfirmation);

Esto me da una excepción diciendo que existen un reparto explícito, así que agrego:

PaymentConfirmation confirm = 
   (PaymentConfirmation)data.GetParcelableExtra(PaymentActivity.ExtraResultConfirmation)

Esto proporciona la siguiente excepción: System.InvaliCastException: Cannot cast from source type to destination type.

He intentado todo lo que podía pensar, así que estoy buscando ayuda.

Se puede encontrar un proyecto parcial funcional aquí: https://github.com/philsim22/partialproject/tree/master

Estoy bajo un acuerdo de no cambio de noche, por lo que todo lo que no está relacionado con el problema se ha eliminado. Lo siento por los inconvenientes.

¿Fue útil?

Solución

Encontré la respuesta.Tuve que usar un lanzamiento de Java en lugar de un reparto normal.Aquí está mi solución:

            var confirmObj = data.GetParcelableExtra (PaymentActivity.ExtraResultConfirmation);
            PaymentConfirmation confirm = Android.Runtime.Extensions.JavaCast<PaymentConfirmation> (confirmObj);

Otros consejos

IM No encuentra la solución, tal vez el componente parse.com pueda ayudarlo: https://parse.com/tutorials/integrating-with-t-party-services

Con cualquier excepción fundida no válida, lo primero que intentaría sería almacenar el resultado que desea convertir en una variable temporal, y mirar su tipo, ya sea en modo de depuración o en el registro.

Por lo tanto, haría algo así:

object temp = data.GetParcelableExtra(PaymentActivity.ExtraResultConfirmation);
Console.WriteLine(temp.GetType().FullName);
Console.WriteLine("Can Assign: {0}", typeof(PaymentConfirmation).IsAssignableFrom(temp.GetType()));

De esta manera, podría ver si el tipo devuelto coincide con la confirmación de PAGEN DE TIPO MISMED.

¿Puedes compartir el nombre de la clase completa de las clases de origen y destino?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top