Production-readiness audit fixes — every mock fallback is now gated on
IsDevelopment; in production these paths fail loudly instead:
- ZarinPal/Tara/SnappPay init: missing credentials returned a MOCK
payment URL whose callback verified as paid — a café could activate a
paid plan without paying. Now: "Payment gateway is not configured."
- Tara/SnappPay verify: a forged MOCK-* trace/token on the callback was
accepted as a verified payment in any environment. Now rejected
outside Development.
- Taraz (سامانه مودیان): returned a fake MOCK-TARAZ tracking code as if
invoices reached the tax authority. Now returns an honest error (the
real integration is not built yet).
- Admin integrations: NextPay/Vandar removed — they were listed but have
no gateway implementation (selecting them silently used ZarinPal).
- docker-compose: ASPNETCORE_ENVIRONMENT default flipped Development →
Production so a missing env var can never run prod in dev mode.
86 tests pass.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Full backend implementation:
- Multi-tenant cafe/restaurant management (menus, orders, tables, staff)
- POS order flow with ZarinPal and Snappfood payment integration
- OTP authentication via Kavenegar SMS
- QR digital menu with public discover/finder endpoints
- Customer loyalty, coupons, CRM
- PostgreSQL via EF Core, Redis for caching/sessions
- Background jobs, webhook handlers
- Full migration history
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>