Skip to content

2026-10-09:用户充值订单生命周期 ​

用户余额充值(user_type=2、recharge_type=user_money)同时仅允许一个未完成订单。 doRecharge 和 doRechargeV2 共用数据库用户行锁和事务;重复请求返回原待支付订单,不使用新请求金额另建订单。

  • POST /home/money/pendingRecharge:无参数,返回 data.order(当前待支付订单对象或 null),不生成支付指令。
  • POST /home/money/cancelRecharge:参数 trade_no,只能关闭本人未支付订单。成功返回订单对象;已到账订单拒绝关闭。
  • POST /home/money/rechargeList:省略 status 返回所有状态;每条新增 expires_at(秒时间戳)、can_pay(布尔)、status_text。
  • 状态:0 待支付、1 已到账、2 已超时、3 已退款、4 主动关闭。尚无独立的链上确认中状态;等待支付回调期间仍为 0,不能提前视为到账。
  • 创建、查询及恢复支付前会按 create_at + charge_order_auto_close_time 校正超时,即使内存定时器没有执行也不会让旧订单无限阻塞。
  • 客户端进入充值先查询待支付单,存在则恢复 /wallet/recharge/:tradeNo;修改金额前须确认关闭旧单。已转账应等待到账,避免关闭或重复付款。
  • 资金页合并流水和所有充值订单,按创建时间倒序分页;充值入账流水去重。普通流水仅显示短业务标题,不打开资金明细面板。仅 can_pay=true 且未过期的充值记录允许续付。

以上改动无需数据库加列。客户端、服务端及后台充值状态展示需同步部署。

1. 获取充值通道 ​

接口地址:/home/money/getRechargeChannel

  • 2026-2-5 变更:新增字段 u_coin_rate 汇率、min_recharge 最小充值金额、u_channel_id 随机一个存在收款账号的 USDT 充值渠道 ID (使用此固定为类型为 usdt 的支付通道时,响应里的 channels 不需要在使用)

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "fee_rate": 0.05, // 充值手续费率
    "channels": [
      {
        "value": 1, // 支付通道 ID
        "label": "支付宝", // 支付通道名称
        "ico": "https://fast.qqss.net/static/payment/zfb.png" // 支付通道图标
      }
    ],
    "u_coin_rate": 7.2, // 2026-2-5 新增
    "min_recharge": 20, // 2026-2-5 新增
    "u_channel_id": 1 // 2026-2-5 新增
  }
}

1.1 获取 U 汇率 ​

接口地址:/home/money/uCoinRate

请求参数:无

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "rate": 7.2
  }
}

2. 用户钱包充值 ​

接口地址:/home/money/doRecharge

请求参数:

参数名类型必填说明
amountfloat是充值金额
channelIdint是充值通道 ID(从获取充值通道接口的 value 字段获取)

响应示例:

json
{
  "code": 1,
  "msg": "",
  "data": {
    "trade_no": "M240323034959999972",
    "url": "http://127.0.0.1:7979/pay/M240323034959999972",
    "auto_close_time": 1800, // 订单自动超时关闭时间
    "u_coin_rate": 7.2 // U 汇率
  }
}

字段说明:

  • trade_no:充值订单号
  • url:支付页面 URL(需要跳转到此 URL 完成支付)
  • auto_close_time:订单自动关闭时间(秒,默认 1800 秒=30 分钟)
  • u_coin_rate:U 汇率

说明:

  • 创建充值订单后,需要跳转到返回的 url 完成支付
  • channelId 参数值来自"获取充值通道"接口返回的 channels[].value 字段
  • 订单创建后会自动关闭,关闭时间由系统配置 charge_order_auto_close_time 决定
  • 支付页面会根据选择的通道展示相应的支付方式
  • 充值金额需大于 0

支付页面接入说明:

  • url 对应 /pay/{trade_no} 收银台页面,可直接跳转、新窗口打开或 iframe 打开。
  • USDT TRC20 支付页在用户点击“我已支付,点击校验”后,会在成功或失败时向父页面和打开方发送 postMessage。
  • 如果打开支付页时追加 redirect_url 参数,校验成功后会自动跳转到该地址。

