钱包(旧版本)

优质
小牛编辑
132浏览
2023-12-01

和用户余额相关的信息,余额单位都是按照 CNY 的「分」作为单位。

接口不给现实数字,而是给出以 CNY 的「分」单位的数字,并在「启动者」中提供了显示转换比例,单位为百分比(%)

钱包信息

钱包信息提供进入钱包页面所需的附加信息记录接口。

在未来开发中,一些信息可能会被移动到「启动者」中。

GET /wallet

响应

Status: 200 OK
{
  "labels":[ // 充值选项。
    550,
    2000,
    9900
  ],
  "ratio":200, // 转换比例(在启动者中也有提供哟)
  "rule":"我是积分规则纯文本.", // 充值提现规则。(以后需求中,可能是 markdown 目前是多行文本)
  // 可选提现的「提现方式」,按照现在系统预设,只有 alipay 和 wechat
  // type: array|null 如果 alipay 和 wechat 都不存在,则代表关闭提现功能
  "cash": [
    "alipay"
  ],
  "case_min_amount": 1, // 真实金额分单位,用户最低提现金额。
  "recharge_type": [ // 对于移动端而言,alipay wx 不存在则表示关闭了充值功能,单个不存在则表示关闭单个充值选项,iOS多一个 apple pay 选项,其他端,例如 h5 或者 pc 参考平台后缀。例如没有 alipay_wap 表示关闭 h5 的支付宝。
    "alipay",
    "alipay_wap",
    "wx",
    "wx_wap",
    "applepay_upacp"
  ]
}

钱包余额充值

接口使用统一的接口对接所有的充值,对接第三发平台为 Ping++,请先阅读 Ping++ 官方文档。

POST /wallet/recharge

输入

字段必须类型描述
typestring充值方式 (见「启动信息接口」或者「钱包信息」)
amountint用户充值金额,单位为真实货币「分」单位
extraobject,array拓展信息字段,见 支付渠道-extra-参数说明
{
  "type": "alipay_wap",
  "amount": 100, // 表示 1.00
  "extra": {
    "success_url": "https://plus.io/web/recharge" // 这个字段只是示例,这是 支付宝 wap 支付独有参数。
  }
}

响应

Status: 201 Created
{
  "id": 8, // ThinkSNS+ 系统凭据 ID
  "charge": { // Ping++ 凭据
  "id": "ch_08anD0a9yjPCLyvbTODqXrnT",
  "object": "charge",
  "created": 1496819712,
  "livemode": false,
  "paid": false,
  "refunded": false,
  "app": "app_5anXP4ezfXvL8m5e",
  "channel": "applepay_upacp",
  "order_no": "a0000000000000000008",
  "client_ip": "127.0.0.1",
  "amount": 500,
  "amount_settle": 500,
  "currency": "cny",
  "subject": "余额充值",
  "body": "账户余额充值",
  "extra": {},
  "time_paid": null,
  "time_expire": 1496906112,
  "time_settle": null,
  "transaction_no": null,
  "refunds": {
    "object": "list",
    "url": "/v1/charges/ch_08anD0a9yjPCLyvbTODqXrnT/refunds",
    "has_more": false,
    "data": []
  },
  "amount_refunded": 0,
  "failure_code": null,
  "failure_msg": null,
  "metadata": {},
  "credential": {
    "object": "credential",
    "applepay_upacp": {
    "tn": "201706071515122891443",
    "mode": "00",
    "merchant_id": "Your app merchant id"
    }
  },
  "description": null
  }
}

Type 场景

name描述
applepay_upacpApple Pay (仅对 iOS 有效)
alipayApp 发起支付宝支付选项
alipay_wap手机网页发起支付宝支付
alipay_pc_directPC 网页发起支付宝支付
alipay_qr支付宝扫码支付,前度生成二维码
wxApp 发起微信支付
wx_wap手机网页发起微信支付

凭据获取

凭据获取用于获取用户订单凭据详细信息,其中还包含凭据取回。

GET /wallet/charges/:charge

