الانتقال إلى Discourse Subscriptions من WordPress Subscriptions

متابعة النقاش من اشتراكات Discourse

مع نضوج إضافة اشتراكات Discourse، أود البدء في التخطيط لنقل العضويات الحالية من اشتراكات WooCommerce إلى اشتراكات Discourse. يجب أن تنطبق العملية أدناه على إضافات العضوية/الاشتراك الأخرى في WordPress، وليس فقط WooCommerce.

هناك ثلاثة عناصر في هذا الانتقال تحتاج إلى معالجة:

  1. إنشاء اشتراكات في Stripe
  2. ربط اشتراك Stripe بالمستخدم في Discourse
  3. عكس عملية SSO بحيث تصبح Discourse مزوّد SSO وWordPress العميل

(1) إنشاء اشتراكات في Stripe

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

  • تصدير جميع المشتركين والبيانات من اشتراكات WooCommerce
  • إنشاء اشتراك في Stripe لمستخدم من لوحة تحكم عملاء Stripe وجدولة أول دفعة لتطابق تاريخ انتهاء اشتراك WooCommerce الحالي.
  • إلغاء اشتراك المستخدم في WooCommerce.
  • تعطيل اشتراكات WooCommerce عند الانتهاء من جميع المستخدمين.

مزيد من المعلومات من Stripe حول عمليات الهجرة.

(2) ربط اشتراك Stripe بالمستخدم في Discourse

بمجرد إعداد المستخدم مع اشتراك في Stripe، كيف يمكننا إضافة هذا المستخدم الحالي إلى خطة اشتراك في Discourse؟ هذا ضروري لتمكين المستخدم من إلغاء الاشتراك وإزالة المستخدم من المجموعة في حالة فشل الدفع عبر Stripe.

(3) عكس عملية SSO لاستخدام Discourse كمزوّد وWP كعميل

تم وصف هذا الجزء هنا.


أنا عالق في معرفة ما إذا كان يمكن تنفيذ البند رقم 2، وأود أن أسمع إذا قام أي شخص بهذا الانتقال.

هل يمكن توسيع مهمة rake rake subscriptions:import أو إضافة مهمة أخرى لاستيراد وربط اشتراكات المستخدمين أيضًا؟

4 إعجابات

يسعدني جدًا رؤيتك تقوم بهذا.

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

فقط للتأكد من فهمي لمشكلتك: لقد قمت بإنشاء الاشتراكات في Stripe وتريد ملء فجوة الوصول في Discourse؟ هل هذا صحيح؟

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

يمكنك حتى تشغيل هذا يدويًا من وحدة التحكم أيضًا:

DiscourseSubscriptions::Customer.create(
    user_id: <معرف المستخدم>,
    customer_id: <معرف عميل Stripe>
    product_id: <معرف منتج Stripe>
  )
4 إعجابات

نعم. سيحدث هذا بعد إكمال الخطوات من (1)، عند تعيين اشتراك جديد للعميل في Stripe.

العميل موجود بالفعل في Stripe (في حالتي) لأن WooCommerce Subscriptions ينشئ عميلاً في Stripe عند شراء عضوية، وبالتالي تتوفر البيانات ذات الصلة - بما في ذلك معلومات بطاقة الائتمان.

هل يمكن تغذية ملف CSV بدلاً من القيام بذلك واحداً تلو الآخر؟

أعتقد أن هذا سيكون عائقاً كبيراً لأي مجتمع قائم على العضويات، وبالتالي سنرى فقط المجتمعات الجديدة التي تتبناه.

إعجابَين (2)

سأضيف تمديد مهمة rake إلى قائمتي، ولكن كما ذكرت، لدي قائمة مهام طويلة لم أتعامل معها بعد!

نعم، يمكن ذلك. يمكن لـ Ruby قراءة ملف CSV والتكرار عبر محتوياته، لذا فإن ذلك ممكن تمامًا.

إعجابَين (2)

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

إعجابَين (2)

تهانينا، جاستن! هذا إنجاز هائل! بدأت بالتعامل معه أمس ولا أستطيع الانتظار للبدء في استخدامه. سأبدأ أيضًا في البحث عن طرق لمساعدة فريق الهجرة على الانتقال من منصات مثل WooCommerce. لا يزال غير واضح حتى الآن ما إذا كان الأمر يمكن أن يكون مهمة rake “بسيطة” (ها!) أم أنها ستكون أشبه بهجرة المنتدى حيث تكون كل مهمة فريدة من نوعها (أتوقع أن يكون الأمر هو الأخير).

4 إعجابات

شكرًا جزيلاً يا جايسون :hugs:

التحدي سيكون في جلب معلومات العملاء من Stripe إلى جدول Customer في الإضافة ومطابقتها. من هناك، سيكون الأمر في الغالب مجرد إضافة عضوية المجموعة. لكنك على الأرجح محق في أن كل حالة ستكون فريدة من نوعها.

3 إعجابات

عند النظر إليها من الوهلة الأولى، يبدو أن Stripe لديها عنوان بريد إلكتروني، لذا فإن الحيلة ستكون أن يكون لديهم عنوان بريد إلكتروني مختلف في Discourse…

4 إعجابات

بالإضافة إلى عنوان البريد الإلكتروني، يشارك Stripe و WooCommerce Subscriptions أيضًا معرف العميل: cus_ABCdefxyz ومعرف البطاقة: src_1234ABxyzasdf ومعرف المعاملة: ch_0123ABCDefgh

بحسب ما أذكر، يشارك PMPro نفس البيانات.

الطريقة الأفضل، في رأيي، هي تصدير جدول من كلا التطبيقين والتأكد من تطابقهما في جدول بيانات، ثم استخدام ملف CSV هذا كمصدر.

3 إعجابات

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

إعجاب واحد (1)

ما زال مشروعي في وضع “قيد التنفيذ”. يبدو أن المشاريع الأخرى تتدخل وتأخذ الأولوية. ربما لدى @pfaffman بعض التوجيهات.

إعجابَين (2)