redirect_url 用法:

txt
http://127.0.0.1:7979/pay/M240323034959999972?redirect_url=http%3A%2F%2F127.0.0.1%3A5173%2Fwallet%2Frecharge%2Fresult

支付成功后会跳转到:

txt
http://127.0.0.1:5173/wallet/recharge/result?trade_no=M240323034959999972&pay_status=success&status=1&msg=支付成功

支付页 postMessage 消息格式:

json
{
  "type": "usdt-trc20-pay-result",
  "trade_no": "M240323034959999972",
  "status": 1,
  "success": true,
  "msg": "支付成功",
  "data": {
    "status": 1
  }
}

前端监听示例:

js
window.addEventListener('message', function (event) {
  var data = event.data;
  if (!data || data.type !== 'usdt-trc20-pay-result') return;

  if (data.success) {
    // 支付校验通过,继续下一步
  }
});

安全备注:

  • 当前 redirect_url 支持跨域跳转,便于不同前端域名接入。
  • 生产环境如需更严格控制,建议后续增加域名白名单或对 redirect_url 做服务端签名校验,避免开放重定向风险。

2.1 获取原生客户端充值方式(V2) ​

接口地址:/home/money/getRechargeOptions

请求方式:POST

旧接口 /home/money/getRechargeChannel 保持不变。新客户端应使用本接口中的稳定业务字段,不要根据 name 文案推断支付类型。

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "fee_rate": 0.05,
    "min_recharge": 20,
    "max_recharge": 5000,
    "input_currency": "CNY",
    "channels": [
      {
        "channel_id": 2,
        "gateway_code": "UsdtTrc20",
        "method_code": "usdt_trc20",
        "name": "USDT-TRC20",
        "icon": "https://example.com/static/payment/usdt.png",
        "presentation": "crypto_transfer",
        "currency": "USDT",
        "network": "TRC20",
        "capabilities": {
          "manual_verify": true,
          "copy_address": true,
          "exact_amount": true
        }
      }
    ]
  }
}

展示模式 presentation:

icon 优先返回管理员为该收款接口上传的自定义图标;未设置时自动返回支付分类的默认图标,客户端无需自行处理回退。

值前端处理
crypto_transfer展示后端返回的地址、精确金额、网络和二维码
scan_qr使用 payment.qr_payload 生成二维码
redirect打开 payment.redirect_url
cashieriframe 或新窗口打开 payment.cashier_url

2.2 创建充值订单并返回支付指令(V2) ​

接口地址:/home/money/doRechargeV2

请求方式:POST

参数名类型必填说明
amountnumber是用户输入的人民币充值金额
channel_idint是getRechargeOptions 返回的渠道 ID;兼容传入 channelId

USDT-TRC20 响应示例:

json
{
  "code": 1,
  "msg": "创建成功",
  "data": {
    "trade_no": "M240323034959999972",
    "status": 0,
    "channel": {
      "channel_id": 2,
      "gateway_code": "UsdtTrc20",
      "method_code": "usdt_trc20",
      "name": "USDT-TRC20",
      "icon": "https://example.com/static/payment/usdt.png",
      "presentation": "crypto_transfer",
      "currency": "USDT",
      "network": "TRC20",
      "capabilities": {
        "manual_verify": true,
        "copy_address": true,
        "exact_amount": true
      }
    },
    "amount": {
      "requested": "100.000",
      "fee": "5.000",
      "payable_cny": "105.000",
      "payment_amount": "14.583",
      "payment_currency": "USDT"
    },
    "payment": {
      "presentation": "crypto_transfer",
      "qr_payload": "TF6gpG55Ab4vFdAT4LjaDsPRpkRpCB88t1",
      "address": "TF6gpG55Ab4vFdAT4LjaDsPRpkRpCB88t1",
      "redirect_url": null,
      "cashier_url": "https://example.com/pay/M240323034959999972",
      "exact_amount": true,
      "manual_verify": true,
      "network": "TRC20",
      "exchange_rate": "7.2000"
    },
    "created_at": 1784900000,
    "expires_at": 1784901800,
    "remaining_seconds": 1800,
    "cashier_url": "https://example.com/pay/M240323034959999972"
  }
}

