Appearance
用户余额扣除接口
用于实现用户虚拟货币余额扣除功能,支持GET和POST两种请求方式。参数需根据后台是否启用“用户令牌校验”灵活选择:启用则仅传token,无需传user和pass;应用签名直接从后台获取,无需手动生成。
请求地址 GET / POST
http
https://nobase.cn/api/user/money_reduce请求参数
| 参数名 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| appid | query | string | ✅ 是 | 应用ID,填写从开发者中心获取的应用唯一标识 |
| token | query | string | ❌ 否 | 用户令牌,仅在后台应用配置启用“用户令牌校验”时需传递;启用后无需再传user和pass |
| user | query | string | 条件必选 | 用户账号,仅在未启用“用户令牌校验”时需填写(填写注册时使用的唯一账号,如手机号、用户名) |
| pass | query | string | 条件必选 | 用户密码,仅在未启用“用户令牌校验”时需填写(填写注册时使用的原始密码) |
| num | query | string | ✅ 是 | 扣除的虚拟货币数量,需为正整数(如“10”“50”,不可为负数、小数或非数字格式) |
| signature | query | string | ✅ 是 | 应用签名,直接从后台复制获取,确保无多余空格或字符缺失 |
返回示例
成功响应(余额扣除成功)
json
{
"code": 200,
"msg": "success",
"data": "操作成功"
}失败响应(余额不足)
json
{
"code": 405,
"msg": "fail",
"data": "余额不足"
}返回数据结构
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | number | 状态码:200=扣除成功,405=余额不足 |
| msg | string | 状态描述:success=成功,fail=失败 |
| data | string | 响应数据:返回“操作成功”或“余额不足”的具体提示 |
代码示例
javascript
// 1. 配置参数(启用令牌校验:传token,无需传user和pass)
const appid = "your_app_id"; // 替换为实际应用ID
const token = "valid_user_token"; // 替换为登录获取的有效令牌
const num = "20"; // 替换为需扣除的虚拟货币数量(正整数)
const signature = "signature_from_backend"; // 替换为后台复制的应用签名
// 2. 拼接GET参数
const params = new URLSearchParams({
appid,
token,
num,
signature
});
// 3. 发起GET请求
const requestUrl = `https://nobase.cn/api/user/money_reduce?${params.toString()}`;
fetch(requestUrl)
.then(response => {
if (!response.ok) throw new Error(`HTTP错误:${response.status}`);
return response.json();
})
.then(res => {
if (res.code === 200) {
console.log("余额扣除成功:", res.data);
} else if (res.code === 405) {
console.error("余额扣除失败:", res.data);
}
})
.catch(error => console.error("请求异常:", error));javascript
// 1. 配置参数(未启用令牌校验:传user和pass,无需传token)
const appid = "your_app_id";
const user = "user_account"; // 替换为用户注册账号
const pass = "user_password"; // 替换为用户注册密码
const num = "50"; // 替换为需扣除的虚拟货币数量(正整数)
const signature = "signature_from_backend";
// 2. 构造POST参数
const params = new URLSearchParams({
appid,
user,
pass,
num,
signature
});
// 3. 发起POST请求
fetch("https://nobase.cn/api/user/money_reduce", {
method: "POST",
body: params,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
})
.then(response => response.json())
.then(res => {
if (res.code === 200) {
console.log("余额扣除成功:", res.data);
} else if (res.code === 405) {
console.error("余额扣除失败:", res.data);
}
})
.catch(error => console.error("请求异常:", error));python
import requests
# 1. 配置参数
appid = "your_app_id"
token = "valid_user_token"
num = "30" # 需扣除的虚拟货币数量(正整数)
signature = "signature_from_backend"
# 2. 构造GET参数
params = {
"appid": appid,
"token": token,
"num": num,
"signature": signature
}
# 3. 发起GET请求
url = "https://nobase.cn/api/user/money_reduce"
try:
response = requests.get(url, params=params, timeout=5)
response.raise_for_status()
res_data = response.json()
if res_data["code"] == 200:
print(f"余额扣除结果:{res_data['data']}")
elif res_data["code"] == 405:
print(f"余额扣除失败:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")python
import requests
# 1. 配置参数
appid = "your_app_id"
user = "user_account"
passwd = "user_password"
num = "100" # 需扣除的虚拟货币数量(正整数)
signature = "signature_from_backend"
# 2. 构造POST参数
params = {
"appid": appid,
"user": user,
"pass": passwd,
"num": num,
"signature": signature
}
# 3. 发起POST请求
url = "https://nobase.cn/api/user/money_reduce"
try:
response = requests.post(url, data=params, timeout=5)
res_data = response.json()
if res_data["code"] == 200:
print(f"余额扣除结果:{res_data['data']}")
elif res_data["code"] == 405:
print(f"余额扣除失败:{res_data['data']}")
except requests.exceptions.RequestException as e:
print(f"请求异常:{str(e)}")注意事项
- 参数选择规则:后台启用“用户令牌校验”后,仅需传递
appid、token、num、signature;未启用时,需传递appid、user、pass、num、signature,不可同时传递token和user/pass。 - 扣除数量限制:
num参数必须为正整数,不可传递负数、小数或非数字(如“-5”“10.5”“abc”),否则会导致参数校验失败,建议前端提前做格式校验。 - 签名有效性:
signature直接从后台复制,确保与后台存储的签名完全一致;若返回“签名错误”,需核对是否存在字符缺失、多余空格或大小写问题。 - 余额校验建议:扣除前可先调用“用户信息接口”获取当前余额,提前提示用户“余额不足”,减少接口调用失败的情况(尤其对用户体验要求较高的场景)。
- 安全与合规:未启用令牌校验时,
pass以明文传递,生产环境需强制使用HTTPS协议;余额扣除属于敏感操作,建议记录操作日志(如扣除时间、扣除数量、操作人员),便于后续对账和问题追溯。