:charge 为创建订单或者列表给出的凭据 ID

响应

Status: 200 OK
{
  "id": 1, // 凭据ID
  "user_id": 1, // 凭据对应用户(不一定有,该凭据对应的用户,客户端几乎用不到的。)
  "channel": "alipay", // 支付频道
  "account": "alipay_account", // 账户,如果是系统内购买,例如购买一张图片,会和频道对应,然后给出不同的值,例如支付宝给出的是支付宝账号。微信给出的是 open_id、银联给出的是银行卡号。channel 还有我们系统内置类型,例如 user 可能对应的就是用户ID(例如转账)
  "charge_id": "ch_vvP4u1H0evPGqn9qn5mPCGS4", // Ping++ 凭据ID
  "action": 1, // 动作, 1 增加、2 减少
  "amount": 100, //  操作金额(真实货币分单位)
  "currency": "cny", // 操作货币单位,目前只有 cny 
  "subject": "余额充值", // 订单标题
  "body": "账户余额充值", // 订单描述
  "transaction_no": "2017060879918233", // 第三发平台凭据ID 例如支付宝订单号
  "status": 1, // 状态,0 - 未支付(等待)、1 - 成功、2 - 失败
  "created_at": "2017-06-07 06:32:28", // 订餐创建时间
  "updated_at": "2017-06-08 06:46:23", // 订单更新时间
  "deleted_at": null
}

凭据取回

凭据取回,可以理解成第三发验证获取,服务器会调用第三发接口取回凭据状态,重置凭据状态,并充值用户余额。

GET /wallet/charges/:charge?mode=retrieve

响应数据和「凭据获取」相同

该模式只会生效一次,之后传递则不会生效,参数不要乱传,如果非支付订单传递该参数,则会抛出 422 验证异常。

凭据列表

GET /wallet/charges

参数

名称类型描述
limit整数获取的数据条数。
after整数上一次获取最后一条的id,获取该id之后的数据。
action整数筛选条件 0-支出 1-收入

响应

Status: 200 OK
[
  {...} // 单条内容参考 「凭据获取」数据
]

提现申请

POST /wallet/cashes

Input

名称类型描述
valueint用户需要提现的余额数量
typestring用户提现账户方式
accountstring用户提现账户
{
  "value": 100,
  "type": "alipay"
  "account": "xxx@alipay.com"
}

value 的值是用户输入的余额值按照「转换比例」转换后再转化为「分」单位 分的转换值为 100,按照比例转换单位后乘100以保证没有小数出现

Headers
Status: 201 Created
Body
{
  "value": [
  "请输入提现金额", // 用户没用输入
  "发送的数据错误", // 发送错误的数据给服务器(非正整数)
  "输入的提现金额不合法", // 发送给服务器小于 1
  "提现金额超出账户余额", // 用户提现金额超出余额
  ],
  "type": [
  "请选择提现方式", // 没有发送提现方式
  "你选择的提现方式不支持" // 提现的方式后台设置不允许提现
  ],
  "account": [
  "请输入你的提现账户" // 没有输入账户
  ],
  "message": [
  "申请提现成功", // 成功
  "申请失败" // 失败
  ]
}

提现申请列表

GET /wallet/cashes

limit=20&after=3 limit 可以设置获取数量 after 获取更多数据,上一次获取列表的最后一条 ID

Headers

Status: 200 OK

Body

[
  {
  "id": 4, // 提现记录ID
  "value": 10, // 提现金额
  "type": "alipay", // 提现方式
  "account": "xxx@alipay.com", // 提现账户
  "status": 0, // 提现状态, 0 - 待审批,1 - 已审批,2 - 被拒绝
  "remark": null, // 备注,审批或者拒绝的时候由管理填写
  "created_at": "2017-06-01 09:30:22" // 申请时间
  },
  {
  "id": 3,
  "value": 10,
  "type": "wechat",
  "account": "xxxx",
  "status": 0,
  "remark": null,
  "created_at": "2017-06-01 09:29:09"
  }
]