重要说明:

  • USDT 的 payment_amount 是服务端占用尾数后生成的订单唯一金额,前端必须按字符串原样展示和复制,不得用汇率重新计算、四舍五入或截断。
  • qr_payload 是二维码原始内容,不是二维码图片 URL;前端应使用二维码库生成图片。
  • 支付宝、微信、银联扫码返回 scan_qr;不支持原生 JSON 的现有 H5、网银和聚合通道返回 cashier,继续使用旧收银台。
  • 旧 /home/money/doRecharge 和 /pay/{trade_no} 完整保留。

2.3 恢复充值支付指令(V2) ​

接口地址:/home/money/rechargePaymentDetail

请求方式:POST

参数名类型必填说明
trade_nostring是当前登录用户自己的充值订单号

响应结构与 doRechargeV2.data 相同。用于刷新页面、切回应用或网络重试;USDT 会返回已经占用的同一个精确金额,不会重新生成尾数。

该接口会校验订单所属用户,不能读取其他用户的充值支付信息。

2.4 查询充值订单支付状态 ​

接口地址:/home/pay/orderStatus

请求参数:

参数名类型必填说明
trade_noString是充值订单号

待支付响应示例:

json
{
  "code": 1,
  "msg": "等待支付",
  "data": {
    "status": 0
  }
}

已支付响应示例:

json
{
  "code": 1,
  "msg": "订单已支付",
  "data": {
    "status": 1
  }
}

已关闭响应示例:

json
{
  "code": 0,
  "msg": "订单超时已关闭",
  "data": {
    "status": 2
  }
}

2.5 USDT 支付主动校验 ​

接口地址:/home/pay/usdtVerify

请求参数:

参数名类型必填说明
trade_noString是充值订单号

响应示例:

json
{
  "code": 1,
  "msg": "支付成功",
  "data": {
    "status": 1
  }
}
json
{
  "code": 0,
  "msg": "链上到账确认中,系统将继续查询,请稍候",
  "data": {
    "status": 0
  }
}

说明:实际 msg 和 status 由 USDT TRC20 收款校验结果决定。支付有效期内客户端会持续校验,服务端通过两个链上数据源交叉查询;链上确认或数据源索引存在延迟时,status=0 表示继续确认,不代表转账失败。

错误响应示例:

json
{
  "code": 0,
  "msg": "充值金额必须大于0",
  "data": null
}
json
{
  "code": 0,
  "msg": "充值通道不存在或已关闭",
  "data": null
}

3. 充值订单列表 ​

接口地址:/home/money/rechargeList

请求参数:

参数名类型必填说明
statusInteger否订单状态:0-待支付,1-已支付,2-已关闭
pageInteger否页码,默认 1
limitInteger否每页数量,默认 10

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "list": [
      {
        "id": 17,
        "trade_no": "M251116899237",
        "user_type": 2,
        "goods_name": "用户钱包充值 50元",
        "total_price": "52.500",
        "finally_money": "50.000",
        "user_id": 1008,
        "status": 2,
        "channel_account_id": 21,
        "channel_id": 1,
        "recharge_type": "user_money",
        "fee": "2.500",
        "create_at": "2025-11-16 08:18:40",
        "pay_at": null,
        "transaction_id": null
      }
    ],
    "total": 1
  }
}

字段说明:

基础信息:

  • id:充值订单 ID
  • trade_no:充值订单号
  • goods_name:订单描述(格式:用户钱包充值 XX 元)
  • create_at:创建时间
  • pay_at:支付时间(未支付时为 null)
  • transaction_id:第三方支付交易号(未支付时为 null)

用户信息:

  • user_id:用户 ID
  • user_type:用户类型(2-普通用户)

