deposit_channel_api (2).md
旧文件/deposit_channel_api (2).md · 8.7 KB · 2026-09-22 15:07:00
原始文件 下载

充值渠道(Deposit Channel)接入文档

一、说明

充值渠道用于配置用户充值时可选的支付渠道。每个「提供商 + 支付方式」组合是一条独立渠道,例如 jaya 的 QRIS、jaya 的 BRI 算两条;有些渠道(如 futurepay)在渠道商侧选择方式,不需要额外参数。

单表 deposit_channels,每行包含:内部名、显示名、提供商(pay_type)、创建参数(params,如 {"method":"QRIS"})、单笔 min/max 限额、排序、启停。

接入方分两类:

前端使用流程

  1. POST /v1/order/deposit/channel/list,传 {"coins": 购买的硬币数}
  2. 拿到可用渠道列表(已按金额过滤、sort 降序)。每条渠道含 pay_type + display_name + params
  3. 用户选定某渠道后,pay_type 映射到对应的下单接口,并把 params 里的参数转发过去:
pay_type 下单接口 需转发的 params
PAY_TYPE_JAYA (15) POST /v1/order/jaya/create method(QRIS / BRI)
PAY_TYPE_UNISPAY (17) POST /v1/order/unispay/create pay_type(6212 扫码 / 6211 钱包 / 6210 网银,6210 另需 bank
PAY_TYPE_FUTUREPAY (14) POST /v1/order/futurepay/create 无(params 为空,渠道商侧选择)
PAY_TYPE_HAIPAY (13) POST /v1/order/haipay/create
PAY_TYPE_MONETA_PAY (6) POST /v1/order/monetapay/create 视配置
PAY_TYPE_STRIPE (4) POST /v1/order/stripe/payment/create 视配置

渠道列表接口与下单是分离的:列表只负责「告诉前端有哪些渠道、用哪个接口、带什么参数」,实际下单仍走各自原有的 create 接口。

通用约定

金额换算(用户端筛选逻辑)

后端取汇率参数 WealthParameter,按下式把硬币数换算成 IDR 再与渠道 min/max 比较:

idr = floor( coins × RateCoinsToUs × RateUsToInd )

只返回 is_disabled=falseidr 落在 [min_amount, max_amount](0=不限)内的渠道,按 sort 降序(越大越靠前)。

鉴权头

接入方 路径前缀 鉴权
用户端 /v1/order/... Authorization: <token> + App 签名头 X-Meta-Sign / X-Meta-Device-Id / X-Meta-Timestamp(与其他用户接口一致)
管理后台 /v1/man/... Authorization: <admin token>(需管理员账号,无需 App 签名)

二、用户端接口

1. 列出可用充值渠道

请求:

字段 类型 必填 说明
coins int64 要购买的硬币数,>0。后端换算成 IDR 再过滤

响应 data

{
  "channels": [
    {
      "pay_type": "PAY_TYPE_JAYA",
      "display_name": "QRIS",
      "params": { "method": "QRIS" },
      "min_amount": 0,
      "max_amount": 5000000
    },
    {
      "pay_type": "PAY_TYPE_UNISPAY",
      "display_name": "E-Wallet",
      "params": { "pay_type": "6211" },
      "min_amount": 0,
      "max_amount": 0
    }
  ]
}

字段说明(DepositChannelOption):

字段 类型 说明
pay_type enum 提供商 / 路由,前端据此选下单接口(见上方映射表)
display_name string 展示给用户的渠道名
params map\<string,string> 转发给下单接口的参数(method / pay_type / bank…),空为 {}
min_amount int64 单笔最小 IDR,0=不限(仅供展示,后端已过滤)
max_amount int64 单笔最大 IDR,0=不限(仅供展示,后端已过滤)

内部名 nameis_disabled、时间戳等不下发给用户端。


三、管理后台接口

1. 列表 — POST /v1/man/deposit/channel/list

字段 类型 必填 说明
offset int32 >=0
limit int32 0~200;不传 / 0 默认 50
name string 按内部名 / 显示名模糊过滤
pay_type enum 按提供商过滤;不传 / PAY_TYPE_UNKNOWN 不过滤

响应 data { "total": 5, "channels": [ <DepositChannel>, ... ] },按 sort 降序、再 id 升序。

2. 新增 — POST /v1/man/deposit/channel/create

字段 类型 必填 说明
name string 内部名,非空
display_name string 显示名,非空
pay_type enum 提供商,须为可下单提供商之一(见下方白名单),否则报参数错误
params map\<string,string> 创建参数,如 {"method":"QRIS"};不传存为 {}
min_amount int64 >=0,0=不限
max_amount int64 >=0,0=不限
sort int32 排序,越大越靠前
is_disabled bool 是否禁用

响应 data{}

pay_type 白名单(仅这些有对应下单接口,其余拒绝):PAY_TYPE_JAYAPAY_TYPE_UNISPAYPAY_TYPE_FUTUREPAYPAY_TYPE_HAIPAYPAY_TYPE_MONETA_PAYPAY_TYPE_STRIPE

3. 更新 — POST /v1/man/deposit/channel/update

字段同 create,额外必填 id(int64,>0)。整体覆盖各字段(含 params,传空则覆盖为 {})。id 不存在返回未找到错误。响应 data{}

4. 删除 — POST /v1/man/deposit/channel/delete

字段 类型 必填 说明
id int64 渠道 id,>0

物理删除。响应 data{}


四、模型字段说明

DepositChannel(后台列表/详情返回)

字段 类型 说明
id int64 主键
name string 内部名(运营识别用,不唯一约束)
display_name string 前端显示名
pay_type enum 提供商 / 路由,见下方枚举
params map\<string,string> 创建参数,如 {"method":"QRIS"} / {"pay_type":"6212"},空为 {}
min_amount int64 单笔最小 IDR,0=不限
max_amount int64 单笔最大 IDR,0=不限
sort int32 排序,越大越靠前(列表与下发均按此降序)
is_disabled bool 是否禁用(用户端只看到启用的)
created_at int64 创建时间(Unix 秒)
updated_at int64 更新时间(Unix 秒)

pay_type 枚举(复用 Order.PayType,仅充值相关)

提供商 params 约定
PAY_TYPE_STRIPE 4 Stripe 视配置
PAY_TYPE_MONETA_PAY 6 MonetaPay 视配置
PAY_TYPE_HAIPAY 13 HaiPay
PAY_TYPE_FUTUREPAY 14 FuturePay 无(渠道商侧选择)
PAY_TYPE_JAYA 15 JayaPay methodQRIS / BRI
PAY_TYPE_UNISPAY 17 UnisPay pay_type6212 扫码 / 6211 钱包 / 6210 网银(网银另需 bank

PAY_TYPE_UNKNOWN(0) 仅用于后台列表「不按提供商过滤」,不可用于新增 / 更新。


五、初始化数据

迁移在空表时写入以下 5 条(min/max 均为 0=不限,is_disabled=false):

name display_name pay_type params sort
jaya-qris QRIS PAY_TYPE_JAYA {"method":"QRIS"} 100
jaya-bri BRI PAY_TYPE_JAYA {"method":"BRI"} 90
unispay-qris QRIS PAY_TYPE_UNISPAY {"pay_type":"6212"} 80
unispay-wallet E-Wallet PAY_TYPE_UNISPAY {"pay_type":"6211"} 70
futurepay FuturePay PAY_TYPE_FUTUREPAY {} 60

六、接口一览

接入方 方法 路径 作用
用户端 POST /v1/order/deposit/channel/list 按硬币数列出可用充值渠道
后台 POST /v1/man/deposit/channel/list 渠道列表
后台 POST /v1/man/deposit/channel/create 新增渠道
后台 POST /v1/man/deposit/channel/update 更新渠道
后台 POST /v1/man/deposit/channel/delete 删除渠道