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 不需要在使用)
响应示例:
{
"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
请求参数:无
响应示例:
{
"code": 1,
"msg": "获取成功",
"data": {
"rate": 7.2
}
}2. 用户钱包充值
接口地址:/home/money/doRecharge
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| amount | float | 是 | 充值金额 |
| channelId | int | 是 | 充值通道 ID(从获取充值通道接口的 value 字段获取) |
响应示例:
{
"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 用法:
http://127.0.0.1:7979/pay/M240323034959999972?redirect_url=http%3A%2F%2F127.0.0.1%3A5173%2Fwallet%2Frecharge%2Fresult支付成功后会跳转到:
http://127.0.0.1:5173/wallet/recharge/result?trade_no=M240323034959999972&pay_status=success&status=1&msg=支付成功支付页 postMessage 消息格式:
{
"type": "usdt-trc20-pay-result",
"trade_no": "M240323034959999972",
"status": 1,
"success": true,
"msg": "支付成功",
"data": {
"status": 1
}
}前端监听示例:
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 文案推断支付类型。
{
"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 |
cashier | iframe 或新窗口打开 payment.cashier_url |
2.2 创建充值订单并返回支付指令(V2)
接口地址:/home/money/doRechargeV2
请求方式:POST
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| amount | number | 是 | 用户输入的人民币充值金额 |
| channel_id | int | 是 | getRechargeOptions 返回的渠道 ID;兼容传入 channelId |
USDT-TRC20 响应示例:
{
"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_no | string | 是 | 当前登录用户自己的充值订单号 |
响应结构与 doRechargeV2.data 相同。用于刷新页面、切回应用或网络重试;USDT 会返回已经占用的同一个精确金额,不会重新生成尾数。
该接口会校验订单所属用户,不能读取其他用户的充值支付信息。
2.4 查询充值订单支付状态
接口地址:/home/pay/orderStatus
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| trade_no | String | 是 | 充值订单号 |
待支付响应示例:
{
"code": 1,
"msg": "等待支付",
"data": {
"status": 0
}
}已支付响应示例:
{
"code": 1,
"msg": "订单已支付",
"data": {
"status": 1
}
}已关闭响应示例:
{
"code": 0,
"msg": "订单超时已关闭",
"data": {
"status": 2
}
}2.5 USDT 支付主动校验
接口地址:/home/pay/usdtVerify
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| trade_no | String | 是 | 充值订单号 |
响应示例:
{
"code": 1,
"msg": "支付成功",
"data": {
"status": 1
}
}{
"code": 0,
"msg": "链上到账确认中,系统将继续查询,请稍候",
"data": {
"status": 0
}
}说明:实际 msg 和 status 由 USDT TRC20 收款校验结果决定。支付有效期内客户端会持续校验,服务端通过两个链上数据源交叉查询;链上确认或数据源索引存在延迟时,status=0 表示继续确认,不代表转账失败。
错误响应示例:
{
"code": 0,
"msg": "充值金额必须大于0",
"data": null
}{
"code": 0,
"msg": "充值通道不存在或已关闭",
"data": null
}3. 充值订单列表
接口地址:/home/money/rechargeList
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | Integer | 否 | 订单状态:0-待支付,1-已支付,2-已关闭 |
| page | Integer | 否 | 页码,默认 1 |
| limit | Integer | 否 | 每页数量,默认 10 |
响应示例:
{
"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:充值订单 IDtrade_no:充值订单号goods_name:订单描述(格式:用户钱包充值 XX 元)create_at:创建时间pay_at:支付时间(未支付时为 null)transaction_id:第三方支付交易号(未支付时为 null)
用户信息:
user_id:用户 IDuser_type:用户类型(2-普通用户)
金额信息:
total_price:订单总价(充值金额 + 手续费)finally_money:实际到账金额(充值金额)fee:手续费
充值信息:
channel_id:充值通道 IDchannel_account_id:通道账户 IDrecharge_type:充值类型(user_money-用户余额)
订单状态:
status:订单状态- 0:待支付
- 1:已支付
- 2:已关闭
说明:
- 订单列表只显示用户设置的数据时效性范围内的订单
- 默认按创建时间倒序排列
total_price=finally_money+fee- 已支付的订单会有
pay_at和transaction_id - 订单超时未支付会自动关闭(status = 2)
4. 申请提现配置详情
接口地址:/home/money/applyConfig
请求参数:无
响应示例:
- 同 商户端 获取申请提现配置
{
"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:用户 IDuser_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)
- 固定人民币(type=1):人民币手续费 =
- 自动提现:当余额达到
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
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| money | Decimal | 是 | 提现金额 |
成功响应示例:
{
"code": 1,
"msg": "申请成功"
}错误响应示例:
1. 系统关闭提现:
{
"code": 0,
"msg": "系统配置的提现关闭提示语"
}注:实际消息内容由系统配置 cash_close_tips 决定
2. 账户被冻结:
{
"code": 0,
"msg": "无法申请提现操作,您的账户已被冻结!"
}3. 未设置收款信息:
{
"code": 0,
"msg": "您还未设置收款信息!"
}4. 不在提现时间:
{
"code": 0,
"msg": "不在允许提现时间(0:00 ~ 23:00)"
}注:时间范围根据系统配置动态生成
5. 超过提现次数:
{
"code": 0,
"msg": "系统配置的提现次数限制提示语"
}注:实际消息内容由系统配置 cash_limit_num_tips 决定
6. 提现金额错误:
{
"code": 0,
"msg": "提现金额不能小于等于0!"
}{
"code": 0,
"msg": "提现金额不能小于最低提现金额!"
}7. 余额不足:
{
"code": 0,
"msg": "您的余额不足以提现"
}说明:
- 用户端发起提现只需已设置收款地址,不再重复验证二级密码
- 提现金额需 ≥ 系统设置的最低提现金额
- 每日提现次数有限制
- 提现时间受系统配置限制
- 提现会扣除相应的手续费
- 提现申请提交后需要等待平台审核打款
- 实际到账金额 = 提现金额 - 手续费
6. 提现列表
接口地址:/home/money/cashList
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | Integer | 否 | 订单状态:0-待审核,1-已通过,2-已拒绝 |
| channel_id | Integer | 否 | 提现通道 ID |
| page | Integer | 否 | 页码,默认 1 |
| limit | Integer | 否 | 每页数量,默认 10 |
响应示例:
{
"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:提现订单 IDuser_id:用户 IDuser_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:提现通道 IDchannel_account_id:通道账户 ID
订单状态:
status:审核状态- 0:待审核
- 1:已通过
- 2:已拒绝
说明:
- 订单列表只显示用户设置的数据时效性范围内的订单
- 默认按创建时间倒序排列
actual_money=money-feecollect_info为 HTML 格式,包含换行标签<br>- 待审核订单的
complete_at为 0 - 已通过的订单会有
complete_at时间和trade_no
收款设置接口
7. 获取收款设置
接口地址:/home/money/getCollect
请求参数:无
- 变更:新增 u_coin_rate U 汇率 2026-2-5 新增
响应示例:
{
"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
}
}未设置收款信息时的响应:
{
"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:收款信息 IDuser_id:用户 IDtype:收款方式类型(1-支付宝,2-微信,3-银行卡,4-USDT)info:具体收款信息对象account:收款账号realname:真实姓名idcard_number:身份证号bank_name:银行名称(type=3 时)bank_branch:开户支行(type=3 时)
create_at:创建时间collect_img:收款二维码图片 URLstatus:审核状态- 0:待审核
- 1:已通过
- 2:已拒绝
说明:
cashTypesOptions列表根据系统配置动态生成,只显示系统启用的收款方式- 用户首次访问时
info为 null,需要先设置收款信息 - 用户端只要已保存有效收款地址即可提现;
status字段不再阻止用户端发起提现 - 不同的收款方式(type)需要填写不同的字段
- 银行卡方式需要额外填写
bank_name和bank_branch
8. 保存收款设置
接口地址:/home/money/setCollect
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | Integer | 是 | 收款方式类型:1-支付宝,2-微信,3-银行卡,4-USDT |
| account | String | 是 | 收款账号(支付宝账号/微信账号/银行卡号/USDT 地址) |
| realname | String | 否 | 收款人真实姓名(type=4 时不必填) |
| idcard_number | String | 否 | 身份证号(type=4 时不必填) |
| bank_name | String | 否 | 开户银行名称(仅 type=3 时必填) |
| bank_branch | String | 否 | 开户支行地址(仅 type=3 时必填) |
| collect_img | String | 否 | 收款二维码图片 URL(type=3 时不需要) |
| cash_pwd | String | 是 | 二级密码(首次保存和修改收款信息时均必填) |
请求示例:
示例 1:支付宝收款方式(type=1):
{
"type": 1,
"account": "13800138000",
"realname": "张三",
"idcard_number": "110101199001011234",
"collect_img": "http://example.com/qrcode.png",
"cash_pwd": "123456"
}示例 2:微信收款方式(type=2):
{
"type": 2,
"account": "wxid_abc123",
"realname": "张三",
"idcard_number": "110101199001011234",
"collect_img": "http://example.com/qrcode.png",
"cash_pwd": "123456"
}示例 3:银行卡收款方式(type=3):
{
"type": 3,
"account": "6222021234567890123",
"realname": "张三",
"idcard_number": "110101199001011234",
"bank_name": "中国工商银行",
"bank_branch": "北京市朝阳区支行",
"cash_pwd": "123456"
}示例 4:USDT 收款方式(type=4):
{
"type": 4,
"account": "TRC20地址",
"collect_img": "http://example.com/qrcode.png",
"cash_pwd": "123456"
}成功响应示例:
{
"code": 1,
"msg": "保存成功",
"data": null
}错误响应示例:
1. 未设置二级密码:
{
"code": 0,
"msg": "您还未设置二级密码,无法设置收款信息"
}2. 二级密码错误:
{
"code": 0,
"msg": "二级密码错误"
}3. 资料填写不完整:
{
"code": 0,
"msg": "资料填写不完整或存在非法字符!"
}4. 保存失败:
{
"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
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | str | 是 | log, purchase,refund,recharge,withdraw (2026-2-6新增) |
| page | Integer | 否 | 页码,默认 1 |
| limit | Integer | 否 | 每页数量,默认 10 |
响应示例:
{
"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
- 暂无用途
响应示例:
{
"code": 1,
"msg": "获取成功",
"data": {
"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。 定额提现沿用手动手续费配置,每日自动提现使用自动手续费配置。