金额信息:

  • total_price:订单总价(充值金额 + 手续费)
  • finally_money:实际到账金额(充值金额)
  • fee:手续费

充值信息:

  • channel_id:充值通道 ID
  • channel_account_id:通道账户 ID
  • recharge_type:充值类型(user_money-用户余额)

订单状态:

  • status:订单状态
    • 0:待支付
    • 1:已支付
    • 2:已关闭

说明:

  • 订单列表只显示用户设置的数据时效性范围内的订单
  • 默认按创建时间倒序排列
  • total_price = finally_money + fee
  • 已支付的订单会有 pay_at 和 transaction_id
  • 订单超时未支付会自动关闭(status = 2)

4. 申请提现配置详情 ​

接口地址:/home/money/applyConfig

请求参数:无

响应示例:

  • 同 商户端 获取申请提现配置
json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "user": {
      "id": 1008,
      "money": 0,
      "freeze_money": 120,
      "user_money": 1266,
      "cash_type": 3,
      "auto_cash_money": 20
    },
    "limit_num": 5,
    "cash_fee_type": 100,
    "cash_fee": "10%",
    "auto_cash_fee": 15,
    "cash_limit_time": "0:00 ~ 23:00",
    "cash_min_money": 100,
    "auto_cash_money": 50
  }
}

字段说明:

user(用户信息):

  • id:用户 ID
  • user_money:用户可用余额
  • cash_type:提现方式
    • 1:支付宝
    • 2:银行卡
    • 3:支付宝和银行卡
  • auto_cash_money:用户设置的自动提现金额

提现配置:

  • limit_num:每日提现次数限制
  • cash_fee_type:手续费类型
    • 1:固定金额
    • 100:百分比
  • cash_fee:手续费值
    • 当 cash_fee_type = 1 时,为固定人民币(如:5 表示 5 元)
    • 当 cash_fee_type = 2 时,为固定 USDT(如:3 表示 3 USDT)
    • 当 cash_fee_type = 100 时,为百分比(如:10 表示 10%,显示为"10%")
  • auto_cash_fee:自动提现手续费,由 auto_cash_fee_type 决定单位
  • cash_limit_time:提现时间限制(格式:"0:00 ~ 23:00")
  • cash_min_money:最小提现金额
  • auto_cash_money:系统设置的自动提现金额阈值

说明:

  • user_money 为用户可提现的余额
  • 提现金额需 ≥ cash_min_money
  • 每日提现次数不能超过 limit_num
  • 提现时间需在 cash_limit_time 范围内
  • 手续费计算方式根据 cash_fee_type 决定:
    • 固定人民币(type=1):人民币手续费 = cash_fee
    • 固定 USDT(type=2):人民币手续费 = cash_fee × u_coin_rate,按申请时汇率折算,四舍五入保留 3 位小数
    • 百分比(type=100):手续费 = 提现金额 × (cash_fee / 100)
  • 自动提现:当余额达到 auto_cash_money 时自动发起提现

手续费计算示例:

示例1:固定金额
cash_fee_type = 1
cash_fee = 5
提现金额 = 100元
手续费 = 5元
实际到账 = 100 - 5 = 95元

示例2:百分比
cash_fee_type = 100
cash_fee = "10%"(实际值为10)
提现金额 = 100元
手续费 = 100 × (10 / 100) = 10元
实际到账 = 100 - 10 = 90元

5. 申请提现 ​

接口地址:/home/money/doWithdraw

请求参数:

参数名类型必填说明
moneyDecimal是提现金额

成功响应示例:

json
{
  "code": 1,
  "msg": "申请成功"
}

错误响应示例:

1. 系统关闭提现:

json
{
  "code": 0,
  "msg": "系统配置的提现关闭提示语"
}

注:实际消息内容由系统配置 cash_close_tips 决定

2. 账户被冻结:

json
{
  "code": 0,
  "msg": "无法申请提现操作,您的账户已被冻结!"
}

3. 未设置收款信息:

json
{
  "code": 0,
  "msg": "您还未设置收款信息!"
}

