支付
QQ 浏览器小游戏支付流程如下图
发起米大师支付
wx.requestMidasPayment({
buyQuantity: 10,
success() {
// 支付成功
},
fail({ errMsg, errCode }) {
// 支付失败
console.log(errMsg, errCode)
}
})
消费 Q 米购买道具
小游戏可以通过本接口扣除某个用户的账户的二级货币 Q 米,来购买游戏道具。 由于可能存在接口调用超时或返回系统失败,但是游戏币实际已经扣除的情况,所以当该接口返回系统失败时,可以用相同的 bill_no 再次调用本接口,直到返回非系统失败为止,不会重复扣款,也可以调用取消支付接口取消本次扣款。
请求地址
// 正式环境
POST https://api.qbgame.qq.com/midas/pay?access_token=<ACCESS_TOKEN>
// 沙箱环境
POST https://sandbox.api.qbgame.qq.com/midas/pay?access_token=<ACCESS_TOKEN>
// POST 请求数据格式
{
"openid":"oBblPqBj2XVgBVCMByTUK6H-5ScbWtlgIOoQ2aq-0ZMP9xazGcvWvA",
"appid":"7135819849",
"ts":1507530737,
"pf":"ADR",
"user_ip":"10.0.0.0",
"access_token":"ckMpMzAjenv9X0yWnC3ZmcBTZUw9Ec4SI5kBkp/KQKSJTwH9HmbBKswpmQIGKFUC",
"amt":10,
"pay_item": "item1",
"app_remark": "remark1",
"bill_no":"1811157135819849aaaaaaaaaaaadb",
"mp_sig":"jzq6VJ7swWKyLdUGgliAqkqQV7VJgDuFF0kGK4EVrIc="
}
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
openid | string | 是 | 用户唯一标识符,即 qbopenid |
|
appid | string | 是 | 小游戏 ID | |
ts | number | 是 | UNIX 时间戳,单位是秒 | |
pf | string | 是 | 平台,"ADR" (Android)或 "IOS" |
|
user_ip | string | 是 | 用户外网 IP | |
amt | number | 是 | 扣除金额,必须大于 0,单位是 Q 分,取值范围为 1~300000 | |
bill_no | string | 是 | 订单号,需要保证全局唯一,相同的订单号不会重复扣款 | |
pay_item | string | 是 | 道具名称 | |
app_remark | string | 是 | 备注,会写到账户流水 | |
access_token | string | 是 | 接口调用凭证 | |
mp_sig | string | 是 | 以上所有参数(含可选最多13个)+uri+session_key,用 HMAC-SHA256 签名,详见 加密签名 |
返回值
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
bill_no | string | 订单号,有效期是 48 小时 |
balance | number | 预扣后的账户余额,单位 Q 分 |
used_gen_amt | number | 本次扣的赠送币的代金券的金额(暂不支持,该字段暂不返回) |
errcode
合法值
值 | 说明 |
---|---|
0 | 请求成功 |
-1 | 系统繁忙,此时请开发者稍候再试 |
90009 | mp_sig 签名错误 |
90010 | 用户未登录或登录态已过期 |
90011 | sig 签名错误 |
90012 | 订单已存在 |
90013 | 余额不足 |
90017 | 没有调用接口的权限 |
90018 | 参数错误 |
人民币 1 元 = 10 Q 米 = 100 Q 分
订单号长度为 30 字符,只能是数字与大小写字母的组合,生成格式必须如下:
年月日(6个字符) + appid(10个字符) + 14字符的随机串(开发者后台生成)
;示例:1811047334627767aaaaaaaaaaaaaa
,其中181104为年月日,7334627767为小游戏appid,aaaaaaaaaaaaaa为业务生成唯一串
后台会校验
session_key
是否过期
查询 Q 米余额
可以通过本接口查看某个用户的 Q 米余额
请求地址
// 正式环境
POST https://api.qbgame.qq.com/midas/getbalance?access_token=<ACCESS_TOKEN>
// 沙箱环境
POST https://sandbox.api.qbgame.qq.com/midas/getbalance?access_token=<ACCESS_TOKEN>
// POST 请求数据格式
{
"openid":"oBblPqBj2XVgBVCMByTUK6H-5ScbWtlgIOoQ2aq-0ZMP9xazGcvWvA",
"appid":"7135819849",
"ts":1507530737,
"pf":"ADR",
"user_ip":"10.10.10.10",
"mp_sig":"VHehfJzwwIqgTYRauISBUS1bvwukNMs/yZmAguNiOVg=",
"access_token":"ckMpMzAjenv9X0yWnC3ZmcBTZUw9Ec4SI5kBkp/KQKSJTwH9HmbBKswpmQIGKFUC"
}
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
openid | string | 是 | 用户唯一标识符,即 qbopenid |
|
appid | string | 是 | 小游戏 ID | |
ts | number | 是 | UNIX 时间戳,单位是秒 | |
pf | string | 是 | 平台,"ADR" (Android)或 "IOS" |
|
user_ip | string | 是 | 用户外网 IP | |
access_token | string | 是 | 接口调用凭证 | |
mp_sig | string | 是 | 以上所有参数(含可选最多13个)+uri+session_key,用 HMAC-SHA256 签名,详见 加密签名 |
返回值
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
balance | number | 账户余额,单位 Q 分 |
gen_balance | number | 代金券数量(暂不支持,该字段暂不返回) |
errcode
合法值
值 | 说明 |
---|---|
0 | 请求成功 |
-1 | 系统繁忙,此时请开发者稍候再试 |
90009 | mp_sig 签名错误 |
90010 | 用户未登录或登录态已过期 |
90017 | 没有调用接口的权限 |
90018 | 参数错误 |