更新日期:2024-12-05海外版PC游戏开放平台接入文档
本文档用于引导技术人员进行PC游戏接入,阅读者需具备一定web基础。
通信时SDK均采用UTF8编码,若游戏使用其他编码,在处理中文时需转为UTF8。
调用接口的凭证为openId和openKey,由SDK后台分配,需自行前往创建,功能位于”平台管理/开放平台“
对于PC游戏,SDK提供了多种集成方式,具体可见文档:PC游戏接入方式说明
本文档讲解上述第1种接入方式,即使用SDK提供的web界面基于OAuth协议进行授权认证
1.获取openId及openKey,获取方式可联系运营人员或自行通过SDK后台添加。
2.按第三章第1点“构造登录链接”接口所需要的参数构造登录URL,并传入成功后的回调URL successUrl参数。
3.游戏以webview打开构造好的登录界面,并监听UrlChange事件(这个 步骤各个开发语言略有不同,Demo是基于QT的可以参考)
4.当监听到webview的URL跳转至successUrl时,游戏应关闭webview界面,从URL中解析GET参数,获取uid、authToken、username参数
5.游戏客户端获取到uid和username后,不能直接使用,需传回游戏服务器,通过游戏服务器调用SDK验证接口验证authToken有效性,验证uid是否匹配
6.游戏服务器调用authToken验证接口通过后,方可使用该uid匹配游戏角色并进入游戏。
1.玩家在游戏内点击道具购买后,游戏应调用第三章“支付下单接口”传入商品信息等参数,此接口会返回支付链接。
2.以webview或使用默认浏览器打开该支付链接。
3.玩家支付成功后,SDK将向游戏服务器发送成功通知(支付回调地址callbackUrl)。
1.1 接口目的
构造登录链接,以便在PC平台中使用webview加载登录界面。
若游戏使用专属登陆器,可尝试从进程启动参数中获取authToken,若取到authToken,可略过此步骤,直接前往本章2接口验证authToken并免登录进入游戏。
1.2 接口地址
http://xxx.com/openapi/oauth (xxx.com为域名,请联系贵方运营获取,获取之后替换即可)
1.3 请求方式
GET
参数
类型
必要性
说明
openId
string
必传
开放平台开发者身份id,由SDK分配,可通过后台获取
productCode
string
必传
产品标识,由SDK分配,可通过后台获取
channelCode
string
选传
分包标识,可选。用于识别玩家来源
successUrl
string
必传
完成登录后的回调地址(此地址由研发自行提供)
cancelUrl
string
可选
点击关闭按钮时,将跳转至此URL,游戏可捕捉该UrlChange事件
noQrLogin
string
可选
传1时关闭扫码登录
stopClose
string
可选
传1时禁用关闭按钮
lang
string
可选
多语言,支持zh、zh-TW、en
theme
string
可选
窗口风格参数,共有模板可选web,gameLauncher,android,dark
注:登录页通常会100%铺满webview的尺寸,故游戏的webview多大,授权网页将等同其大小。
游戏可自定义webview尺寸。
作为建议,我们建议不同theme的尺寸如下:
默认模板:440x540 (theme不传值则使用默认模板)
web风格:470x475
androrid风格:470x535
gameLaucher风格:510x460
dark风格:470x510 (注意,若使用dark风格,建议将webview设为透明状态以提高显示效果)
1.5 返回字段
当玩家登录完成,SDK会跳转时传入的successUrl链接。同时附带uid、username、authToken参数。
游戏客户端应监听URLChange并关闭webview同时解析GET参数,获取这几项参数。
参数 |
类型 |
必要性 |
说明 |
uid |
string |
必有 |
玩家身份唯一标识,游戏应以此匹配玩家角色 |
username |
string |
必有 |
玩家用户名,游戏可以记录,但需以uid作为唯一标识 |
authToken |
string |
必有 |
授权令牌,游戏服务器应调用授权验证接口,验证authToken和uid是否匹配 |
2.1 接口目的
验证客户端获取的uid和authToken是否匹配,防止篡改。
2.2 接口地址
2.3 请求方式
POST
2.4 参数列表
参数 |
类型 |
必要性 |
说明 |
openId |
string |
必传 |
开放平台开发者身份id,由Quick官方SDK分配 |
productCode |
string |
必传 |
产品CODE,在Quick官方SDK后台获取 |
channelCode |
string |
选传 |
cps分包标识,选传,不传系统默认website,如果是用登录器登录的,可以通过启动参数获取 |
authToken |
string |
必传 |
登录成功回传的authToken |
sign |
string |
必传 |
签名串,算法详见第4章签名方法描述 |
2.5 返回字段
例2 {"status":true,"message":"","data":[]}
参数 |
类型 |
必要性 |
说明 |
status |
bool |
必有 |
接口验证状态,若通过验证为true,否则为false |
message |
string |
必有 |
Status为false时,message有值,为错误提示语 |
data |
array |
可为空 |
如果status为true时,data数组包含了用户账号信息 |
注:以下参数只有当status为true且data不为空才有
参数 |
类型 |
必要性 |
说明 |
uid |
int |
必有 |
SDK用户uid |
deviceId |
string |
必有 |
设备信息设备号 |
productId |
string |
必有 |
产品id |
tokenIp |
string |
必有 |
ip |
token |
string |
必有 |
token |
3.1 接口目的
通过此接口传入下单数据,下单成功后可返回进入支付的连接。
3.2 接口地址
3.3 请求方式
POST
3.4 参数列表
参数 |
类型 |
必要性 |
说明 |
openId |
string |
必传 |
开放平台开发者身份id,由Quick官方SDK分配 |
productCode |
string |
必传 |
产品CODE,在Quick官方SDK后台获取 |
channelCode |
string |
选传 |
cps分包标识,选传,不传系统默认website,如果是用登录器登录的,可以通过启动参数获取 |
amount |
float |
必传 |
将要下单的金额,单位元 |
userId |
string |
必传 |
sdk登录成功返回的uid |
cpOrderNo |
string |
必传 |
游戏订单号 |
orderSubject |
string |
必传 |
商品描述 |
goodsName |
string |
必传 |
商品名称 |
goodsId |
string | 必传 |
商品名id |
roleName |
string |
必传 |
角色名 |
roleLevel |
float |
必传 |
角色等级 |
serverId |
string |
必传 |
区服id |
serverName |
string |
必传 |
区服名称 |
extrasParams |
string |
选传 |
透传参数,通常为研发需要的特定参数,sdk会原样回调。 |
callbackUrl |
string |
选传 |
支付成功回调结果的地址 |
sign |
string |
必传 |
签名串,算法详见第4章签名方法描述 |
3.5 返回字段
例2 {"status":true,"message":"","data":[]}
参数 |
类型 |
必要性 |
说明 |
status |
bool |
必有 |
接口验证状态,若通过验证为true,否则为false |
message |
string |
必有 |
Status为false时,message有值,为错误提示语 |
data |
array |
可为空 |
如果status为true时,data数组包含了订单详细信息 |
接口会返回JSON格式字串,形如:
{"status":true,"data":{"payUrl":"https://qkgamesdk.quickapi.net/payH5/payCenter?clientLang=zh-cn&data=zzk4puUOWCH13TXOOb6AuOhAiGb/slIUrw2+EURpRinTg1ubbYeMjLBb+Z3cVnn0AulLuWVOud86+EudHyYqX3oililkAcDT5G2+E9Og4U8=&sign=ce30d0a71aa2584bb8ee91921f4dca57"},"message":"请求成功"} 说明:返回的JSON结构体里,data.payUrl即为当前接口返回的完整支付页面url |
4.1 接口目的
用户构造用户中心地址,以便在游戏中打开用户中心,方便玩家进行修改密码等操作。
4.2 接口地址
4.3 请求方式
GET
4.4 参数列表
参数 |
类型 |
必要性 |
说明 |
appProduct |
string |
必传 |
产品CODE,在Quick官方SDK后台获取 |
channelCode |
string |
选传 |
cps分包标识,选传,不传系统默认website |
authToken |
string |
必传 |
登录成功回传的authToken |
4.5 返回字段
该接口无返回,以webview或默认浏览器加载构造的URL即可
5.1 接口目的
通过此接口上报游戏的角色信息
5.2 接口地址
5.3 请求方式
POST
5.4 参数列表
参数 |
类型 |
必要性 |
说明 |
openId |
string |
必传 |
开放平台开发者身份id,由Quick官方SDK分配 |
productCode |
string |
必传 |
产品CODE,在Quick官方SDK后台获取 |
channelCode |
string |
选传 |
cps分包标识,选传,不传系统默认website,如果是用登录器登录的,可以通过启动参数获取 |
userId |
string |
必传 |
sdk登录成功返回的uid |
vipLevel |
string |
必传 |
vip等级 |
deviceId |
string |
必传 |
设备信息设备号 |
partyId |
string |
选传 |
帮派id |
partyName |
string |
选传 |
公会社团名称 |
userRoleName |
float |
必传 |
角色名称 |
userRoleLevel |
string |
必传 |
角色等级 |
userRoleBalance |
string |
必传 |
角色用户余额 |
userRoleId |
string |
选传 |
角色ID |
serverId |
string |
选传 |
区服ID |
serverName |
string |
必传 |
区服名称 |
sign |
string |
必传 |
签名串,算法详见第4章签名方法描述 |
5.6 返回字段
接口会返回JSON格式字符串,如:
例1 {"status":false,"message":"tokenUidError",”data”:[]}
例2 {"status":true,"message":"","data":[]}
参数 |
类型 |
必要性 |
说明 |
status |
bool |
必有 |
接口验证状态,若通过验证为true,否则为false |
message |
string |
必有 |
Status为false时,message有值,为错误提示语 |
data |
array |
可为空 |
如果status为true时,data数组包含了角色详细信息 |
接口会返回JSON格式字串,形如:
{"status":false,"data":[],"message":"Mandatory param missing:sign"} |
|
第一步:对所有参与请求的参数(排除sign本身)进行字典升序排序,首字母相同则按第二位升序,类推。
第二步:使用上述参数构造签名串比如key1=val1&key2=val2&key3=val3依次类推,假如得到签名串StringA,注意key与val都是urldecode之后的值。
第三步:拼接最终的签名串StringB = StringA + "&" + openKey(通过开发者平台获取)。
第四步:使用md5计算第三步签名串哈希值即为:sign=md5(StringB)。
当登录系统包含第三方授权登录时,游戏的webview应支持新窗口打开方法。各程序语法有差异,大体思路为继承webview控件重新实现onCreateWindow之类的方法。
新标签也应监听urlChange事件,当跳转至successUrl时应关闭webview并解析参数。
为获得较好的视觉效果,如圆角等,可将webview控件设为透明模式。等待webview加载网页期间,可设置一些过渡动画。
李先生:13880511661
QQ:48157910
赵先生:15390049857
QQ:1077535763
孙女士:13551010407
QQ:1799614139
QQ群:698731538