طلب ميزة: أود أن أكون قادرًا على تقديم اشتراك يستمر لفترة واحدة فقط. في نهاية تلك الفترة:
يجب إزالة المستخدم من مجموعة Discourse الخاصة بالاشتراك (والتي لا أعتقد أنها تحدث مع المدفوعات لمرة واحدة الحالية).
لا ينبغي اتخاذ أي دفعة أخرى.
حل محتمل؟ يجب أن تسمح إضافة الاشتراكات في Discourse بتعيين السمة iteration لجدول الاشتراك. وجدت هذا في وثائق Stripe، في صفحة واجهة برمجة تطبيقات جداول الاشتراكات:
تحديد مدة المرحلة
تحدد الفترة للسعر عدد مرات الفوترة للاشتراك. على سبيل المثال، يتم فوترة فترة شهرية كل شهر. تحتوي المراحل على سمة التكرارات التي تستخدمها لتحديد مدة المرحلة. اضرب هذه القيمة في الفترة لتحديد مدة المرحلة. إذا كان جدول الاشتراك يستخدم سعرًا بفترة شهرية وقمت بتعيين iterations=2، فإن المرحلة تستمر لمدة شهرين.
…
إكمال الجدول
تنتهي جداول الاشتراكات بعد اكتمال المرحلة الأخيرة. في هذه المرحلة، يظل الاشتراك قائمًا ولا يرتبط بالجدول بعد الآن. إذا كنت ترغب في إلغاء اشتراك بعد اكتمال المرحلة الأخيرة من الجدول، يمكنك تعيين سلوك النهاية إلى cancel.
يرجى التواصل إذا كانت هناك أي نقاط ضعف أخرى لديك مع هذا المكون. أعتقد أنني على دراية بمعظمها، ولكن لا تزال هناك بعض الأجزاء التي أود معرفة المزيد عنها. على سبيل المثال، أود معرفة المزيد عن تصورك لميزة الحملة. هل هناك شخص هنا استخدمها؟
أنا أستخدم الحملة الخاصة بـ betterstreets.nz. إنها جيدة، ولكنها غير مرنة للغاية. لقد قمت بإعدادها قبل 9 أشهر، ولا تزال مستمرة (وإن كانت بطيئة للغاية!).
أكبر مشكلة لدي هي أنني لا أستطيع حاليًا أن أجعل الأشخاص يتبرعون بمبلغ X؛ بدلاً من ذلك، يجب عليهم الاشتراك سنويًا.
أيضًا، يتم تقديمها بنفس المصطلحات - أي شهريًا. هذا يجعل المبالغ غريبة، وليس حقًا الطريقة التي يفكر بها معظم الناس في حملة: من صفر إلى X كمبلغ مطلق. حتى لو تم تقديمه سنويًا فسيكون أفضل بكثير.
الشعارات جيدة (في الأعلى لصفحات الاكتشاف وفي الأسفل للمواضيع)، ولكنها ليست قابلة للتخصيص بدرجة كبيرة. سيكون من الجيد جعلها أكبر أو أصغر لتتناسب مع بقية الموقع (مثل الشعارات الأخرى / التذييلات).
بمجرد أن يتجاهلها المستخدم على جهاز، سيكون من الجيد أن نتمكن من إجبارها على الظهور بشكل دوري، أو أن تتقلص إلى شيء أكثر تميزًا (ولكنها لا تزال موجودة حتى يتبرع الشخص).
أتفهم. لقد سجلت في منتداك للتحقق من ذلك وأفهم ما تقصده.
ربما سيكون من الجيد عدم جعلها قابلة للتجاهل على الإطلاق؟ لا تبدو متطفلة للغاية وتقدم معلومات قيمة حتى للأشخاص الذين تبرعوا بالفعل. إنها تمنح المجتمع هدفًا مشتركًا ويستحق المتبرعون الاعتراف بمساهمتهم.
هناك العديد من الطرق لإنشاء الشعارات في Discourse. ما هي الطريقة التي تستخدمها حاليًا؟
شيء لاحظته: لم أكن أدرك أنه من الممكن التبرع لمشروعك حتى سجلت في المنتدى. كما نعلم، فإن الجزء الأكبر من الجمهور سيكونون قراء سلبيين ولن يقرر سوى قلة صغيرة التسجيل.
لذلك يبدو من الجيد عرض شعار الحملة للمستخدمين غير المسجلين أيضًا. أنا متأكد من أن هناك العديد من الأشخاص الذين يرغبون في التبرع ولكنهم ليسوا أعضاء نشطين / مسجلين حاليًا.
لا أستطيع تذكر المصطلحات الخاصة بـ Stripe، ولكن الإضافة بأكملها تدور حول طريقتهم القديمة في فعل الأشياء (والتي تسمح ببطاقات الائتمان فقط) بدلاً من الطريقة الجديدة (والتي تسمح بمجموعة واسعة من خيارات الدفع).
يتم وصف الإلغاء بطريقة مربكة (من الذاكرة، إنه إلغاء التجديد التلقائي ولكنه يبدو موصوفًا على أنه إلغاء فوري).
وسيكون من الرائع أيضًا إذا أمكن إجراء الاشتراك في نفس الوقت الذي يتم فيه التسجيل في المنتدى. في الوقت الحالي، لا تعد العملية المكونة من مرحلتين مثالية لجميع السيناريوهات.
لقد نجحت في حل الاشتراك لمرة واحدة بفاصل زمني عن طريق إضافة بيانات وصفية جديدة (“recurring:0/1”) في كائن السعر. وعندما تحاول إنشاء اشتراك مع price[:metadata][:recurring]==“0”، سأقوم بتعيين قيمة cancel_at_end = true في كائن Subscription.
ثم عندما تنشئ سعرًا لمرة واحدة، لا يزال يتعين عليك اختيار فترة (سنة، شهر، يوم، أسبوع)، ولكن لا يجب عليك تحديد مربع “متكرر”.
وعندما يشترك المستخدم، سيقوم الواجهة الخلفية بإنشاء اشتراك متكرر سينتهي في تاريخ الانتهاء. لن يحتاج المستخدم إلى إلغاء التجديد بنفسه.
تحتاج أيضًا إلى إضافة سر الويب هوك الخاص بـ Stripe إلى مثيل Discourse (كإعداد للمكون الإضافي “webhook secret”). يمكنك العثور عليه في عينة الكود الموجودة على اليمين في نموذج إنشاء الويب هوك على Stripe.
لقد قمت بإنشاء فيديو قصير لتقديم نظرة عامة على هياكل البيانات وكيفية ارتباطها بهياكل بيانات Discourse:
أتفق تمامًا مع هذا، ولكن يجب أن يكون قد تم إصلاحه الآن. يمكنك تكوين أي شيء تريده في Stripe باستخدام هذا (طرق الدفع / الضرائب / جدول التسعير إلخ) ويجب أن يعمل كل شيء.
يدير المكون الإضافي فقط الاتصال بين مستخدمي Discourse وعملاء Stripe، ويتم إنشاء المنتجات والخطط وما إلى ذلك بالكامل في لوحة تحكم Stripe.
لا يزال من الممكن أن تكون هناك أخطاء. إذا رأيت أي شيء، فيرجى الإبلاغ عنه.
إذًا، هذه نسخة معدلة (fork) تخطط لتقديمها كطلب سحب (PR) للمكون الإضافي الرسمي بمجرد أن تصبح أكثر صقلاً؟ إذا كان الأمر كذلك - رائع!!! وشكرًا لك على عملك الجيد وطاقتك في هذا!
إذا كان الأمر كذلك، فسأجربها قريبًا. سيتطلب الأمر بعض العبث لاختبارها بالكامل، بالطبع.
هذا ضروري فقط لنسخة التطوير التي تعمل محليًا على جهاز الكمبيوتر الخاص بك. على سبيل المثال، يمكنك أن ترى في الفيديو أن نسخة discourse الخاصة بي تعمل على localhost:4200 مما يعني أنها تعمل على جهاز الكمبيوتر الخاص بي.
إذا كنت ترغب في إعادة إنشاء هذه البيئة بالضبط، يمكنك اتباع هذا الدليل:
نظرًا لأن خادم stripe لا يمكنه الوصول إلى عنوان localhost:4200 على شبكتي المحلية، فمن الضروري تشغيل هذا الأمر لإعادة توجيه طلبات webhook التي تأتي من خادم stripe.
إذا كنت ترغب في تجربة هذا على خادم متصل بالإنترنت، يمكنك اتباع تكوين webhook الخاص بالبرنامج التعليمي الرسمي: Discourse Subscriptions Plugin
يرجى عدم تثبيته (حتى الآن) على نسخة تحتوي بالفعل على بيانات عملاء حية وإصدار قديم من المكون الإضافي discourse subscriptions. جربه على خادم اختبار ثانٍ، لأن الإصدارين سيتعارضان.
شكرًا جزيلاً لك على اختبار هذا! سيمكّن هذا أيضًا الزوار الذين ليس لديهم حساب بعد من شراء خطة. سيتم دعوتهم تلقائيًا إلى نسخة discourse وسيكون لديهم عضويات المجموعة المناسبة بمجرد الدفع.
لدي موقع مباشر هادئ نسبيًا (betterstreets.nz) مع 3 عملاء فقط بما في ذلك أنا من تجربة سابقة فاشلة بشكل أساسي. سأكون سعيدًا جدًا باختباره هناك، وإزالة المكون الإضافي السابق وبياناته إذا لزم الأمر (على الرغم من أنني سأحتاج إلى مساعدة بشأن أمر وحدة تحكم Rails الصحيح). هل سأظل أواجه تعارضًا في هذه الحالة؟