أفترض أن هذا الموقع فقط؟ لا تراه في مواقع أخرى؟ نعم، هناك “خلل” حيث لا ينبغي لنا إرجاع 500، ولكن من المحتمل أن تكون هناك بعض البيانات “السيئة” في مكان ما مثل خطة مفقودة أو شيء من هذا القبيل. ربما تم حذفه في Stripe ولم يتم تحديثه أبدًا في قاعدة بيانات المكون الإضافي.
هل يمكنك تشغيل أوامر وحدة تحكم Rails هذه لمساعدتي في تصحيح الأخطاء؟
Stripe.api_key = SiteSetting.discourse_subscriptions_secret_key
user = User.find_by(username: 'xxx')
customer = DiscourseSubscriptions::Customer.find_by(user_id: user.id)
subs = ::Stripe::Subscription.list(customer: stripe_customer_id, status: 'all')[:data]
subs.count # لاحظ عدد الاشتراكات لديهم
subscription = subs.first # قم بتغيير هذا وتشغيل الأسطر أدناه لكل اشتراك
price_id = subscription[:items][:data].first[:price][:id]
plans = ::Stripe::Price.list(expand: ['data.product'], limit: 100)
plan = plans[:data].find { |p| p[:id] == price_id }
plan
أعتقد أن إما plans أو plan سترجع nil، لكن هذا سيساعدنا في تضييق نطاق المشكلة. هل يمكنك إخباري بعدد الاشتراكات لديهم وما إذا كانت هناك أي خطط مفقودة لهم؟
من المحتمل أن يكون إصلاح الكود الذي سأقوم به هو عدم إرجاع أي اشتراكات لهؤلاء المستخدمين إذا كان هناك خطأ، ولكن إذا كان لديهم اشتراك فعليًا، فهذا لا يحل المشكلة حقًا. ربما سأجعله يرجع خطأ يقول شيئًا مثل “تم العثور على اشتراك ولكن هناك خطأ في تحميل تفاصيل الخطة له، يرجى الاتصال بمسؤول للمساعدة”.