في Phase 1 الفوترة على مستوى المؤسسة. كل التطبيقات تشترك في organization_balances. الدفتر: organization_credit_ledger؛ app_id للـ attribution فقط.
رصيد المؤسسة
عند تحقق App A، يُخصم من pool المؤسسة — وليس محفظة منفصلة لكل تطبيق.
وصول الحساب مقابل الباقة
وصول الحساب (trial_outcome) منفصل عن الاشتراك/الباقة. مفاتيح test وlive تستخدم بوابات حقيقية وتستهلك رصيداً. وصول الحساب يتحكم في الرصيد التجريبي المجاني ومراجعة الحساب — وليس في عمل مفاتيح test.
- تسجيل → تأكيد البريد → تقييم مخاطر → FULL_TRIAL أو SANDBOX_ONLY (بدون رصيد تجريبي مجاني)
- الرصيد التجريبي يُمنح بعد تأكيد البريد — وليس عند إنشاء التطبيق
- SANDBOX_ONLY: بدون credits مجانية؛ pk_live_ يعمل عند وجود رصيد
- اشترك بباقة أو اشحن رصيداً للاستمرار بغض النظر عن نتيجة التجربة
الشحن
- لوحة التحكم → الفوترة → تبويب شحن رصيد → إنشاء طلب → إرسال إثبات + رقم العملية
- Admin يوافق → CREDIT في ledger مربوط بـ recharge_request
- سعر الرصيد من إعدادات المنصة (billing.recharge)
اشتراك باقة
- لوحة التحكم → الفوترة → تبويب اشتراك باقة (أو الأسعار → اختيار باقة →
/dashboard/billing?plan=…) - اختر الباقة + وسيلة الدفع → إنشاء طلب → الدفع يدوياً → رفع الإثبات + رقم العملية
- بعد موافقة Admin: تُضاف الرصيد لـ pool المؤسسة، يُفعَّل الاشتراك، وتُحدَّث الخطة
- نفس مسار المراجعة اليدوي للشحن؛ التنفيذ عبر
app_subscriptions+ دفتر المؤسسة
أنواع الدفتر
CREDIT, HOLD, RELEASE, CAPTURE. عرض الدفتر: GET /v1/organizations/:id/billing/ledger.
API التطبيق (legacy)
GET /v1/apps/:id/billing يعرض رصيد المؤسسة (shim للتوافق).
لوحة التحكم
- مطوّر:
/dashboard/billing— رصيد المؤسسة، اشتراك باقة، شحن رصيد - Admin:
/admin/billing— تجربة/حماية، وسائل دفع، طلبات الشحن، طلبات الاشتراك
