سؤال

أقوم بإنشاء تطبيق جوال لنظام Android باستخدام Xamarin وأريد استخدام paypal حتى يتمكن المستخدم من الدفع لنا.بعد الدفع، أريد إرسال التأكيد إلى الخادم الخاص بنا للتأكد من أن الدفع جيد وكامل وإجراء التعديل المتعلق بالمشتريات.

لقد استخدمت Android SDK لإنشاء مكتبة ربط Java.لقد استخدمت البرنامج التعليمي في: https://github.com/paypal/PayPal-Android-SDK/blob/master/docs/single_Payment.md

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

لقد حولته إلى C# على النحو التالي:

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

هذا يعطيني استثناءً يقول بوجود فريق عمل صريح لذا أقوم بإضافته:

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

وهذا يعطي الاستثناء التالي: System.InvaliCastException: Cannot cast from source type to destination type.

لقد حاولت كل ما يمكنني التفكير فيه لذلك أبحث عن المساعدة.

يمكن العثور على مشروع جزئي وظيفي هنا:https://github.com/PhilSim22/PartialProject/tree/master

أنا ملتزم باتفاقية عدم الإفشاء، لذا تم حذف كل ما لا يتعلق بالقضية.آسف على الإزعاج.

هل كانت مفيدة؟

المحلول

لقد وجدت الجواب.اضطررت إلى استخدام طاقم JAVA بدلاً من طاقم الممثلين العاديين.هنا هو الحل الخاص بي:

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

نصائح أخرى

لم تجد الحل ربما يمكن أن يساعدك المكون parse.com:https://parse.com/tutorials/integrating-with-third-party-services

مع أي استثناء تحويل غير صالح، فإن أول شيء سأحاوله هو تخزين النتيجة التي ترغب في إرسالها إلى متغير مؤقت، وإلقاء نظرة على نوعها، إما في وضع التصحيح أو من خلال التسجيل.

لذلك سأفعل شيئًا مثل هذا:

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

بهذه الطريقة، يمكنك معرفة ما إذا كان النوع الذي تم إرجاعه يتطابق مع النوع المُرسل PaymentConfirmation.

هل يمكنك مشاركة اسم الفئة الكامل لفئات المصدر والوجهة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top