Skip to content

用户余额扣除接口

用于实现用户虚拟货币余额扣除功能,支持GET和POST两种请求方式。参数需根据后台是否启用“用户令牌校验”灵活选择:启用则仅传token,无需传user和pass;应用签名直接从后台获取,无需手动生成。

请求地址 GET / POST

http
https://nobase.cn/api/user/money_reduce

请求参数

参数名位置类型必选说明
appidquerystring✅ 是应用ID,填写从开发者中心获取的应用唯一标识
tokenquerystring❌ 否用户令牌,仅在后台应用配置启用“用户令牌校验”时需传递;启用后无需再传user和pass
userquerystring条件必选用户账号,仅在未启用“用户令牌校验”时需填写(填写注册时使用的唯一账号,如手机号、用户名)
passquerystring条件必选用户密码,仅在未启用“用户令牌校验”时需填写(填写注册时使用的原始密码)
numquerystring✅ 是扣除的虚拟货币数量,需为正整数(如“10”“50”,不可为负数、小数或非数字格式)
signaturequerystring✅ 是应用签名,直接从后台复制获取,确保无多余空格或字符缺失

返回示例

成功响应(余额扣除成功)

json
{
  "code": 200,
  "msg": "success",
  "data": "操作成功"
}

失败响应(余额不足)

json
{
  "code": 405,
  "msg": "fail",
  "data": "余额不足"
}

返回数据结构

参数名类型说明
codenumber状态码:200=扣除成功,405=余额不足
msgstring状态描述:success=成功,fail=失败
datastring响应数据:返回“操作成功”或“余额不足”的具体提示

代码示例

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)}")

注意事项

  1. 参数选择规则:后台启用“用户令牌校验”后,仅需传递 appidtokennumsignature;未启用时,需传递 appiduserpassnumsignature,不可同时传递 tokenuser/pass
  2. 扣除数量限制num 参数必须为正整数,不可传递负数、小数或非数字(如“-5”“10.5”“abc”),否则会导致参数校验失败,建议前端提前做格式校验。
  3. 签名有效性signature 直接从后台复制,确保与后台存储的签名完全一致;若返回“签名错误”,需核对是否存在字符缺失、多余空格或大小写问题。
  4. 余额校验建议:扣除前可先调用“用户信息接口”获取当前余额,提前提示用户“余额不足”,减少接口调用失败的情况(尤其对用户体验要求较高的场景)。
  5. 安全与合规:未启用令牌校验时,pass 以明文传递,生产环境需强制使用HTTPS协议;余额扣除属于敏感操作,建议记录操作日志(如扣除时间、扣除数量、操作人员),便于后续对账和问题追溯。