用于手机APP(Android)对接的接口,实现登录、余额查询、订单查询和收款通知功能
如果您需要对接网站支付接口,请查看 商户API文档
所有APP接口统一使用 JSON 格式请求和返回,HTTP状态码配合业务code码使用。
接口地址:使用您的网站域名,例如:https://您的域名.com/api/app_login.php
通用返回格式:
{
"code": 200, // 200=成功 400=参数错误 401=认证失败 403=账户禁用 404=不存在 429=请求过多 500=服务器错误
"message": "xxx", // 提示信息
"data": {} // 返回数据(可选)
}
token,后续接口均使用 token 进行身份验证。Token 永久有效,无需重新登录。
请求地址:POST /api/app_login.php
Content-Type:application/json
用户名/密码在 HTTPS 环境中直接传输,由 TLS 加密保护。密码使用 bcrypt 存储和验证。
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| username | 是 | string | 用户名或邮箱 |
| password | 是 | string | 登录密码(HTTPS 加密传输) |
请求示例:
POST /api/app_login.php
Content-Type: application/json
{
"username": "demo",
"password": "123456"
}
返回示例:
{
"code": 200, // int 业务状态码
"message": "登录成功", // string 提示信息
"data": {
"token": "a1b2c3d4e5f6...1.a1b2c3d4e5f6a7b8", // string API Token(永久有效)
"user_id": 1, // int 用户ID
"username": "demo" // string 用户名
}
}
| 限制项 | 阈值 | 封锁时间 |
|---|---|---|
| 登录失败次数 | 10次/分钟 | 5分钟 |
| 适用范围 | 基于 IP 地址 + 用户名双重限制 | |
功能:查询当前用户的账户余额、会员类型、手续费率等信息。
用途:APP启动或需要更新余额时调用此接口。
请求地址:POST /api/app_balance.php
Content-Type:application/json
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | APP登录后获得的API Token(永久有效) |
请求示例:
POST /api/app_balance.php
Content-Type: application/json
{
"token": "a1b2c3d4e5f6..."
}
返回示例:
{
"code": 200, // int 业务状态码
"message": "获取成功", // string 提示信息
"data": {
"user_id": 1, // int 用户ID
"username": "demo", // string 用户名
"balance": "100.00", // string 账户余额(元),保留两位小数
"member_type": 2, // int 会员类型:1=免费 2=VIP 3=代理
"member_type_name": "VIP会员", // string 会员类型名称
"fee_rate": 1.2 // float 手续费率(百分比),如 1.2 表示 1.2%
}
}
fee_rate 为手续费百分比(float类型),例如 1.2 表示手续费为订单金额的 1.2%。支持小数,如 0.8、1.5、3.0 等。
功能:查询当前用户的订单列表,支持按状态筛选和分页。
用途:APP获取待支付订单供用户确认收款,或查询历史订单记录。
请求地址:POST /api/app_orders.php
Content-Type:application/json
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | APP登录后获得的API Token(永久有效) |
| status | 否 | int | 订单状态筛选:0=未支付,1=已支付,2=已关闭(无法支付)。不传则返回全部 |
| page | 否 | int | 页码,默认1 |
| page_size | 否 | int | 每页数量,默认20,最大50 |
请求示例:
POST /api/app_orders.php
Content-Type: application/json
{
"token": "a1b2c3d4e5f6...",
"status": 0,
"page": 1,
"page_size": 20
}
返回示例:
{
"code": 200, // int 业务状态码
"message": "获取成功", // string 提示信息
"data": {
"orders": [ // array 订单列表
{
"id": 1, // int 订单ID
"order_no": "20240101120000", // string 商户订单号
"trade_no": "SK20240101120000", // string 平台订单号
"app_name": "我的网站", // string 应用名称
"pay_type": 1, // int 支付方式:1=支付宝 2=微信
"pay_type_name": "支付宝", // string 支付方式名称
"amount": "100.00", // string 订单金额(元)
"actual_amount": "99.98", // string 实际收款金额(元)
"status": 0, // int 订单状态:0=未支付, 1=已支付, 2=已关闭(无法支付)
"status_name": "未支付", // string 状态名称
"fee": "0.00", // string 手续费,未支付时为0
"created_at": "2024-01-01 12:00:00", // string 创建时间
"paid_at": null // string|null 支付时间,未支付为null
}
],
"total": 50, // int 总记录数
"page": 1, // int 当前页码
"page_size": 20 // int 每页数量
}
}
status=0(未支付)的订单用于匹配收款,轮询间隔建议5-10秒。
功能:手机APP检测到收款后,调用此接口通知服务器更新订单状态。
说明:不需要配置回调URL,APP端通过订单列表接口轮询即可获取订单支付状态。
请求地址:POST /api/app_pay_notify.php
Content-Type:application/json
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | API Token(永久有效) |
| order_no | 是 | string | 商户订单号 |
处理流程:
请求示例:
POST /api/app_pay_notify.php
Content-Type: application/json
{
"token": "a1b2c3d4e5f6...",
"order_no": "20240101120000"
}
返回示例:
{
"code": 200, // int 业务状态码
"message": "支付确认成功", // string 提示信息
"data": {
"order_no": "20240101120000", // string 商户订单号
"trade_no": "SK20240101120000", // string 平台订单号
"amount": "100.00", // string 订单金额(元)
"actual_amount": "99.98", // string 实际收款金额(元)
"pay_type": 1, // int 支付方式:1=支付宝 2=微信
"pay_type_name": "支付宝", // string 支付方式名称
"status": 1, // int 订单状态,确认后固定为1
"status_name": "已支付", // string 状态名称
"fee_amount": "2.00", // string 本次手续费(元)
"balance": "98.00", // string 扣费后账户余额(元)
"paid_at": "2024-01-01 12:05:00" // string 支付确认时间
}
}
/api/app_orders.php 查询订单状态。
功能:APP确认收款后调用,更新订单状态、扣除手续费、记录余额变动。
说明:无需配置回调URL,APP端通过轮询查询订单状态即可。
请求地址:POST /api/app_callback.php
Content-Type:application/json
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | API Token(永久有效) |
| order_no | 是 | string | 商户订单号 |
请求示例:
POST /api/app_callback.php
Content-Type: application/json
{
"token": "a1b2c3d4e5f6...",
"order_no": "20240101120000"
}
返回示例:
{
"code": 200, // int 业务状态码
"message": "确认成功", // string 提示信息
"data": {
"order_no": "20240101120000", // string 商户订单号
"trade_no": "SK20240101120000", // string 平台订单号
"amount": "100.00", // string 订单金额(元)
"status": 1, // int 订单状态,确认后固定为1
"message": "支付已确认" // string 结果说明
}
}
| 错误码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 400 | 请求参数错误(缺少参数、格式错误等) |
| 401 | 认证失败(token无效、用户名密码错误) |
| 403 | 账户被禁用 |
| 404 | 订单不存在 |
| 405 | 请求方式错误(需使用POST) |
| 429 | 请求过于频繁(登录速率限制:10次/分钟,封锁5分钟) |
| 500 | 服务器内部错误 |