QQ游戏开放平台

欢迎来到QQ游戏开放平台 登录| 管理中心 | 开发者论坛

客户端游戏支付页接入

目录

一、购买商品

端游前端根据QQ游戏大厅传递的 openid、openKey、pfKey,请求端游后台,获取米大师下单url,也就是 goodstokenurl,再请求QQGame支付页(https://qqgame.qq.com/midaspay/?param=xxx),由 QQgame 拉起米大师支付。

参数说明

param

参数名称
含义
action
必填,固定值:buy
appid
必填,应用id
goodstokenurl

必填,扣费openapi返回的url地址(如:url_params),获取方式见

open官网api说明:https://wikinew.open.qq.com/#/iwiki/940617555


sandbox

是否沙箱环境(1:是,0:否)

沙箱环境自助Q币添加Url:

cpay.qq.com/qz/go/18218


充值步骤:

1先以测试号登录open.qq.com

2打开上述url即可进行充值


openid
必填,登录态openid
openkey
必填,登录态openkey

其他帮助文档


请求业务后台接口buygoods,获取米大师下单url:

https://wiki.open.qq.com/wiki/v3/pay/buy_goods

参数样例(王国印记充值)

王国印记充值,如下:

param

```

{

  "action": "buy",

  "appid": 1109981688,

  "goodstokenurl": "/v1/r/1109981688/mobile_goods_info?token_id=32E897DBE2D202E3C3B848E1A866A49E18880&transaction_id=32E897DBE2D202E3C3B848E1A866A49E18880&out_trade_no=&new_cpay=1&offer_type=0",

 "openid": "F855D0937EA8923653A19ECD5497CFA0",

 "openkey":"2A8E06A921A923EC4E2F544DBAE6A0D9"

}

```


二、开通蓝钻

端游前端直接请求QQGame支付页(https://qqgame.qq.com/midaspay/?param=xxx),传递action和appid,由QQGame拉起开通蓝钻服务支付页面。

参数说明

param

参数名称
含义
action
必填,固定值:openVip
appid
必填,应用id
openid
必填,登录态openid
openkey
必填,登录态openkey

参数样例(王国印记开通蓝钻)

以王国印记为例,如下:

param

```

{

  "action": "openVip",

  "appid": 1109981688,

  "openid": "F855D0937EA8923653A19ECD5497CFA0",

  "openkey":"2A8E06A921A923EC4E2F544DBAE6A0D9"

}

```


三、注意事项

获取openid、openKey、pfKey方法

遵从启动客户端游戏的规则,之前命令行传递三个参数,为ID,Key,PROCPARA。现在增加PfKey的命令行参数。具体命令行参数示例如下:

ID=CE3DB00B54C009829C79B25482704A21,Key=951A3503BF3B82C0F3EA30F7807036FC,PfKey=BB999F31FF71059F404903F62DABC763,PROCPARA=ThirdGame_3_17060_15574484

param参数编码

param参数需要提前进行URL编码,注意编码之后的param,一定不能包含斜线“/”,以免浏览器解析异常。

Javascript版参考案例

param=encodeURIComponent(JSON.stringify(param))

举个例子:

param ={"action":"buy","appid":1109981688,"goodstokenurl":"/v1/r/1109981688/mobile_goods_info?token_id=32E897DBE2D202E3C3B848E1A866A49E18880&transaction_id=32E897DBE2D202E3C3B848E1A866A49E18880&out_trade_no=&new_cpay=1&offer_type=0","openid":"F855D0937EA8923653A19ECD5497CFA0","openkey":"2A8E06A921A923EC4E2F544DBAE6A0D9"}

经过 encodeURIComponent(JSON.stringify(param)) 编码之后,为

param=%7B%22action%22%3A%22buy%22%2C%22appid%22%3A1109981688%2C%22goodstokenurl%22%3A%22%2Fv1%2Fr%2F1109981688%2Fmobile_goods_info%3Ftoken_id%3D32E897DBE2D202E3C3B848E1A866A49E18880%26transaction_id%3D32E897DBE2D202E3C3B848E1A866A49E18880%26out_trade_no%3D%26new_cpay%3D1%26offer_type%3D0%22%2C%22openid%22%3A%22F855D0937EA8923653A19ECD5497CFA0%22%2C%22openkey%22%3A%222A8E06A921A923EC4E2F544DBAE6A0D9%22%7D

Python版参考案例

param=urllib.quote(json.dumps(param, ensure_ascii=False, sort_keys=True, separators=(',', ':')))

感谢地鼠传奇提供以下案例(伪协议):

param={

  "action": "buy",

  "appid": self.get_app_id(),

  "goodstokenurl": response["url_params"],

  "openid": self.get_openid(),

  "openkey":self.get_openkey()

}

if options.mode == "development":

  param["sandbox"] = 1

# 确保生成的json没有空格,否则QQ大厅前端解析时会有兼容问题

ps = json.dumps(param, ensure_ascii=False, sort_keys=True, separators=(',', ':'))

redirecturl ="https://qqgame.qq.com/midaspay/?%s" % urllib.quote(ps)

客户端游戏调用支付页方法

支付页是一个web页面,支持浏览器 chrome > 43,IE >= 8。url地址为: https://qqgame.qq.com/midaspay/?param=${参数},当游戏方有能力在游戏内打开web页面时,可以直接打开。另外,也可以使用大厅的能力打开支付页,方法如下:

使用websocket(推荐)

参考客户端游戏接入说明2021

使用大厅伪协议打开

qqgameprotocol:///openembedwebdialog Caption=${窗口标题} Width=${窗口宽度} Height=${窗口高度} New=1 Url=${支付链接}

窗口标题字符串

窗口宽度和高度:整形数字

由于米大师的支付界面大小是690*590,故游戏方在接入支付页时,推荐窗口大小设置为宽800高680

支付链接:

qqgameprotocol:///openembedwebdialog Caption=支付 Width=800 Height=680 New=1 Url=https://qqgame.qq.com/midaspay/?param=${参数}

注意:如果游戏内已经使用了IE控件加载商品页,不建议再使用伪协议打开支付页,原因是在IE控件中,页面调用伪协议可能会被拦截,导致没有响应。此拦截跟用户电脑上IE设置有关。

四、常见问题

订单不存在,请重试

goodstokenurl有15分钟的有效时间,超时使用,将会提示以下错误:

appid不能为空

原因param参数编码不正确,导致传递到浏览器时,参数值缺失,请参考【客户端游戏调用支付页方法】

支付页上的图片logo显示不出

支付页上图片logo的地址是游戏方在获取米大师下单url(https://wiki.open.qq.com/wiki/v3/pay/buy_goods)时传递的 goodsurl 参数,请确保这个图片在测试环境和外网都能访问。

使用伪协议打开支付页没有响应

如果游戏内已经使用了IE控件加载商品页,不建议再使用伪协议打开支付页,原因是在IE控件中,页面调用伪协议可能会被拦截,导致没有响应。此拦截跟用户电脑上IE设置有关。

使用伪协议打开支付购买窗口崩溃

出现这种情况,请参考《param参数编码》时的案例,注意编码之后,应能正常看到action,appid,goodstokenurl这些关键字符。导致崩溃的示例:

联系我们 向上
回到顶部