الاشتراكات في Stripe، والوصول في منتجك
يصل هذا الربط تطبيقك بخدمة Stripe Billing. تحفظ Stripe العملاء والأسعار والاشتراكات والفواتير وتحصّل الأموال، بينما يحفظ منتجك الحسابات ويقرر ما يحق لكل منها فعله. ونحن نبني الصلة في الاتجاهين: ينشئ التطبيق الاشتراكات ويعدّلها عبر واجهة البرمجة (API) لدى Stripe، وتخبره إشعارات الويب من Stripe حين تنجح دفعة أو تفشل أو ينتهي اشتراك.
يناسب هذا فرق البرمجيات كخدمة (SaaS) التي تضيف خططاً مدفوعة لأول مرة، أو تستبدل شيفرة فوترة نمت بالمصادفة. والحالات الصعبة هي التي تحدد الجودة: ترقية في منتصف الفترة، وبطاقة تفشل عند التجديد، واسترداد مبلغ، وعميل يلغي ثم يعود، وفريق يضيف مقاعد. وكل حالة منها تحتاج إلى قاعدة يفهمها فريق المنتج والمالية والدعم جميعاً.
ربط الخطط بحقوق الاستخدام
نربط منتجات Stripe وأسعارها بالميزات والحدود والمقاعد في تطبيقك، فيغيّر تبديل الخطة ما يحق للعميل الوصول إليه دون إصدار جديد من الشيفرة.
المرجع المعتمد للبيانات
Stripe هو المرجع في حالة الفوترة، وقاعدة بياناتك هي المرجع في الحسابات. ويحفظ التطبيق نسخة من حالة الاشتراك لا تتحدث إلا من أحداث Stripe الموثّقة.
المفاتيح والتوقيعات
تستخدم الاتصالات من الخادم مفاتيح API مقيدة بأقل الصلاحيات اللازمة، وتذهب بيانات البطاقة من المتصفح إلى Stripe مباشرة، ونتحقق من توقيع كل إشعار ويب.
طابور معالجة الأحداث
نؤكد استلام أحداث إشعارات الويب فوراً، ونخزنها ونعالجها من طابور. والحدث الذي يفشل يُحفظ مع خطئه، ويمكن إعادة تشغيله بعد الإصلاح.
إعادة المحاولة دون تكرار
تحمل الطلبات إلى Stripe مفاتيح لمنع التكرار، ويُطبَّق كل حدث مرة واحدة فقط، فلا تؤدي إعادة الإرسال من Stripe أو إعادة المحاولة من جهتنا إلى خصم مضاعف أو تغيير مكرر.
مراقبة سلامة الفوترة
تظهر الدفعات الفاشلة، وتأخر إشعارات الويب، والحسابات التي يخالف وصولها ما في Stripe، وأحجام الاسترداد غير المعتادة في لوحة متابعة، وتُرسل بها تنبيهات إلى الفريق.
ما تتسلمه منا
- ربط كل خطة بميزاتها
- مسارات الدفع والترقية
- إعداد بوابة الفوترة للعملاء
- خدمة لمعالجة إشعارات الويب
- مسار لاسترداد الدفعات الفاشلة
- مهمة لمطابقة الوصول مع الفوترة
- سيناريوهات اختبار في البيئة التجريبية
- الشيفرة المصدرية والتوثيق
طريقة عملنا
- 01
تحديد القواعد
تتفق فرق المنتج والمالية والدعم على الخطط والفترات التجريبية والاحتساب النسبي وفترات السماح بعد فشل الدفع والاسترداد، وعلى ما يبقى للعميل بالضبط حين ينتهي اشتراكه.
- 02
النمذجة في Stripe
نهيّئ المنتجات والأسعار وإعدادات الضريبة وبوابة العملاء في بيئة Stripe التجريبية أولاً، ونربط كل سعر بحقوق الاستخدام التي يطبقها تطبيقك.
- 03
البناء والمحاكاة
نبني صفحات الدفع وتغيير الخطط ومعالجة إشعارات الويب، ثم نشغّلها في زمن محاكى، لنرى التجديدات والبطاقات الفاشلة وإعادة المحاولة والإلغاءات قبل أن يواجهها أي عميل حقيقي.
- 04
الإطلاق والمطابقة
نفعّل المفاتيح الحقيقية، وننقل أي مشتركين حاليين بعناية، ثم تتأكد مهمة مجدولة كل يوم من أن الوصول في المنتج يطابق الفوترة في Stripe.
التقنيات التي نستخدمها
| المجال | التقنيات |
|---|---|
| جهة Stripe | Billing وInvoicing، Checkout، بوابة العملاء، Webhooks |
| التطبيق | Node.js، TypeScript، PostgreSQL، فحوص حقوق الاستخدام |
| الموثوقية | مفاتيح منع التكرار، طابور الأحداث، أدوات إعادة التشغيل، مهمة المطابقة |
| المالية | Stripe Tax، تقارير الإيرادات، التصدير إلى المحاسبة، إعدادات متابعة الدفعات المتعثرة |
منتجك وفوترتك يرويان قصتين مختلفتين
بعض العملاء ما زال وصولهم قائماً رغم توقفهم عن الدفع، وآخرون دفعوا وأُغلق الباب أمامهم. ويتولى الدعم الترقيات يدوياً. ولا أحد متأكد مما يحدث حين تفشل بطاقة. ولا تستطيع المالية مطابقة الإيرادات مع الحسابات النشطة.
- أول خطط مدفوعة
- فوترة الفرق بحسب عدد المقاعد
- تسعير بحسب الاستخدام
- خيارات سنوية وشهرية
- فترات تجريبية تتحول إلى اشتراك مدفوع
- استبدال فوترة مبنية داخلياً
أسئلة شائعة
ماذا نحتاج من Stripe لنبدأ؟
حساب Stripe لشركتك مع تفعيل Billing، وتسعّره Stripe وفق رسومها المعلنة، ومسؤول يستطيع إنشاء مفاتيح API مقيدة وعناوين لاستقبال إشعارات الويب. ويجري التطوير في بيئة الاختبار لدى Stripe، فلا يُخصم أي مبلغ حقيقي قبل الإطلاق. ويختلف توفر وسائل الدفع وميزات الضريبة من بلد إلى آخر، ونتحقق من ذلك في وثائق Stripe الحالية للأسواق التي تبيع فيها.
لماذا تحتل إشعارات الويب هذه المكانة في الربط؟
لأن معظم أحداث الفوترة تقع دون وجود مستخدم. فالتجديدات والبطاقات الفاشلة والنزاعات وتأكيدات البنوك تجري داخل Stripe، وإشعار الويب هو وسيلة منتجك لمعرفتها. ولو لم يحدّث التطبيق الوصول إلا حين ينقر العميل على شيء، لابتعد عن الواقع شيئاً فشيئاً. لذلك نتحقق من توقيع كل حدث، ونعالجه مرة واحدة، ونجري مطابقة دورية تحسباً لضياع أي منها.
كيف تُحتسب الترقية وخفض الخطة على العملاء؟
وفق قواعد تختارها أنت، ثم تطبقها Stripe. ومن الأنماط الشائعة خصم الفرق فوراً عند الترقية، وتطبيق خفض الخطة عند التجديد التالي دون استرداد. وتستطيع Stripe حساب المبلغ نسبياً للفترات الجزئية. ونحن ننفذ السياسة التي تقررها، ونعرض على العميل المبلغ الدقيق قبل أن يؤكد، ونحرص على أن يتغير الوصول في اللحظة نفسها التي تتغير فيها الفوترة.
ماذا يحدث حين تفشل دفعة العميل؟
تعيد Stripe محاولة الخصم وفق جدول، ويمكنها مراسلة العميل بالبريد لتحديث بطاقته. وخلال ذلك يطبق منتجك فترة السماح التي حددتها، وقد تكون وصولاً كاملاً مع تحذير. فإن لم تُسترد الدفعة، صُنّف الاشتراك غير مدفوع أو ملغى، وانخفض الوصول تبعاً لذلك. وتقود أحداث Stripe كل خطوة، ويستطيع فريق الدعم أن يرى موقع كل حساب.
هل نستخدم صفحات Stripe المستضافة أم نبني صفحاتنا؟
ابدأ بالصفحات المستضافة في معظم الحالات. فصفحة الدفع وبوابة العملاء لدى Stripe تتوليان إدخال البطاقة والمصادقة وعرض الضريبة والفواتير، وتبقيان بيانات البطاقات بعيدة عن خوادمك، ما يحدّ من التزاماتك الأمنية. أما الواجهة المخصصة المبنية بمكونات Stripe المدمجة فتستحق تكلفتها حين يجب أن تكون الفوترة في عمق منتجك. ونوصي بأبسط خيار يلبي التصميم.