4. 不在提现时间:

json
{
  "code": 0,
  "msg": "不在允许提现时间(0:00 ~ 23:00)"
}

注:时间范围根据系统配置动态生成

5. 超过提现次数:

json
{
  "code": 0,
  "msg": "系统配置的提现次数限制提示语"
}

注:实际消息内容由系统配置 cash_limit_num_tips 决定

6. 提现金额错误:

json
{
  "code": 0,
  "msg": "提现金额不能小于等于0!"
}
json
{
  "code": 0,
  "msg": "提现金额不能小于最低提现金额!"
}

7. 余额不足:

json
{
  "code": 0,
  "msg": "您的余额不足以提现"
}

说明:

  • 用户端发起提现只需已设置收款地址,不再重复验证二级密码
  • 提现金额需 ≥ 系统设置的最低提现金额
  • 每日提现次数有限制
  • 提现时间受系统配置限制
  • 提现会扣除相应的手续费
  • 提现申请提交后需要等待平台审核打款
  • 实际到账金额 = 提现金额 - 手续费

6. 提现列表 ​

接口地址:/home/money/cashList

请求参数:

参数名类型必填说明
statusInteger否订单状态:0-待审核,1-已通过,2-已拒绝
channel_idInteger否提现通道 ID
pageInteger否页码,默认 1
limitInteger否每页数量,默认 10

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "list": [
      {
        "id": 3,
        "user_id": 1008,
        "type": 1,
        "collect_info": "支付宝账号:123<br>真实姓名:123<br>身份证号:123",
        "money": "100.000",
        "fee": "10.000",
        "actual_money": "90.000",
        "status": 0,
        "create_at": "2025-11-16 08:27:51",
        "complete_at": 0,
        "collect_img": "",
        "cash_type": 2,
        "bank_name": "",
        "bank_branch": "",
        "bank_card": "123",
        "realname": "123",
        "idcard_number": "123",
        "trade_no": "",
        "channel_account_id": 0,
        "channel_id": 0,
        "user_type": 2
      }
    ],
    "total": 1
  }
}

字段说明:

基础信息:

  • id:提现订单 ID
  • user_id:用户 ID
  • user_type:用户类型(2-普通用户)
  • create_at:创建时间
  • complete_at:完成时间(0 表示未完成)
  • trade_no:交易号(审核通过后填写)

金额信息:

  • money:申请提现金额
  • fee:手续费
  • actual_money:实际到账金额(money - fee)

收款信息:

  • type:收款方式类型
    • 1:支付宝
    • 2:微信
    • 3:银行卡
    • 4:USDT
  • collect_info:收款信息(HTML 格式,包含账号、姓名、身份证等)
  • collect_img:收款二维码图片
  • bank_name:银行名称(type=3 时有值)
  • bank_branch:开户支行(type=3 时有值)
  • bank_card:收款账号
  • realname:真实姓名
  • idcard_number:身份证号

提现信息:

  • cash_type:提现类型
    • 1:自动提现
    • 2:手动提现
  • channel_id:提现通道 ID
  • channel_account_id:通道账户 ID

订单状态:

  • status:审核状态
    • 0:待审核
    • 1:已通过
    • 2:已拒绝

说明:

  • 订单列表只显示用户设置的数据时效性范围内的订单
  • 默认按创建时间倒序排列
  • actual_money = money - fee
  • collect_info 为 HTML 格式,包含换行标签 <br>
  • 待审核订单的 complete_at 为 0
  • 已通过的订单会有 complete_at 时间和 trade_no

收款设置接口 ​

7. 获取收款设置 ​

接口地址:/home/money/getCollect

