|
|
||
|---|---|---|
| .idea | ||
| docs | ||
| public | ||
| src | ||
| vendor | ||
| .env.example | ||
| .gitignore | ||
| .htaccess | ||
| README.md | ||
| composer.json | ||
| composer.lock | ||
| server.php | ||
README.md
Merchant AI HTTP API
PHP 8.2 JSON API service for merchant order statistics, offline order analysis, and merchant ranking.
Environment
Copy .env.example to .env, then fill your real token:
MERCHANT_API_TOKEN=your-admin-api-token
MERCHANT_API_BASE_URI=https://tpoint.agrimedia.cn
MERCHANT_API_TIMEOUT=60
OFFLINE_ORDER_PAGE_LIMIT=100
APP_LOG_ENABLED=true
APP_LOG_DIR=var/logs
MERCHANT_API_TOKEN is required. MERCHANT_API_BASE_URI and MERCHANT_API_TIMEOUT are optional.
OFFLINE_ORDER_PAGE_LIMIT controls each upstream pagination request size.
APP_LOG_ENABLED controls request logging. APP_LOG_DIR controls the log directory.
Logs are written as JSON lines to var/logs/app-YYYY-MM-DD.log by default. Authorization tokens are masked automatically.
If the request contains Authorization: Bearer <token>, that token is used for the upstream merchant API request first. If the header is missing, MERCHANT_API_TOKEN from .env is used.
Start Locally
php -S 127.0.0.1:8080 -t public
Response Format
Success:
{
"success": true,
"data": {}
}
Error:
{
"success": false,
"error": {
"code": "server_error",
"message": "error message"
}
}
Endpoints
GET /health
Returns service health status.
GET /tools
Returns available API tools and input schemas.
POST /api/order-summary
Returns order count, active merchant count, successful order count, and amount totals.
POST /api/offline-stats
Returns status, payment type, order type, and amount distribution analysis.
POST /api/merchant-ranking
Returns merchant ranking by orderCount, successOrderCount, totalOrderAmount, or totalRealPay.
Common Parameters
timePreset: preferred AI time intent. Supported values:today,yesterday,last_7_days,last_30_days,this_week,last_week,this_month,last_month,custom. Defaults totoday.startDate: custom start date, required whentimePreset=custom, formatYYYY-MM-DD.endDate: custom end date, required whentimePreset=custom, formatYYYY-MM-DD.date: legacy compatible date range, for example2026/06/23-2026/06/23; if provided, it is sent to the upstream order API as-is.status: order status; defaults to-1(all). Values:0= pending payment,1= completed,2= cancelled,3= pending verification/use,4= refunded.keyword: search keyword, sent to upstream API asreal_name.fieldKey: upstreamfield_key; defaults toall.payType: upstreampay_type.type: upstream ordertype.btcId: upstream merchant category ID.
/api/merchant-ranking also supports:
sortBy:orderCount,successOrderCount,totalOrderAmount, ortotalRealPay; defaults tototalRealPay.limit: number of merchants to return; defaults to10, max100.
POST Example
curl -X POST http://127.0.0.1:8080/api/merchant-ranking \
-H "Content-Type: application/json" \
-d '{"timePreset":"today","sortBy":"totalRealPay","limit":10}'