This commit marks the completion of Phase 3 (Integration and Improvements) and updates the project status to reflect that Phases 0 through 3 are finished. Key changes include: - **Laravel (Backend):** - Added `calling_code` column to `countries` table via new migration. - Added scripts to update calling codes for all countries. - Updated `CustomerOrderController` to include `calling_code` in country data. - Registered `api_key` middleware alias in `bootstrap/app.php`. - Improved error handling to return JSON 401 for API authentication failures. - Updated `README.md` with detailed architecture and feature descriptions. - **WordPress (Frontend/Bridge):** - Added `ifnex_wallet_charge` shortcode and AJAX handler for wallet top-ups. - Implemented auto-fill for calling codes in the order form based on selected country. - Added real-time phone number validation (digits, +, spaces only). - Added English-only validation for name, city, and address fields with UI warnings. - Updated asset enqueuing logic and versioning for CSS/JS. - **Documentation:** - Updated `IFNEX_File_Map.md`, `IFNEX_Phase0_Checklist.md`, and `IFNEX_Roadmap.md` to reflect completed phases and new features. - Updated `DEPLOYMENT.md` with new environment variables (`IFNEX_BRIDGE_API_KEY`) and required WordPress pages. - Updated project `README.md` with comprehensive feature list and system architecture.
254 lines
6.6 KiB
Markdown
254 lines
6.6 KiB
Markdown
# راهنمای استقرار IFNEX
|
||
|
||
> **آخرین بروزرسانی:** 2026-08-29
|
||
|
||
---
|
||
|
||
## محیطها
|
||
|
||
| محیط | دامنه | نقش |
|
||
|-------|-------|------|
|
||
| Production | api.ifnex.vernahost.ir | API لاراول |
|
||
| Production | ifnex.vernahost.ir | وبسایت وردپرس |
|
||
| Local | localhost:8000 | توسعه |
|
||
|
||
---
|
||
|
||
## پیشنیازها
|
||
|
||
- SSH دسترسی به سرور
|
||
- HestiaCP (مدیریت سرور)
|
||
- Git روی سرور
|
||
- Composer روی سرور (اختیاری — بهتره locallly نصب کنی)
|
||
|
||
---
|
||
|
||
## ۱. استقرار لاراول
|
||
|
||
### ۱.۱ کلون مخزن روی سرور
|
||
|
||
```bash
|
||
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
|
||
git clone https://www.git.vernahost.ir/gitmodir110/ifnex.git .
|
||
```
|
||
|
||
> اگر پوشه لاراول زیرمسیر `04_Laravel/` هست:
|
||
|
||
```bash
|
||
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
|
||
ngit clone https://www.git.vernahost.ir/gitmodir110/ifnex.git tmp-ifnex
|
||
cp -r tmp-ifnex/04_Laravel/* .
|
||
cp -r tmp-ifnex/04_Laravel/.* . 2>/dev/null
|
||
rm -rf tmp-ifnex
|
||
```
|
||
|
||
### ۱.۲ نصب وابستگیها
|
||
|
||
```bash
|
||
ncd /home/USER/web/api.ifnex.vernahost.ir/public_html
|
||
composer install --no-dev --optimize-autoloader
|
||
```
|
||
|
||
### ۱.۳ تنظیم .env
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
nano .env
|
||
```
|
||
|
||
مقادیر مهم:
|
||
|
||
```env
|
||
APP_ENV=production
|
||
APP_DEBUG=false
|
||
APP_URL=https://api.ifnex.vernahost.ir
|
||
|
||
DB_HOST=localhost
|
||
DB_DATABASE=ifnex_db
|
||
DB_USERNAME=ifnex_user
|
||
DB_PASSWORD=STRONG_PASSWORD
|
||
|
||
# مهم: Bridge API Key باید با وردپرس یکسان باشد
|
||
IFNEX_BRIDGE_API_KEY=ifnex-bridge-secret-key-2026-vernasoft
|
||
|
||
CORS_ALLOWED_ORIGINS=https://ifnex.vernahost.ir
|
||
|
||
# Payment Gateway
|
||
ZARINPAL_SANDBOX=false
|
||
ZARINPAL_MERCHANT_ID=YOUR_REAL_MERCHANT_ID
|
||
ZARINPAL_CALLBACK_URL=https://api.ifnex.vernahost.ir/api/v1/payment/callback
|
||
ZARINPAL_FRONTEND_SUCCESS_URL=https://ifnex.vernahost.ir/wallet
|
||
ZARINPAL_FRONTEND_FAILURE_URL=https://ifnex.vernahost.ir/wallet
|
||
```
|
||
|
||
### ۱.۴ دیتابیس
|
||
|
||
```bash
|
||
# ایجاد دیتابیس (اگر وجود نداره)
|
||
mysql -u root -p -e "CREATE DATABASE ifnex_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||
|
||
# اجرای migrations
|
||
php artisan migrate --force
|
||
|
||
# اجرای seeders (فقط بار اول)
|
||
php artisan db:seed --force
|
||
```
|
||
|
||
### ۱.۵ پیکربندی نهایی
|
||
|
||
```bash
|
||
php artisan config:cache
|
||
php artisan route:cache
|
||
php artisan view:cache
|
||
php artisan filament:clear-cached-components
|
||
```
|
||
|
||
---
|
||
|
||
## ۲. استقرار وردپرس (پلاگین و قالب)
|
||
|
||
### ۲.۱ آپلود فایلها
|
||
|
||
```bash
|
||
# قالب IFNEX
|
||
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/themes/
|
||
# فایلهای قالب را اینجا آپلود/بروزرسانی کن
|
||
|
||
# پلاگین IFNEX Bridge
|
||
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/plugins/
|
||
# فایلهای پلاگین را اینجا آپلود/بروزرسانی کن
|
||
```
|
||
|
||
### ۲.۲ تنظیم پلاگین
|
||
|
||
در پیشخوان وردپرس → تنظیمات → IFNEX Bridge:
|
||
|
||
| تنظیم | مقدار |
|
||
|--------|-------|
|
||
| API URL | `https://api.ifnex.vernahost.ir/api/v1` |
|
||
| API Key (عمومی) | برای APIهای عمومی مثل Tracking (همان `IFNEX_API_KEY` در `.env` لاراول) |
|
||
| Bridge API Key | کلید مشترک بین وردپرس و لاراول (همان `IFNEX_BRIDGE_API_KEY` در `.env` لاراول) |
|
||
|
||
> ⚠️ **مهم:** Bridge API Key باید در لاراول (`.env`) و وردپرس (پنل تنظیمات پلاگین) دقیقاً یکسان باشد. در غیر این صورت، کاربران وردپرس نمیتوانند توکن Sanctum دریافت کنند.
|
||
|
||
### ۲.۳ صفحات مورد نیاز در وردپرس
|
||
|
||
این صفحات باید با شورتکدهای مشخص ساخته شوند:
|
||
|
||
| آدرس | شورتکد | توضیح |
|
||
|------|---------|--------|
|
||
| `/my-account/` | `[ifnex_customer_dashboard]` | پنل جامع مشتری |
|
||
| `/my-orders/` | `[ifnex_orders_list]` | لیست سفارشات |
|
||
| `/new-order/` | `[ifnex_order_form]` | فرم ثبت سفارش |
|
||
| `/order-detail/` | `[ifnex_order_detail]` | جزئیات سفارش |
|
||
| `/order-payment/` | `[ifnex_order_payment]` | صفحه پرداخت |
|
||
| `/wallet/` | `[ifnex_wallet_charge]` | شارژ کیف پول |
|
||
| `/tracking/` | `[ifnex_tracking_form]` | رهگیری مرسوله |
|
||
|
||
---
|
||
|
||
## ۳. بروزرسانی (بعد از تغییرات جدید)
|
||
|
||
### ۳.۱ لاراول
|
||
|
||
```bash
|
||
cd /home/USER/web/api.ifnex.vernahost.ir/public_html
|
||
|
||
# خاموش کردن موقت سایت
|
||
php artisan down
|
||
|
||
# بکاپ
|
||
cp .env .env.backup
|
||
|
||
# دریافت تغییرات
|
||
git fetch --all
|
||
git pull origin main
|
||
|
||
# وابستگیها (اگه composer.json تغییر کرده)
|
||
composer install --no-dev --optimize-autoloader
|
||
|
||
# مایگریشنهای جدید
|
||
php artisan migrate --force
|
||
|
||
# پاکسازی کش
|
||
php artisan config:clear
|
||
php artisan cache:clear
|
||
php artisan route:clear
|
||
php artisan view:clear
|
||
php artisan filament:clear-cached-components
|
||
|
||
# کش مجدد
|
||
php artisan config:cache
|
||
php artisan route:cache
|
||
php artisan view:cache
|
||
|
||
# روشن کردن سایت
|
||
php artisan up
|
||
```
|
||
|
||
### ۳.۲ وردپرس
|
||
|
||
```bash
|
||
cd /home/USER/web/ifnex.vernahost.ir/public_html/wp-content/plugins/ifnex-bridge
|
||
git pull origin main
|
||
```
|
||
|
||
> اگر پلاگین از طریق گیت کلون نشده، فایلها را دستی آپلود کن.
|
||
|
||
---
|
||
|
||
## ۴. تنظیمات Cron
|
||
|
||
```bash
|
||
crontab -e
|
||
```
|
||
|
||
```cron
|
||
# بهروزرسانی نرخ ارز (اگر ExchangeRateService فعال شد)
|
||
0 0 * * * cd /home/USER/web/api.ifnex.vernahost.ir/public_html && php artisan ifnex:update-exchange-rates >> /dev/null 2>&1
|
||
```
|
||
|
||
---
|
||
|
||
## ۵. عیبیابی
|
||
|
||
### بررسی لاگها
|
||
|
||
```bash
|
||
# لاگ لاراول
|
||
tail -f /home/USER/web/api.ifnex.vernahost.ir/public_html/storage/logs/laravel.log
|
||
|
||
# لاگ HestiaCP
|
||
tail -f /var/log/hestia.log
|
||
```
|
||
|
||
### کلیر کش
|
||
|
||
```bash
|
||
php artisan optimize:clear
|
||
```
|
||
|
||
### بررسی وضعیت
|
||
|
||
```bash
|
||
php artisan about
|
||
php artisan route:list --path=api/v1
|
||
```
|
||
|
||
---
|
||
|
||
## ۶. نکات امنیتی
|
||
|
||
- `.env` هرگز در گیت کامیت نشود (در `.gitignore` باشد)
|
||
- `APP_DEBUG=false` در Production
|
||
- `CORS_ALLOWED_ORIGINS` فقط دامنه وردپرس
|
||
- `IFNEX_API_KEY` یک کلید قوی و تصادفی باشد
|
||
- `IFNEX_BRIDGE_API_KEY` یک کلید قوی و تصادفی باشد (متفاوت از API Key)
|
||
- SSL/HTTPS فعال باشد
|
||
- دسترسی پوشه `storage` و `bootstrap/cache` قابل نوشتن باشد (۷۷۵)
|
||
- درگاه Zarinpal در Production باید `SANDBOX=false` و `MERCHANT_ID` واقعی باشد
|
||
|
||
---
|
||
|
||
© 2026 VernaSoft Group. Internal use only.
|