Appearance
用户虚拟货币转账
用于实现用户向指定收款账号转账虚拟货币的功能,支持GET和POST两种请求方式。参数需根据后台“用户令牌是否启用”灵活选择,newuser(收款账号)、num(转账数量)为必填项,应用签名直接从后台获取,同时需校验账号状态、余额等前置条件。
请求地址 GET / POST
http
https://nobase.cn/api/user/transfer请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用ID,填写从开发者中心获取的应用唯一标识 |
| newuser | query | string | ✅ 是 | 收款账号,需为已注册的有效用户账号(格式为纯数字) |
| num | query | string | ✅ 是 | 转账的虚拟货币数量,需为正整数(如“10”“50”),不可为负数、小数或非数字 |
| signature | query | string | ✅ 是 | 应用签名,直接从后台复制获取,无需手动生成 |
| token | query | string | 条件必选 | 用户令牌,仅在“用户令牌启用”时需传递;需为登录成功后获取的有效令牌,用于验证转账发起者身份 |
| user | query | string | 条件必选 | 转账发起者账号,仅在“用户令牌未启用”时需填写;格式为纯数字(如手机号) |
| pass | query | string | 条件必选 | 转账发起者密码,仅在“用户令牌未启用”时需填写;格式为字母数字组合(不可含中文),需与账号绑定的密码一致 |
返回示例
成功响应(转账成功)
json
{
"code": 200,
"msg": "success",
"data": "操作成功"
}失败响应(参数错误)
json
{
"code": 204,
"msg": "fail",
"data": "接口参数错误:缺少token"
}失败响应(账号异常)
json
{
"code": 404,
"msg": "fail",
"data": "收款账号未注册!"
}失败响应(余额不足)
json
{
"code": 405,
"msg": "fail",
"data": "余额不足"
}失败响应(令牌/密码错误)
json
{
"code": 401,
"msg": "fail",
"data": "token无效或已过期"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=转账成功;204=参数缺失/错误;401=令牌无效;404=账号/开发者/应用状态异常;405=余额不足/操作失败 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | string | 响应数据:返回操作结果提示或错误原因,如“操作成功”“余额不足” |
代码示例
javascript
// 1. 配置参数(用户令牌启用,需传有效token)
const appid = "your_app_id";
const newuser = "13900139000"; // 收款账号(纯数字)
const num = "30"; // 转账数量(正整数)
const signature = "signature_from_backend";
const token = "valid_user_token"; // 转账发起者的有效令牌
// 2. 构造POST参数
const params = new URLSearchParams({
appid,
newuser,
num,
signature,
token
});
// 3. 发起POST请求
fetch("https://nobase.cn/api/user/transfer", {
method: "POST",
body: params,
headers: { "Content-Type": "application/x-www-form-urlencoded" }
})
.then(res => res.json())
.then(res => {
res.code === 200
? console.log("转账成功:", res.data)
: console.error("转账失败:", res.data);
})
.catch(err => console.error("请求异常:", err));javascript
// 1. 配置参数(用户令牌未启用,需传user和pass)
const appid = "your_app_id";
const newuser = "13800138000"; // 收款账号
const num = "50"; // 转账数量
const signature = "signature_from_backend";
const user = "13700137000"; // 转账发起者账号(纯数字)
const pass = "UserPass123"; // 转账发起者密码(字母数字组合)
// 2. 拼接GET参数
const params = new URLSearchParams({ appid, newuser, num, signature, user, pass });
const requestUrl = `https://nobase.cn/api/user/transfer?${params.toString()}`;
// 3. 发起GET请求
fetch(requestUrl)
.then(res => res.json())
.then(res => {
res.code === 200
? console.log("转账成功:", res.data)
: console.error("转账失败:", res.data);
})
.catch(err => console.error("请求异常:", err));python
import requests
# 1. 配置参数
params = {
"appid": "your_app_id",
"newuser": "13900139000",
"num": "20",
"signature": "signature_from_backend",
"token": "valid_user_token"
}
# 2. 发起POST请求
url = "https://nobase.cn/api/user/transfer"
try:
res_data = requests.post(url, data=params, timeout=5).json()
print(f"结果:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")python
import requests
# 1. 配置参数
params = {
"appid": "your_app_id",
"newuser": "13800138000",
"num": "40",
"signature": "signature_from_backend",
"user": "13700137000",
"pass": "UserPass123"
}
# 2. 发起GET请求
url = "https://nobase.cn/api/user/transfer"
try:
res_data = requests.get(url, params=params, timeout=5).json()
print(f"结果:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")注意事项
参数选择规则
- 用户令牌启用:仅需传递
appid、newuser、num、signature、token,通过令牌验证转账发起者身份,无需传递user和pass; - 用户令牌未启用:需传递
appid、newuser、num、signature、user、pass,通过账号密码验证身份,不可同时传递token和user/pass。
- 用户令牌启用:仅需传递
关键参数校验
newuser:必须是已注册的有效账号(纯数字),否则返回“收款账号未注册”;num:必须为正整数,且不超过转账发起者的当前余额,否则返回“余额不足”;user(令牌未启用时):格式为纯数字,长度需符合应用配置的“账号长度范围”(最短/最长限制)。
状态前置检查
接口会校验以下状态,异常时返回对应提示:- 开发者账号是否逾期、状态是否正常;
- 应用是否处于“正常状态”(非审核中、非停用);
- 转账发起者和收款账号的状态是否正常(非异常/禁用)。
安全提示
- 令牌未启用时,
pass以明文传递,生产环境必须使用HTTPS协议; - 优先推荐启用用户令牌,减少账号密码暴露风险;
- 转账前建议调用“用户余额接口”查询当前余额,提前提示用户“余额不足”,提升体验。
- 令牌未启用时,

