السماح بالاشتراك لمدة محددة مسبقًا

طلب ميزة: أود أن أكون قادرًا على تقديم اشتراك يستمر لفترة واحدة فقط. في نهاية تلك الفترة:

  • يجب إزالة المستخدم من مجموعة Discourse الخاصة بالاشتراك (والتي لا أعتقد أنها تحدث مع المدفوعات لمرة واحدة الحالية).
  • لا ينبغي اتخاذ أي دفعة أخرى.

حل محتمل؟ يجب أن تسمح إضافة الاشتراكات في Discourse بتعيين السمة iteration لجدول الاشتراك. وجدت هذا في وثائق Stripe، في صفحة واجهة برمجة تطبيقات جداول الاشتراكات:

تحديد مدة المرحلة

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

إكمال الجدول

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

3 إعجابات

مرحباً، هل قمت بحل هذه المشكلة؟

إعجابَين (2)

لا، للأسف كان هناك الكثير من الخصوصيات والميزات المفقودة مع هذا المكون الإضافي. لا أعرف ما إذا كان قد تم تغييره منذ سؤالي، على الرغم من ذلك.

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

لقد لاحظت للتو أن جوهر طلب الميزة الخاص بي مذكور هنا أيضًا:

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

أنا أعمل على هذه الميزة الخاصة بإضافة الاشتراك. آمل أن تنجح.

إعجابَين (2)

حظا سعيدا! سنكون ممتنين جداً لذلك أيضاً لعدة حالات استخدام - خاصةً للأحداث الفريدة.
أنا متأكد من أن هذا قد وصل إلى “قاعدة الثلاثة” بحلول الآن.

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

سيتم قريبًا تحديث لمكون الاشتراكات يعالج هذا الأمر.

كما سيحل مشاكل الضرائب: Automatic_tax.enabled for Discourse Subscription plugin

وسيمكن طرق دفع أخرى. How can I customise the discourse-subscription plugin?

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

4 إعجابات

أنا أستخدم الحملة الخاصة بـ betterstreets.nz. إنها جيدة، ولكنها غير مرنة للغاية. لقد قمت بإعدادها قبل 9 أشهر، ولا تزال مستمرة (وإن كانت بطيئة للغاية!).

أكبر مشكلة لدي هي أنني لا أستطيع حاليًا أن أجعل الأشخاص يتبرعون بمبلغ X؛ بدلاً من ذلك، يجب عليهم الاشتراك سنويًا.

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

الشعارات جيدة (في الأعلى لصفحات الاكتشاف وفي الأسفل للمواضيع)، ولكنها ليست قابلة للتخصيص بدرجة كبيرة. سيكون من الجيد جعلها أكبر أو أصغر لتتناسب مع بقية الموقع (مثل الشعارات الأخرى / التذييلات).

بمجرد أن يتجاهلها المستخدم على جهاز، سيكون من الجيد أن نتمكن من إجبارها على الظهور بشكل دوري، أو أن تتقلص إلى شيء أكثر تميزًا (ولكنها لا تزال موجودة حتى يتبرع الشخص).

إعجابَين (2)

شكراً جزيلاً على هذه الملاحظات!

هذا مفيد جداً.

أتفهم. لقد سجلت في منتداك للتحقق من ذلك وأفهم ما تقصده.

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

هناك العديد من الطرق لإنشاء الشعارات في Discourse. ما هي الطريقة التي تستخدمها حاليًا؟

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

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

ملاحظات رائعة حتى الآن! :grinning: :+1:

إعجابَين (2)

في betterstreets.nz، أستخدم فقط اللافتة التي تعد جزءًا من حملة إضافة المكون الإضافي للاشتراكات. وجودها يمنعني من إضافة لافتات أخرى!

أستخدم لافتات أخرى في مواقع أخرى رغم ذلك.

أتفق تمامًا - ولكن فقط إذا كان الأمر واضحًا وسهلاً للغاية بالنسبة لهم للقيام بذلك!

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

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

يتم وصف الإلغاء بطريقة مربكة (من الذاكرة، إنه إلغاء التجديد التلقائي ولكنه يبدو موصوفًا على أنه إلغاء فوري).

لقد أضفت العديد من المواضيع حول الإضافة منذ فترة. لم تحصل العديد منها على ردود، لذا من الجيد سماع أنك تعمل على الإضافة الآن. تعديل: إليك رابط – Search results for 'tags:subscriptions @Jonathan5' - Discourse Meta

إعجابَين (2)

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

إعجابَين (2)

