الاشتراكات: تم حذف البيانات في Stripe، الآن أخطاء المكون الإضافي

مرحبًا،

أحاول حاليًا تجربة هذا الإضافة للاستخدام المستقبلي على مثيلي، وواجهت مشكلة.

حسابي في Stripe جديد وغير مُتحقق منه، مما يعني أنه يستخدم بيانات اختبارية يمكنني مسحها من لوحة تحكم Stripe > Developers.
المشكلة هي أن مسح البيانات في Stripe لا يؤدي إلى حذف نفس البيانات في مثيل المنتدى. وهذا قد يتسبب في انهيار صفحة الفواتير > الدفع الخاصة بالمستخدم.

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

  1. إنشاء خطة اشتراك.
  2. اشتراك مستخدم في الخطة. سيعطيه Stripe customer_id مثل cus_abcd1234567890.
  3. مسح البيانات من لوحة تحكم Stripe.
  4. إعادة محاولة فتح صفحة الفواتير الخاصة بالمستخدم ستؤدي إلى انهيار أثناء تحميل /s/user/payment مع ظهور النص التالي في وحدة تحكم المتصفح:
    {\"errors\":[\"No such customer: 'cus_abcd1234567890'\"]}

بعد استكشاف قاعدة بيانات مثيلي، وجدت بيانات سابقة من عمليات المسح المتعددة التي قمت بها في الجداول التالية:

  • discourse_subscriptions_customers: يتسبب في انهيار صفحة الفواتير الخاصة بالمستخدم.
  • discourse_subscriptions_products
  • discourse_subscriptions_subscriptions

الجداول الأخيرتان لا يبدوان أنهما يتسببان في انهيار. ومع ذلك، لا تزال تحتويان على بيانات منتهية الصلاحية.

الحذف اليدوي للصفحة (الصفحات) المشكلة في discourse_subscriptions_customers يحل مشكلة الانهيار الخاصة بالمستخدم. لكن القيام بذلك عبر طلب SQL معقد وخطير، خاصة للمستخدمين غير ذوي الخبرة.

يمكن ملاحظة أيضًا أن هذه المشكلة لا تحدث عند حذف معلومات المستخدم يدويًا من لوحة تحكم Stripe. فـ Stripe لا تزال تحتفظ بمعلومات أرشيفية عنه وتُصنّفه على أنه “مُحذوف نهائيًا”.

الحلول المقترحة

إذا أمكن، إنشاء آلية تسمح لـ Stripe بإخبار Discourse بأن بيانات الاختبار قد تم مسحها، وبالتالي يجب حذف البيانات في تلك الجداول.

أو،

في خيارات الإضافة، إنشاء زر لـ “مسح بيانات الاختبار” مع علامة تحذير حمراء كبيرة للتأكد من أن المسؤول يدرك ما يفعله.

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

rails c
DiscourseSubscriptions::Customer.destroy_all
DiscourseSubscriptions::Products.destroy_all
DiscourseSubscriptions::Subscriptions.destroy_all

سيؤدي هذا إلى إعادة تعيين جميع النماذج المحلية، والتي تُستخدم للمقارنة مع Stripe.

توصيتي مستقبلاً: احذف البيانات من Discourse بدلاً من Stripe. إذا لم تكن سجلات النماذج موجودة في Discourse، فلن يتم جلب البيانات من Stripe.

4 إعجابات

تم تقسيم منشور إلى موضوع جديد: مشكلة في /s/user/payments

شكرًا على الاقتراح. جربته وهو يعمل، باستثناء خطأ مطبعي بسيط: لا توجد s في نهاية ::Product و ::Subscription. بخلاف ذلك، لا يمكنه العثور عليها.

الأوامر المُصححة:

rails c
DiscourseSubscriptions::Customer.destroy_all
DiscourseSubscriptions::Product.destroy_all
DiscourseSubscriptions::Subscription.destroy_all
3 إعجابات

أنت محق - خطأ مني!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.