订单创建、查询、回调通知接口说明
api_token 验证,token 通过会员登录获取,不可伪造。
https://pay.qianxi.xin/api/order/
所有订单接口必须携带 api_token 参数,支持以下方式传递:
| 方式 | 示例 |
|---|---|
| URL参数 | ?api_token=xxxx |
| POST表单 | api_token=xxxx |
| POST JSON | {"api_token": "xxxx"} |
POST /api/order/create?api_token=xxxx
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| api_token | 是 | string | 会员API Token(鉴权必填) |
| title | 是 | string | 商品名称 |
| amount | 是 | float | 金额(元),系统会自动调整确保唯一性 |
| description | 否 | string | 商品描述 |
| pay_type | 否 | string | 支付方式: wechat/alipay/any(默认) |
| expire_minutes | 否 | int | 过期分钟数(默认5,最长1440) |
| notify_url | 否 | string | 支付成功回调地址 |
| extra | 否 | string | 扩展数据(JSON) |
| 场景 | 处理方式 |
|---|---|
| 5分钟内无相同金额的待支付订单 | 使用原始金额创建订单 |
| 5分钟内有相同金额的待支付订单 | 自动加0.01元,直到找到可用金额 |
| 原订单支付成功/取消/过期 | 该金额可再次使用 |
| 最多调整次数 | 100次(最多加1元) |
示例场景:
用户A请求创建 ¥1.00 订单 → 创建成功,金额 ¥1.00 用户A再次请求创建 ¥1.00 订单 → 自动调整为 ¥1.01 用户A第三次请求 ¥1.00 → 自动调整为 ¥1.02 第一个订单 ¥1.00 支付成功 → 下次可再次创建 ¥1.00
请求示例:
POST /api/order/create?api_token=你的API_TOKEN
Content-Type: application/json
{
"title": "VIP会员月卡",
"description": "一个月VIP会员服务",
"amount": 29.90,
"pay_type": "any",
"expire_minutes": 5,
"notify_url": "https://your-site.com/callback"
}
返回示例:
{
"code": 0,
"msg": "订单创建成功(原金额¥1.00已调整,避免冲突)",
"data": {
"order_id": 1,
"order_no": "ORD20260530143022123456",
"title": "VIP会员月卡",
"description": "一个月VIP会员服务",
"amount": 1.01,
"original_amount": 1.00,
"amount_adjusted": true,
"pay_type": "any",
"status": "pending",
"expire_at": "2026-05-30 15:00:22",
"expire_minutes": 5,
"created_at": "2026-05-30 14:30:22",
"qrcodes": [
{
"id": 1,
"type": "wechat",
"name": "微信收款码",
"image_path": "/qrcode/wechat1.png",
"qr_content": "wxp://f2f0..."
},
{
"id": 2,
"type": "alipay",
"name": "支付宝收款码",
"image_path": "/qrcode/alipay1.png",
"qr_content": "https://qr.alipay.com/..."
}
]
}
}
GET /api/order/list?api_token=xxxx&page=1&size=20
| 参数 | 必填 | 说明 |
|---|---|---|
| api_token | 是 | 会员API Token |
| page | 否 | 页码(默认1) |
| size | 否 | 每页条数(默认20,最大100) |
| status | 否 | 筛选状态: pending/paid/expired/cancelled/refunded |
| keyword | 否 | 搜索关键词(商品名/订单号/备注) |
| start_date | 否 | 开始日期(2026-01-01) |
| end_date | 否 | 结束日期(2026-12-31) |
GET /api/order/detail?api_token=xxxx&order_no=ORD20260530143022123456
返回订单完整信息及操作日志。
POST /api/order/cancel?api_token=xxxx
{
"order_no": "ORD20260530143022123456"
}
POST /api/order/refund?api_token=xxxx
{
"order_no": "ORD20260530143022123456",
"reason": "用户申请退款"
}
POST /api/order/notify?api_token=xxxx
{
"order_no": "ORD20260530143022123456"
}
GET /api/order/stats?api_token=xxxx&period=today
| period值 | 说明 |
|---|---|
| today | 今天 |
| week | 最近7天 |
| month | 最近30天 |
| all | 全部 |
| 状态 | 说明 |
|---|---|
| pending | 待支付 |
| paid | 已支付 |
| expired | 已过期 |
| cancelled | 已取消 |
| refunded | 已退款 |
订单支付成功后,系统会向 notify_url 发送 POST 请求:
{
"order_no": "ORD20260530143022123456",
"title": "VIP会员月卡",
"amount": 29.90,
"pay_type": "alipay",
"status": "paid",
"payer": "付款人昵称",
"remark": "付款备注",
"paid_at": "2026-05-30 14:31:05",
"created_at": "2026-05-30 14:30:22",
"timestamp": 1748615465
}
A: 系统会自动调整金额避免冲突。返回的 amount 是实际创建的金额,original_amount 是你请求的原始金额,amount_adjusted 为 true 表示已调整。
A: 订单默认5分钟过期。请确认:1) 付款金额与订单金额完全一致(精确到分);2) 付款在过期时间内完成;3) App已正常上报收款到服务器。
A: 回调数据包含 status: "paid" 字段。如果第三方系统需要兼容,建议同时检查 status 和 paid_at 字段。
A: 通过会员登录接口 POST /api/member/login 获取,或在会员中心查看。
A: 会。系统有定时任务每分钟检查,将过期订单标记为 expired。也可以通过 Cron 脚本 cron_order_expire.php 手动执行。
A: 无限制。但系统会自动调整金额确保每个订单金额唯一,最多调整100次(加1元)。