لقد نجحت في حل الاشتراك لمرة واحدة بفاصل زمني عن طريق إضافة بيانات وصفية جديدة (“recurring:0/1”) في كائن السعر. وعندما تحاول إنشاء اشتراك مع price[:metadata][:recurring]==“0”، سأقوم بتعيين قيمة cancel_at_end = true في كائن Subscription.
ثم عندما تنشئ سعرًا لمرة واحدة، لا يزال يتعين عليك اختيار فترة (سنة، شهر، يوم، أسبوع)، ولكن لا يجب عليك تحديد مربع “متكرر”.
وعندما يشترك المستخدم، سيقوم الواجهة الخلفية بإنشاء اشتراك متكرر سينتهي في تاريخ الانتهاء. لن يحتاج المستخدم إلى إلغاء التجديد بنفسه.

ومع ذلك، وجدت أنه لا يمكنني حذف المنتجات التي أنشأتها. انظر Cannot delete products on Discourse Subscriptions - #2 by Jonathan5

جاري تحميل: image.png…
هذه هي مشكلتي، لا يمكنني حذف المنتجات. هل



يجب علي حذفها على Stripe؟

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

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

إعجابَين (2)

لقد أصبح هذا الموضوع متشابكًا إلى حد ما. ليس من الواضح لي على الفور كيف يمكنني فك تشابكه بشكل نظيف. :thinking:

على الرغم من أنني أقترح أن يحاول الجميع الالتزام بقضية/ميزة واحدة لكل موضوع حتى يسهل متابعتها وتتبعها. :pray:

3 إعجابات

@Alex_王 @Jonathan5 @nathank

إذا أردت، يمكنك تجربة الكود المحدث. يمكنك استعارة الفرع من طلب السحب هذا:

ستحتاج إلى تشغيل stripe cli محليًا لإعادة توجيه رسائل الويب هوك. هذا هو الأمر الذي يجب استخدامه:

stripe listen --forward-to http://localhost:4200/subscriptions/hooks --api-key yourapikey

تحتاج أيضًا إلى إضافة سر الويب هوك الخاص بـ Stripe إلى مثيل Discourse (كإعداد للمكون الإضافي “webhook secret”). يمكنك العثور عليه في عينة الكود الموجودة على اليمين في نموذج إنشاء الويب هوك على Stripe.

لقد قمت بإنشاء فيديو قصير لتقديم نظرة عامة على هياكل البيانات وكيفية ارتباطها بهياكل بيانات Discourse:

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

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

لا يزال من الممكن أن تكون هناك أخطاء. إذا رأيت أي شيء، فيرجى الإبلاغ عنه. :grinning: :+1:

3 إعجابات

إذًا، هذه نسخة معدلة (fork) تخطط لتقديمها كطلب سحب (PR) للمكون الإضافي الرسمي بمجرد أن تصبح أكثر صقلاً؟ إذا كان الأمر كذلك - رائع!!! وشكرًا لك على عملك الجيد وطاقتك في هذا!

إذا كان الأمر كذلك، فسأجربها قريبًا. سيتطلب الأمر بعض العبث لاختبارها بالكامل، بالطبع.

أين نقوم بتشغيل هذا؟ على الخادم كـ root، أم داخل حاوية docker؟ وهل نستخدم عنوان URL الخاص بنا قبل /subscriptions/hooks؟

وللتأكد من أنني أفعل الشيء الصحيح، هل هذا هو ما نقوم بتثبيته بدلاً من المكون الإضافي الرسمي؟

git clone https://github.com/spirobel/discourse-subscriptions -b "feature/rework-admin-page"
إعجاب واحد (1)

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

نظرًا لأن خادم stripe لا يمكنه الوصول إلى عنوان localhost:4200 على شبكتي المحلية، فمن الضروري تشغيل هذا الأمر لإعادة توجيه طلبات webhook التي تأتي من خادم stripe.

إذا كنت ترغب في تجربة هذا على خادم متصل بالإنترنت، يمكنك اتباع تكوين webhook الخاص بالبرنامج التعليمي الرسمي: Discourse Subscriptions Plugin

يرجى عدم تثبيته (حتى الآن) على نسخة تحتوي بالفعل على بيانات عملاء حية وإصدار قديم من المكون الإضافي discourse subscriptions. جربه على خادم اختبار ثانٍ، لأن الإصدارين سيتعارضان.

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

إعجابَين (2)

لدي موقع مباشر هادئ نسبيًا (betterstreets.nz) مع 3 عملاء فقط بما في ذلك أنا من تجربة سابقة فاشلة بشكل أساسي. سأكون سعيدًا جدًا باختباره هناك، وإزالة المكون الإضافي السابق وبياناته إذا لزم الأمر (على الرغم من أنني سأحتاج إلى مساعدة بشأن أمر وحدة تحكم Rails الصحيح). هل سأظل أواجه تعارضًا في هذه الحالة؟