bl.requestRecharge(Object object)
注意,使用支付能力前,必须先开通支付权限: 申请地址
仅 Android 端基础库 2.3.0 开始支持,低版本需做兼容处理
iOS 暂不支持
发起充值请求,需要服务端与支付对接,参数请从创建订单接口获取,详情请参考支付文档说明。
参数
Object object
属性 | 说明 | 必填 | 类型 |
---|---|---|---|
customerId | 请求业务方 id | 是 | string |
sign | 否 | string | |
merchantCode | 平台类型 | 是 | string |
coinType | 虚拟币类型 | 是 | string |
customerUserType | 账号类型 0:B 站账号,1:B 站小游戏账号 默认 0 | 是 | number |
customerUserId | 账号类型对应的 id | 是 | string |
platformType | 平台类型 1. iOS 端 2. Android 端 3.PC 4.H5 | 是 | string |
transAmount | 需要充值的数量,充值的数量所对应金额必须是要支持的 | 是 | string |
customerSeq | 业务方请求单号,如果不为空,请保持全局唯一(不可与消费单号、赠送单号等重复)注:资产项目会判断 orderId+customerId 是否已存在,如果已存在,则使用已存在记录充值 | 是 | string |
notifyUrl | 充值成功通知 url,为空则不通知如果不为空,customerSeq 必须不为空 | 否 | string |
smallGameName | app 名称,如小游戏名称 | 是 | string |
orientation | NA 收银台方向, 0:竖屏, 1:横屏, 2:自适应; 不传默认竖屏 | 否 | number |
success | 接口调用成功的回调函数 | 否 | function |
fail | 接口调用失败的回调函数 | 否 | function |
complete | 接口调用结束的回调函数(调用成功、失败都会执行) | 否 | function |
回调参数
object.success 回调函数
参数
Object res
属性 | 类型 | 值 |
---|---|---|
code | number | 0 |
msg | string | 成功 |
object.fail 回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
code | number | 错误码 |
msg | string | 错误信息 |
code码对应的msg
code | msg |
---|---|
1 | 正在支付当中, 还没有结束, 同时发起了另外一个支付流程 |
2 | 参数错误 |
3 | 用户取消 |
4 | 网络错误 |
5 | 第三方渠道调起失败 |
6 | 支付结果未知 |
9 | 支付宝签约失败 |
10 | 支付宝签约成功但扣款状态未知 |
12 | 获取资产充值参数失败 |
99 | 支付渠道发生的其他错误 |
100 | 内部发生其它错误 |
-15009 | 由于健康系统限制,本次支付已超过限额(这种错误情况会有默认弹窗提示) |
接口使用说明
步骤一:用户登录
通过 bl.login 获取code,传给服务端接口(参考 bl.login 以及 code2Session )
步骤二:创建订单
步骤三:调起支付
前端调用本接口唤起支付控件,具体方法可以参考以下示例代码 示例代码
// 第一步:请联系运营确保当前 小游戏对应的 AppID 已经开通支付能力
// 第二步:小游戏登录获取 code
bl.login({
success ({ code }) {
// 第三步请求业务服务端 生成订单
// 1. 服务端请求获取 openid,根据移动端请求提供的 code 作为 js_code 参数请求 code2session 接口, 参考文档: http://miniapp.bilibili.com/small-game-doc/open/login/#code2session
// 2. 服务端完成参数签名并调用下单接口,参考支付指南文档接口 http://miniapp.bilibili.com/small-game-doc/open/recharge/Recharge/,需注意不参与签名的参数
bl.request({
url: 'https://xxx.com/', // 各业务服务端接口
method: '',
header: {},
data: {
code // 需携带 code 参数供后端服务使用
},
success (res) {
// 下单成功
// 第四步:前端调起支付
bl.requestRecharge({
customerId: res.customer_id,
merchantCode: res.merchant_code,
coinType: res.coin_type,
customerUserType: res.customer_user_type,
customerUserId: res.customer_user_id,
platformType: res.platform_type,
transAmount: res.trans_amount,
customerSeq: res.customer_seq,
smallGameName: res.small_game_name,
orientation: 2,
sign: res.sign,
success (res) {
console.log(res.code, res.msg); // 成功情况 code 是 0
},
fail (e) {
console.error(e.code, e.msg);
}
})
},
fail(res) {
// 业务后端接口访问失败
}
})
}
})