APP开发API文档

用于手机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": {}         // 返回数据(可选)
}
提示:APP端先调用登录接口获取 token,后续接口均使用 token 进行身份验证。Token 永久有效,无需重新登录。
安全说明:已启用 HTTPS/TLS 加密,所有数据传输安全。内置速率限制(10次/分钟),Token 永久有效,HMAC 签名防伪造。

APP APIAPP登录接口

请求地址:POST /api/app_login.php

Content-Type:application/json

用户名/密码在 HTTPS 环境中直接传输,由 TLS 加密保护。密码使用 bcrypt 存储和验证。

参数名必填类型说明
usernamestring用户名或邮箱
passwordstring登录密码(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 API余额查询接口

功能:查询当前用户的账户余额、会员类型、手续费率等信息。
用途:APP启动或需要更新余额时调用此接口。

请求地址:POST /api/app_balance.php

Content-Type:application/json

参数名必填类型说明
tokenstringAPP登录后获得的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 API订单查询接口

功能:查询当前用户的订单列表,支持按状态筛选和分页。
用途:APP获取待支付订单供用户确认收款,或查询历史订单记录。

请求地址:POST /api/app_orders.php

Content-Type:application/json

参数名必填类型说明
tokenstringAPP登录后获得的API Token(永久有效)
statusint订单状态筛选:0=未支付,1=已支付,2=已关闭(无法支付)。不传则返回全部
pageint页码,默认1
page_sizeint每页数量,默认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    每页数量
    }
}
建议APP轮询获取 status=0(未支付)的订单用于匹配收款,轮询间隔建议5-10秒。

APP API收款通知接口

功能:手机APP检测到收款后,调用此接口通知服务器更新订单状态。
说明:不需要配置回调URL,APP端通过订单列表接口轮询即可获取订单支付状态。

请求地址:POST /api/app_pay_notify.php

Content-Type:application/json

参数名必填类型说明
tokenstringAPI Token(永久有效)
order_nostring商户订单号

处理流程:

1 验证用户Token有效性
2 查找订单,验证归属和状态
3 更新订单为已支付
4 扣除手续费、记录余额变动

请求示例:

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 支付确认时间
    }
}
提示:同一个订单不可重复通知。APP端可通过轮询 /api/app_orders.php 查询订单状态。

APP API支付确认接口

功能:APP确认收款后调用,更新订单状态、扣除手续费、记录余额变动。
说明:无需配置回调URL,APP端通过轮询查询订单状态即可。

请求地址:POST /api/app_callback.php

Content-Type:application/json

参数名必填类型说明
tokenstringAPI Token(永久有效)
order_nostring商户订单号

请求示例:

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 结果说明
    }
}
此接口与收款通知接口功能类似,均无需配置回调URL,APP端通过轮询订单状态即可完成支付流程。

错误码说明

错误码说明
200请求成功
400请求参数错误(缺少参数、格式错误等)
401认证失败(token无效、用户名密码错误)
403账户被禁用
404订单不存在
405请求方式错误(需使用POST)
429请求过于频繁(登录速率限制:10次/分钟,封锁5分钟)
500服务器内部错误