请求参数:无

  • 变更:新增 u_coin_rate U 汇率 2026-2-5 新增

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "cash_type": 3,
    "cashTypesOptions": [
      {
        "value": 1,
        "label": "支付宝"
      },
      {
        "value": 2,
        "label": "微信"
      },
      {
        "value": 3,
        "label": "银行卡"
      },
      {
        "value": 4,
        "label": "USDT"
      }
    ],
    "info": {
      "id": 1,
      "user_id": 1008,
      "type": 1,
      "info": {
        "account": "123",
        "realname": "123",
        "idcard_number": "123"
      },
      "create_at": "2025-11-06 15:28:03",
      "collect_img": "",
      "status": 1
    },
    "u_coin_rate": 7.2
  }
}

未设置收款信息时的响应:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "cash_type": 0,
    "cashTypesOptions": [
      {
        "value": 1,
        "label": "支付宝"
      },
      {
        "value": 2,
        "label": "微信"
      },
      {
        "value": 3,
        "label": "银行卡"
      },
      {
        "value": 4,
        "label": "USDT"
      }
    ],
    "info": null,
    "u_coin_rate": 7.2
  }
}

字段说明:

根级别字段:

  • cash_type:用户当前设置的收款方式(0-未设置)
  • cashTypesOptions:系统支持的收款方式列表
  • info:收款信息详情(未设置时为 null)
  • u_coin_rate:U 汇率

cashTypesOptions(收款方式选项):

  • value:收款方式类型值
  • label:收款方式名称

info(收款信息详情):

  • id:收款信息 ID
  • user_id:用户 ID
  • type:收款方式类型(1-支付宝,2-微信,3-银行卡,4-USDT)
  • info:具体收款信息对象
    • account:收款账号
    • realname:真实姓名
    • idcard_number:身份证号
    • bank_name:银行名称(type=3 时)
    • bank_branch:开户支行(type=3 时)
  • create_at:创建时间
  • collect_img:收款二维码图片 URL
  • status:审核状态
    • 0:待审核
    • 1:已通过
    • 2:已拒绝

说明:

  • cashTypesOptions 列表根据系统配置动态生成,只显示系统启用的收款方式
  • 用户首次访问时 info 为 null,需要先设置收款信息
  • 用户端只要已保存有效收款地址即可提现;status 字段不再阻止用户端发起提现
  • 不同的收款方式(type)需要填写不同的字段
  • 银行卡方式需要额外填写 bank_name 和 bank_branch

8. 保存收款设置 ​

接口地址:/home/money/setCollect

请求参数:

参数名类型必填说明
typeInteger是收款方式类型:1-支付宝,2-微信,3-银行卡,4-USDT
accountString是收款账号(支付宝账号/微信账号/银行卡号/USDT 地址)
realnameString否收款人真实姓名(type=4 时不必填)
idcard_numberString否身份证号(type=4 时不必填)
bank_nameString否开户银行名称(仅 type=3 时必填)
bank_branchString否开户支行地址(仅 type=3 时必填)
collect_imgString否收款二维码图片 URL(type=3 时不需要)
cash_pwdString是二级密码(首次保存和修改收款信息时均必填)

请求示例:

示例 1:支付宝收款方式(type=1):

json
{
  "type": 1,
  "account": "13800138000",
  "realname": "张三",
  "idcard_number": "110101199001011234",
  "collect_img": "http://example.com/qrcode.png",
  "cash_pwd": "123456"
}

示例 2:微信收款方式(type=2):

json
{
  "type": 2,
  "account": "wxid_abc123",
  "realname": "张三",
  "idcard_number": "110101199001011234",
  "collect_img": "http://example.com/qrcode.png",
  "cash_pwd": "123456"
}

示例 3:银行卡收款方式(type=3):

json
{
  "type": 3,
  "account": "6222021234567890123",
  "realname": "张三",
  "idcard_number": "110101199001011234",
  "bank_name": "中国工商银行",
  "bank_branch": "北京市朝阳区支行",
  "cash_pwd": "123456"
}

示例 4:USDT 收款方式(type=4):

json
{
  "type": 4,
  "account": "TRC20地址",
  "collect_img": "http://example.com/qrcode.png",
  "cash_pwd": "123456"
}

成功响应示例:

json
{
  "code": 1,
  "msg": "保存成功",
  "data": null
}

错误响应示例:

1. 未设置二级密码:

