React-native-iap: كيف تلغي الشراء المعلق يدويًا؟

تم إنشاؤها على ٢٩ يوليو ٢٠١٩  ·  8تعليقات  ·  مصدر: dooboolab/react-native-iap

نسخة من رد فعل - أصلية - IAP

3.3.7

نسخة من رد الفعل الأصلي

0.59.8

المنصات التي واجهت الخطأ فيها (IOS أو Android أو كليهما؟)

ذكري المظهر

سلوك متوقع

عندما أطلب عملية شراء ، فأنا أتحقق من صحة الإيصال على الخادم الخاص بي ، وإذا فشلت عملية التحقق ، فأنا أريد أن أكون قادرًا على إلغاء عملية الشراء يدويًا ، بدلاً من وظيفة PurchaseUpdatedListener التي يتم تشغيلها في كل مرة ، إذا لم تقم باستدعاء الإيصال أو الشراء المستهلك.

السلوك الفعلي

عند عدم الانتهاء من الشراء ، لا يمكنني إلغاء عملية الشراء المعلقة. على نظام Android ، يجب أن أنتظر حتى يتم إلغاؤه تلقائيًا.

بيئة اختبار (محاكي؟ جهاز حقيقي؟)

جهاز حقيقي

خطوات إعادة إنتاج السلوك

قم بالشراء ولا تطلب إقرار الشراء أو الشراء الاستهلاكي.

1️⃣ good first issue ❓ question 🙏 help wanted 🤖 android

التعليق الأكثر فائدة

hyochan ، هل هناك وظيفة مثل تلك على iOS ، لإلغاء عملية شراء لم تكتمل من خلال الاتصال بـ finishTransactionIOS ثم إزالة هذا الشراء من سجل الشراء. لا أعرف ما إذا كانت هناك طريقة أخرى للتحقق مما إذا كان الاشتراك لا يزال نشطًا ، ولكن ما أفعله الآن هو التحقق من تاريخ انتهاء الصلاحية لآخر معاملة في سجل الاستلام. لذلك إذا لم تكتمل عملية الشراء ، فأنا لا أرغب في تسجيلها في سجل الشراء. لسوء الحظ في الوقت الحالي ، هذا بالضبط ما يحدث. وعلى عكس نظام Android ، لن يتم إلغاء عملية الشراء غير المكتملة بعد مرور بعض الوقت ولن يتوقف إطلاقها أبدًا عن طريق purchaseUpdateListener .

لذلك لدي نفس المشكلة على نظامي iOS و android ، فأنا بحاجة إلى إلغاء عملية شراء لم تكتمل. وعلى وجه التحديد على نظام iOS ، عدم تسجيل هذا الشراء في السجل إلا إذا كانت هناك طريقة أكثر فاعلية للتحقق من صحة الاشتراك.

ال 8 كومينتر

حتى نتيجة الفشل ، لا يزال يتعين عليك استدعاء acknowledgePurchase و consumePurchase للمعاملة المنتهية. أنت فقط لا تتابع المنطق مثل عدم إعطاء مكافأة على قاعدة البيانات الخاصة بك. أيضًا ، يجب عليك consmePurchase حتى لا يبقى في تطبيقك.

hyochan إذا

tmjordan أوه ، أرى ما تعنيه. ماذا لو تقدمت بالمنطق بمكافأة إذن؟

hyochan عندما يشتري المستخدم منتجًا ، يتم إرسال الإيصال المقدم إلى خوادم Google للتحقق من صحة الإيصال والحصول على حالة الشراء (إذا تمت الموافقة على الدفع أو تعليقه أو إلغاؤه).
لنفترض أن لدي خطأ أثناء عملية التحقق لا يأتي من خادم google (الواجهة الخلفية الخاصة بي على سبيل المثال) ، لذلك لا يمكنني التحقق من صحة الإيصال وأريد إلغاء الشراء يدويًا بدلاً من الانتظار حتى يتم إلغاؤه بواسطة google ( خلال ذلك الوقت لا يمكنني إجراء عملية شراء أخرى) إذا لم أتصل بـ aknowledgepurchase أو الاستهلاك.
لا أعرف ما إذا كان ذلك ممكنًا ، فربما تكون هذه هي الطريقة التي تعمل بها عملية الشراء على google.

سيكون من الرائع أن نلغي يدويًا عملية شراء لم يتم الإقرار بها أو استهلاكها بعد. في هذا السيناريو ، سيتم رد أموال المستخدم إذا تمت الموافقة على الدفع.
بدلاً من تشغيل عملية الشراء نفسها في كل مرة حتى يتم إلغاؤها بواسطة Google.

tmjordan شكرا pending . أعتقد أنه لا يجب حتى تحصيل رسوم مشتريات pending عند acknowledged بل يجب إزالتها. نأمل أن نتمكن من الاطلاع على مزيد من التفاصيل حول أي تجارب أخرى.

hyochan ، هل هناك وظيفة مثل تلك على iOS ، لإلغاء عملية شراء لم تكتمل من خلال الاتصال بـ finishTransactionIOS ثم إزالة هذا الشراء من سجل الشراء. لا أعرف ما إذا كانت هناك طريقة أخرى للتحقق مما إذا كان الاشتراك لا يزال نشطًا ، ولكن ما أفعله الآن هو التحقق من تاريخ انتهاء الصلاحية لآخر معاملة في سجل الاستلام. لذلك إذا لم تكتمل عملية الشراء ، فأنا لا أرغب في تسجيلها في سجل الشراء. لسوء الحظ في الوقت الحالي ، هذا بالضبط ما يحدث. وعلى عكس نظام Android ، لن يتم إلغاء عملية الشراء غير المكتملة بعد مرور بعض الوقت ولن يتوقف إطلاقها أبدًا عن طريق purchaseUpdateListener .

لذلك لدي نفس المشكلة على نظامي iOS و android ، فأنا بحاجة إلى إلغاء عملية شراء لم تكتمل. وعلى وجه التحديد على نظام iOS ، عدم تسجيل هذا الشراء في السجل إلا إذا كانت هناك طريقة أكثر فاعلية للتحقق من صحة الاشتراك.

أود التعامل مع سيناريو مشابه

  1. المستخدم ابدأ في شراء منتج (حساس للوقت). يجب إرجاع هذا المنتج على الفور
  2. فشل الخادم في إرجاع المنتج. وقد يكون الوقت متأخرًا لإعادة المنتج عن طريق إعادة المحاولة
  3. يتم تشغيل purchaseUpdateListener عدة مرات حتى يتم استدعاء finishTransactionIOS ولكن هذه ليست النتائج المرغوبة. يجب إلغاء الصفقة في هذه المرحلة.

هل هناك طريقة لإلغاء الصفقة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات