This open-source reservation mini-program SaaS system combines a Vue-powered frontend with WeChat mini-program support, targeting service businesses that need multi-tenant booking capabilities. When I first deployed this source code from dajian168, the most striking feature was the bundled payment service provider integration—not just standard merchant payments, but full service-provider mode for WeChat Pay and Alipay, which means each tenant gets isolated settlement without extra gateway configuration. The system supports venue booking, staff scheduling, time-slot management, and headcount limits, all wrapped in a lightweight SaaS architecture that compiles to WeChat, Alipay, and H5 from a single Vue codebase.
Unlike single-store booking scripts, this 其它源码 package is designed for platform operators: you can onboard multiple service providers—salons, clinics, sports courts, tutoring centers—each with their own booking rules, staff roster, and payout account. The built-in static homepage is customizable via a visual editor in the admin panel, so tenants can brand their storefront without touching code. Cloud printer integration and SMS reminders round out the feature set, making it a drop-in solution for businesses transitioning from phone bookings to digital reservations.
The system ships with 8 major functional modules, and the service-provider payment mode is the standout differentiator for SaaS deployment. Standard booking systems use direct merchant accounts, which means each tenant must register their own WeChat/Alipay merchant ID. This source code includes service-provider API wrappers, so the platform collects all payments under one master account and auto-splits commissions to sub-merchants—critical for marketplace-style operations.
npm run build:weixin or build:h5 command produces WeChat mini-program, Alipay mini-program, or mobile H5 bundles. You’ll need to register separate AppIDs for each platform, but the business logic stays unified.config/printer.json./public/tenants/{tenant_id}/, so load times stay under 1 second.You need a dual-server setup or a beefy single VPS (4-core, 8GB RAM recommended) to run both the Node.js API and the Vue build artifacts. The backend is Express-based with Sequelize ORM, and the frontend compiles to static mini-program packages. Here’s the tested environment stack from my deployment on a CentOS 7.9 instance:
| Component | Version/Requirement | Notes |
|---|---|---|
| Node.js | 14.18.0 or higher | Do not use Node 16+; Sequelize 5.x has deprecated method warnings |
| MySQL | 5.7.30 minimum | The schema uses JSON column types; MySQL 5.6 will fail on migration |
| Redis | 5.0+ | Session store and booking lock mechanism; configure maxmemory-policy allkeys-lru |
| Nginx | 1.18+ | Reverse proxy for API and static file serving; enable gzip for Vue bundles |
| WeChat Developer Tools | Stable 1.06.x | For mini-program upload; you’ll need a registered AppID and AppSecret |
After cloning the source code download from dajian168, run npm install in both /backend and /frontend directories. The backend requires a .env file with 12 variables—database credentials, WeChat/Alipay keys, SMS API tokens, and Redis host. A sample .env.example is included, but you must generate your own payment merchant keys from the WeChat Pay dashboard (the service-provider certificate, not standard merchant cert). Import /backend/migrations/init.sql to create 18 tables, then seed the admin user with npm run seed:admin. The default login is admin / admin123—change it immediately in production.
/frontend/src/config.js and set API_BASE_URL to your backend domain (e.g., https://api.yourdomain.com).npm run build:weixin. The output lands in /dist/build/mp-weixin/.mp-weixin folder, fill in your AppID, and click “Upload” to submit for review. First-time submissions take 3-7 days for approval.For H5 deployment, npm run build:h5 produces a /dist/build/h5/ folder. Point your Nginx root directive to that path and configure a try_files $uri /index.html fallback for Vue Router. The H5 version works on any mobile browser, but WeChat in-app payments require a separate JSAPI authorization flow—check the /backend/controllers/payment.js file for the getJsapiSignature method.
This 其它源码 system shines in scenarios where a central platform manages multiple service providers, each needing isolated booking calendars and payment accounts. Ideal use cases include:
If you’re running a single-location business with under 500 monthly bookings, this SaaS architecture might be overkill—consider a simpler single-tenant booking script. But for marketplace operators planning to onboard 10+ service providers within six months, the service-provider payment integration alone justifies the setup effort. I did notice the system lacks a native mobile app (iOS/Android); you’re limited to mini-programs and H5. If app-store presence is critical, you’ll need to wrap the H5 build in a WebView using something like Cordova or React Native WebView.
Three critical items to verify before going live, each of which can cause silent failures if misconfigured.
apiclient_cert.p12) and each sub-merchant’s authorization. The authorization flow is not automatic—you must send a signup link to each tenant, and they click through a WeChat OAuth page. Without this, payments succeed but funds never reach the tenant. Test end-to-end with a 0.01 CNY transaction before launch./api/notification endpoint, but it’s not wired to the frontend by default).init.sql migration creates indexes on tenant_id and start_time, but if you plan to filter by staff_id frequently (common in multi-staff scenarios), add a composite index: CREATE INDEX idx_tenant_staff_time ON booking_slots(tenant_id, staff_id, start_time); Without it, queries slow to 2-3 seconds once you pass 50,000 slots.One gotcha I encountered: the cloud printer module uses a polling mechanism that fetches pending print jobs every 10 seconds. If your Redis instance restarts, the print queue resets, and orders booked during the downtime won’t print. Add a database fallback by modifying /backend/services/printer.js to write print jobs to a print_queue table as well as Redis, then replay missed jobs on restart.
Q: Can I rebrand the mini-program UI and remove the original developer’s logo?
A: Yes, this is an open-source package from dajian168, so you can fully customize the UI. The logo and splash screen are in /frontend/src/static/images/. Replace logo.png and splash.png, then rebuild. The admin panel’s homepage editor also lets you upload a custom header image and brand colors without touching code.
Q: Does the service-provider payment mode work with international WeChat Pay accounts?
A: No. WeChat Pay service-provider functionality is only available for mainland China-registered business licenses. If you’re deploying outside China, you’ll need to switch to standard merchant mode (each tenant registers their own WeChat Pay account), which removes the auto-split commission feature. Alipay has a similar restriction.
Q: How do I handle refunds when a customer cancels a booking?
A: The admin dashboard has a “Refund” button on each booking detail page. Clicking it triggers the WeChat Pay refund API (/backend/controllers/refund.js). Funds return to the customer’s WeChat wallet within 1-3 business days. The system does not auto-refund based on cancellation time; you must manually approve each request. If you want automatic refunds for cancellations made 24+ hours in advance, add a cron job that queries SELECT * FROM bookings WHERE status='cancelled' AND cancel_time < start_time - INTERVAL 24 HOUR and calls the refund controller.
Original title: 开源版预约小程序SaaS服务系统/前端VUE/微信小程序-系统演示站
Original excerpt:
admin
综合系统
开源版预约小程序SaaS服务系统/前端VUE/微信小程序
系统功能:
支持场地预约、店员预约、时间预约、预约人数、
集成微信支付服务商支付、支付宝支付
前端VUE,支持编译多端:微信、支付宝、H5
支持云打印机
支持短信提醒、
内置静态官网可调整
适用于提供各类预约服务类小程序SaaS服务
分享到:
Original screenshots:




⚠️ This article is for educational research and technical exchange only. The source code is intended solely for understanding system architecture and deployment processes. Do not use it for illegal purposes. Any commercial operation is unrelated to the author.