Question

Je fais construire une application mobile pour android avec Xamarin et je veux utiliser paypal pour que l'utilisateur nous payer.Après le paiement, je veux envoyé la confirmation de notre serveur pour vérifier que le paiement est bien et complet et fait de la modification relative à l'achat.

J'ai utilisé le kit SDK d'Android pour créer un Java de Liaison de la Bibliothèque.J'ai utilisé le tutoriel: https://github.com/paypal/PayPal-Android-SDK/blob/master/docs/single_payment.md

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

Je l'ai transformée en C#, comme ça:

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

Cela me donner une exception en disant qu'il existe un cast explicite donc je l'ajouter:

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

Cela donne à l'exception suivante: System.InvaliCastException: Cannot cast from source type to destination type.

J'ai essayé tout ce que je pouvais penser à ce que je suis à la recherche de l'aide.

Une fonctionnelle partielle, le projet peut être trouvé ici:https://github.com/PhilSim22/PartialProject/tree/master

Je suis en vertu d'un accord de confidentialité, donc tout n'est pas lié à la question ont été supprimés.désolé pour les inconvénients.

Était-ce utile?

La solution

J'ai trouvé la réponse.J'ai dû utiliser un JAVA distribution au lieu de la normale coulé.voici ma solution:

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

Autres conseils

im vous ne trouvez pas de solution, peut-être le composant parse.com peut vous aider à:https://parse.com/tutorials/integrating-with-third-party-services

Avec toute invalide cast exception, la première chose que je voudrais essayer serait de stocker le résultat que vous souhaitez lancer dans une variable temporaire, et de regarder son type, que ce soit en mode Debug ou par le biais de l'enregistrement.

C'est pourquoi je voudrais faire quelque chose comme ceci:

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

De cette façon, vous pouvez voir si le retour de type correspond à la coulé de type PaymentConfirmation.

Pouvez-vous partager le nom de classe complet de la source et de la destination des classes?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top