操作流程:
- 申请充电二维码及扫码秘钥,秘钥临时保存备用
- 使用
qr_code_url
中的值生成二维码 - 用支付宝或微信扫描
- 以扫码秘钥作为参数轮询检查扫码支付结果
https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/qr_code/create
请求方式:POST
认证方式:Cookie(SESSDATA)
秘钥有效时间为10分钟
正文参数( application/x-www-form-urlencoded ):
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
bp_num | num | 充电B币数量 | 必要 | 必须在2-9999之间 |
up_mid | num | 充电对象用户mid | 必要 | |
is_bp_remains_prior | bool | 是否优先扣除B币 | 必要 | true:是 false:否 在B币不足时剩余的部分利用支付平台支付 |
otype | str | 充电来源 | 必要 | up:空间充电 archive:视频充电 |
oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户mid 视频充电:稿件avid |
csrf | str | CSRF Token(位于cookie) | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 -111:csrf校验失败 -400:请求错误 -500:服务器错误 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
qr_code_url | str | 支付二维码生成内容 | 存在转义 |
qr_token | str | 扫码秘钥 | |
exp | num | 获得经验数 |
示例:
申请空间的方式向用户23215368充电10电池且不使用B币的支付二维码
curl 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/create' \
--data-urlencode 'elec_num=10' \
--data-urlencode 'up_mid=23215368' \
--data-urlencode 'is_bp_remains_prior=false' \
--data-urlencode 'otype=up' \
--data-urlencode 'oid=23215368' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"qr_code_url": "https://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/gateway?mid=293793435&token=c1cb1d95d2194ba58df6bb0f24ae1aaa",
"qr_token": "c1cb1d95d2194ba58df6bb0f24ae1aaa",
"exp": 1
}
}
https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status
请求方式:GET
认证方式:Cookie(SESSDATA)
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
qr_token | str | 扫码秘钥 | 必要 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -101:账号未登录 |
message | str | 错误信息 | 默认为0 |
ttl | num | 1 | |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
qr_token | str | 扫码秘钥 | |
order_no | str | 留言token | 未成功则无此项 用于添加充电留言 |
mid | num | 当前用户mid | |
status | num | 状态值 | 若秘钥错误则无此项 1:已支付 2:未扫描 3:未确认 |
示例:
当申请到的支付二维码未被扫描时,data
.ststus
的值为2
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"c7cbdc47fc424cd18f2146db653597b8",
"mid":293793435,
"status":2
}
}
当申请到的支付二维码已扫描但未确认时,data
.ststus
的值为3
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"c7cbdc47fc424cd18f2146db653597b8",
"mid":293793435,
"status":3
}
}
成功支付后,data
.ststus
的值为1
,且data
.order_no
存在留言token
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
查看响应示例:
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"bd649c836c524550bfe22a369334fc05",
"order_no":"BPTD36U3KP82I31RSSLG",
"mid":293793435,
"status":1
}
}