json
{
  "code": 0,
  "msg": "您还未设置二级密码,无法设置收款信息"
}

2. 二级密码错误:

json
{
  "code": 0,
  "msg": "二级密码错误"
}

3. 资料填写不完整:

json
{
  "code": 0,
  "msg": "资料填写不完整或存在非法字符!"
}

4. 保存失败:

json
{
  "code": 0,
  "msg": "保存失败,请重试!"
}

字段说明:

  • type:收款方式类型,决定需要填写哪些字段
  • account:根据不同的收款方式,填写对应的账号信息
  • realname:真实姓名,type=4(USDT)时可不填
  • idcard_number:身份证号,type=4(USDT)时可不填
  • bank_name:银行名称,仅在 type=3(银行卡)时必填
  • bank_branch:开户支行,仅在 type=3(银行卡)时必填
  • collect_img:收款二维码图片,type=3(银行卡)时不需要
  • cash_pwd:二级密码,首次保存和修改收款信息时都必须验证

说明:

  • 首次保存和修改已有收款信息时都必须验证二级密码
  • 不同的收款方式需要填写不同的字段:
    • 支付宝/微信(type=1/2):需要 account、realname、idcard_number、collect_img
    • 银行卡(type=3):需要 account、realname、idcard_number、bank_name、bank_branch
    • USDT(type=4):只需要 account、collect_img
  • 除 idcard_number 外,其他必填字段不能为空
  • 收款信息保存后需要等待平台审核,审核通过后才能用于提现
  • 收款信息修改后会重新进入待审核状态

资金流水接口 ​

9. 资金流水列表 ​

接口地址:/home/moneyLog/list

请求参数:

参数名类型必填说明
typestr是log, purchase,refund,recharge,withdraw (2026-2-6新增)
pageInteger否页码,默认 1
limitInteger否每页数量,默认 10

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "list": [
      {
        "id": 1,
        "business_type": 1,
        "business_type_text": "充值",
        "amount": "100.00",
        "balance": "200.00",
        "remark": "支付宝充值",
        "create_at": "2024-01-01 12:00:00"
      }
    ],
    "total": 100
  }
}

字段说明:

log 的结果包含 purchase、refund    使用模型 UserMoneyLogModel

recharge 使用模型 UserRechargeOrderModel
withdraw 使用模型 CashModel

所以这三种的 返回的data结构不同
  • business_type:业务类型
  • amount:变动金额(正数为收入,负数为支出)
  • balance:变动后余额

10. 获取业务类型字典 ​

接口地址:/home/moneyLog/businessTypeDict

  • 暂无用途

响应示例:

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "1": "充值",
    "2": "提现",
    "3": "购买商品",
    "4": "退款",
    "5": "佣金收入"
  }
}

注意事项 ​

  1. 所有钱包相关接口都需要用户登录认证
  2. 提现前必须设置收款方式;二级密码只在保存或修改收款信息时验证
  3. 充值和提现都有金额限制,需在允许范围内
  4. 资金流水列表受用户设置的数据时效性限制
  5. 提现会收取一定比例的手续费

固定 USDT 手续费配置 ​

后台结算配置的手动和自动提现均支持:1 固定人民币、2 固定 USDT、100 百分比。 cash_fee_unit 和 auto_cash_fee_unit 分别返回 CNY、USDT 或 %,自动模式另返回 auto_cash_fee_type。 u_coin_rate 表示 1 USDT 对应的人民币金额。固定 USDT 值直接返回数字,不带百分号。 例如配置 3 USDT、申请时汇率 7.2,人民币手续费为 21.600;提现 100 元预计到账 (100 - 21.600) / 7.2 = 10.89 USDT。 提现记录的 fee、actual_money 继续保存人民币金额;不改变已有记录或已有固定人民币配置。 手续费必须非负;百分比最多 100,固定值最多 5000。汇率无效时拒绝固定 USDT 提现;扣费后金额必须大于 0。 定额提现沿用手动手续费配置,每日自动提现使用自动手续费配置。