支付

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 参数错误