Balance 服务
redeem_code 兑换
如何让 admin 创建一次性 redeem_code,并让用户输入 code 后直接给余额充值。
redeem_code 适合这种场景:
- 活动赠送 credits
- 人工补偿余额
- 发放一次性礼品码
它和 topup 的区别很简单:
topup是“先创建充值单,后确认到账”redeem_code是“用户输入 code 后,校验通过就立刻到账”
管理侧创建 redeem_code
const issued = await admin.balance.redeemCodes.create({
amount: 500,
note: "launch gift",
});返回结果里会包含:
redeem_code_idamountunitstatuscodecode_mask
注意:
code明文只在创建时返回一次- 后续列表接口只会返回
code_mask
用户侧兑换 redeem_code
const result = await user.service("balance").action("redeem-codes/redeem").invoke({
code: "ABCD-EFGH-JKLM-NPQR",
});兑换成功后会发生三件事:
- 把这个
redeem_code标记为redeemed - 给当前用户余额直接加款
- 写一条
redeem类型的流水
管理侧查看与停用
查看:
const items = await admin.balance.redeemCodes.list({
status: "active",
});停用:
await admin.balance.redeemCodes.disable({
redeem_code_id: issued.redeem_code_id,
note: "expired",
});停用后的 redeem_code 不能再被兑换。
什么时候选 redeem_code,什么时候选 topup
选 redeem_code:
- 你要发给用户一个可输入的礼品码
- 你不依赖支付回调
- 你希望兑换时直接到账
选 topup:
- 你要先创建订单
- 你需要等支付平台或 admin 确认
- 你要把“发起充值”和“确认到账”拆开
常用入口
POST /v1/balance/redeem-codes/redeemGET /v1/balance/redeem-codesPOST /v1/balance/redeem-codes/createPOST /v1/balance/redeem-codes/disable