وصف المشكلة
تلقينا شكوى من عميل حصل على اشتراك ولكن لم تتم إضافته إلى المجموعة.
ملخص سريع
إذا كان عنوان البريد الإلكتروني للمستخدم (بطريقة ما؟) لا يتطابق مع عنوان بريده الإلكتروني في Stripe، فلن يحصل على اشتراك. تغيير عنوان البريد الإلكتروني في Stripe يحل المشكلة.
تحقيق
الآن رأينا ما يلي.
- في النظرة العامة لجميع الاشتراكات، إنه موجود
- لدى المستخدم دفعة في ملفه الشخصي
- المستخدم ليس لديه اشتراك في ملفه الشخصي!!!
- في قاعدة البيانات كل شيء يبدو جيدًا. لقد قمت بتعديل المعرفات قليلاً لأنني لا أعرف مدى سرية معرفات Stripe.
db0731=# select * from discourse_subscriptions_subscriptions where external_id='sub_1Lf285...9YA0';
-[ RECORD 1 ]-----------------------------\nid | 944
customer_id | 944
external_id | sub_1Lf285...9YA0
created_at | 2022-09-06 13:47:57.074098
updated_at | 2022-09-06 13:47:57.074098
db0731=# select * from discourse_subscriptions_customers where user_id=62443;
-[ RECORD 1 ]---------------------------\nid | 944
customer_id | cus_MN...sc
product_id | prod_MH451u0JeKHoMv
user_id | 62443
created_at | 2022-09-06 13:47:57.057455
updated_at | 2022-09-06 13:47:57.057455
معرف المستخدم يطابق المستخدم المعني.
في Stripe، البيانات الوصفية مطابقة، ولكن عنوان البريد الإلكتروني ليس كذلك!
تغيير عنوان البريد الإلكتروني في Stripe ليتطابق مع عنوان بريد Discourse الإلكتروني يحل المشكلة. يظهر الاشتراك على الفور في ملف المستخدم الشخصي.
لسبب ما، يصل المكون الإضافي إلى Stripe محاولًا العثور على الاشتراكات لهذا العنوان البريدي.
لا أفهم لماذا يعمل بهذه الطريقة.
- البيانات الوصفية موجودة فلماذا لا تتم مطابقتها بناءً على البيانات الوصفية؟
- كل المعلومات موجودة في قاعدة البيانات بالفعل فلماذا يتم الوصول إلى Stripe في المقام الأول؟
إنها ليست مشكلة في العرض فقط، ففي النهاية لم تتم إضافة المستخدم إلى المجموعة أيضًا.



