服务端接口文档(20241113)

服务端接口文档(20241113)

wapublisher No Comments

一、简介

此文档描述了使用SDK的CP(内容提供商)用到的与WINGSDK后台交付的所有接口的详细定义。
接口分两种:
1、WINGSDK后台实现,CP后台调用。
2、CP后台实现,WINGSDK后台调用。

名词说明:

名词 说明
CP 内容提供商(Content Provider)游戏、应用等
第三方平台登录 通过第三方社交平台的OAuth authentication登录第三方帐号,并绑定WINGSDK帐号
游客登录 通过设备信息登录帐号,设备信息与WINGSDK帐号绑定
应用内登录 用户通过CP提供的帐号系统登录,然后CP通过WINGSDK提供的接口将用户绑定WINGSDK的帐号,以便CP使用SDK提供的服务

二、登录

后台-登录
注:实线表示请求的发起,虚线表示请求的返回

登录流程说明:
1)SDK客户端封装了其它不同第三方登录平台,用户登录后,SDK会返回后台验证的参数
2)客户端去WINGSDK服务端获取在线token,服务端先去第三方登录平台验证accessToken,获取第三方用户信息,并返回对应的WINGSDK用户ID和token给客户端
3)客户端通过SDK API 获取token,userId,puserId,platform等用户信息,然后向游戏后台发送登录请求
4)游戏后台调用WINGSDK提供的接口验证用户登录,请求参数见下
5)如果是应用内登录,以上登录流程图可以将第三方登录平台当成CP服务端,CP需要提供验证用户帐号的接口供WINGSDK后台调用。

2.1 CP验证用户登录接口

接口说明:

接口相关 说明
接口提供方 WINGSDK平台
接口调用方 CP
接口实现方式 HTTP/POST
接口描述 登录流程图第8步,CP验证WINGSDK token是否合法,是否与ghwUserId匹配
生产环境 https://api.wingsdk.com/cpapi/v2/user/authorize.do
支持Http Method POST (需要以表单的形式提交 content-type=application/x-www-form-urlencoded)
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
token String(100) Y WINGSDK验证token,从客户端获取
appId String(100) Y WINGSDK应用ID
osign Stirng(100) Y MD5(
appId+
token +
secureKey
),如果有参数为空,用空字符串””替代,secureKey (登录验证key,即SDK后台对应的登录秘钥)由运营人员在SDK后台获取

返回格式

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String(32) Y 结果描述
error String(32) N 验证错误描述信息
ghwUserId Long N 验证成功后返回ghwUserId,CP通过检验客户端的ghwUser与此字段是否相等防止客户端冒充其它用户

请求示例:

$ curl -s -XPOST -H ‘content-type:application/x-www-form-urlencoded’ ‘https://api.wingsdk.com/cpapi/v2/user/authorize.do’ -d ‘appId=39a59e6182b911eebb5a02c85f0429f5&osign=2df4b4da628ff9e9da8ade02d5f9bd94&token=30_o1hgud5ogc9CSlgwul4AEaFr8jS0g3sD’

2.2 WINGSDK后台验证CP用户登录信息接口(应用内登录)

登录验证流程图:
后台-CP验证用户登录接口

接口说明:

接口相关 说明
接口提供方 CP
接口调用方 WINGSDK平台
接口实现方式 HTTP/POST
接口描述 应用内登录,登录流程第4步,WINGSDK验证CP用户信息时调用。WINGSDK通过accessToken和extInfo 验证用户信息。accessToken由客户端完成CP帐号系统登录后获取,WINGSDK通过accessToken和extInfo去CP后台验证用户信息
生产环境 地址由CP提供给运营人员,运营人员将地址配置在SDK管理后台
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
accessToken String N CP帐号登录验证token,从客户端获取
appId String Y WINGSDK应用ID
extInfo String N CP自定义的内容,原样返回
osign Stirng Y MD5(
appId+
accessToken+
secureKey+
extInfo
),如果有参数为空,用空字符串””替代,secureKey (登录验证key,即SDK后台对应的登录秘钥)由运营人员在SDK后台获取

返回格式

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String(32) Y 结果描述
error String(32) N 验证错误描述信息
cpUserId String Y CP的用户ID。code=200时返回此字段

三、支付流程

3.1 概述

要使用Wingsdk的支付功能,首先要在SDK后台添加商品列表以及要使用的第三方支付平台信息。每个支付平台的商品列表都是可以单独配置的。
Wingsdk支付过程中,对第三方支付平台的信息都做了屏蔽,也就是说,所有第三方支付平台以及对应的配置信息对CP来说都是透明的。CP在客户端使用的商品列表是wingsdk平台独有的商品Id,和第三方支付后台的商品Id的不一样,但是有映射关系(运营人员在SDK管理后台维护),即wingsdk商品Id+支付渠道标识可以确认一个第三方商品Id,用户选择某一个商品进行购买后,需要选择第三方支付渠道(google、apple等),wingsdk首先会使用wingsdk平台的商品id下订单,之后会使用对应的第三方商品id到第三方(google,apple等)进行支付。支付成功,Wingsdk通知CP发货也是使用Wingsdk的商品Id。
后台-支付流程

3.2 CP发货通知接口

该接口由移动平台定义,CP负责实现
发货接口调用说明
1.WINGSDK服务端系统订单在支付完成之后将实时通知到 CP 发货接口。

2.WINGSDK服务端系统通知 CP 发货时,若未接收到 CP 接口成功回复,该笔订单将重复通知 3次。

3.WINGSDK服务端系统在重复 3 次通知 CP 发货的过程中,若都未收到 CP 的成功回复,订单将进入后台轮询通知发货。每次轮询将有 3 次的通知;第一次轮询为订单新建之后的 15 分钟;之后每小时轮询通知一次; 24 小时之后隔日通知一次。

4.WINGSDK服务端系统收到 CP 接口返回 code=200 时将不再对该笔订单做重复通知。

5.WINGSDK服务端系统若对某笔订单重复通知,则 CP 需自行判断是否已经发货,若已发货则接
口直接返回 code=200,当作成功处理。

6.WINGSDK回调服务器的 IP 地址为 xx.xx.xx.xx,CP 可以考虑在回调接口中做该 IP 的白名单匹
配(可选)。不过 IP 地址可能存在变更,如有变更,将在SDK管理后台上另行通知

URL:http://****/deliver.do
支持Http Method:POST
返回信息格式:Json

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y WINGSDK 应用 ID
orderId String Y WINGSDK订单号
defaultAmount Double Y 第三方支付后台配置的商品基准货币价格,单位(元);
如果非商品购买(如预点卡支付,短信充值、充值金额由玩家定义),此字段为0
defaultCurrency String(32) Y 第三方支付后台配置的商品价格使用的基准货币
payAmount Double N 即将废弃,请勿使用
用户支付的本地货币金额,单位(元);实际支付金额,如果商品有打折,这个金额是折后的价格,请勿根据此参数设定发货数量
currencyCode String(32) N 即将废弃,请勿使用
用户支付时候使用的本地货币币种;
如果非商品购买(如点卡支付,充值金额由玩家定义),此字段为WINGSDK后台设置的支付渠道对应的基准货币
gameAmount Int Y 游戏币数量,如钻石数,金币数
gameCurrency String(32) Y 游戏币种,如钻石,金币,元宝
dollarAmount Double N 即将废弃,请勿使用
将本地货币金额转换成美元($)的商品金额(精确至小数点后4位),如果没有本地货币,使用基准货币替代。
productId String(32) N WINGSDK后台定义商品Id
如果非商品购买(如点卡支付,充值金额由玩家定义),此字段为
具体值:customAmountProduct,这类购买CP可以通过gameAmount给玩家发相应的游戏币
payChannel String Y 支付渠道:APPLE 、GOOGLE
userId Long Y 用户ID,WINGSDK游戏平台userId
serverId String Y 服务器ID
orderStatus Int Y 订单状态:
1:成功
2:失败
5:退款
6:争议
statusMsg String Y 订单状态说明
ots Int Y 订单创建时间戳(秒)
payDoneTime String N 支付完成时间(秒),已转成字符串,支付失败为空
extInfo String N CP 扩展信息字段,限长512,创建订单时通过客户端SDK传入,发货通知原样返回给CP。CP可以添加任意自定义的字段(JSON格式),用于检验订单信息或扩展其它功能,不超过长度限制即可。
如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以添加参数deliverUrl;
添加merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。如果是APPLE支付渠道,merId使用客户端bundleId。
参考格式
{
“deliverUrl”:” http://game.com/deliver.do”,
“merId”:”payChanelMerId”
}
osign String Y 签名,MD5(
appId+
orderId+
defaultAmount+
defaultCurrency+
gameAmount+
gameCurrency+
productId+
userId+
serverId+
orderStatus+
ots +
payDoneTime +
extInfo +
paySecretKey
)
payDoneTime、extInfo参数无值则使用””(空字符串)代替参与签名
paySecretKey(支付验证key,即SDK后台对应的支付秘钥)由运营人员在SDK后台获取

返回结果说明:

参数名 类型 是否必须 参数说明
appId String(32) N 应用 ID
code Int Y 通知结果状态码,200表示通知成功
msg String(32) Y 结果描述
userId Long N 用户ID
deliverStatus Int N 订单发货状态
0:未知
1:发货成功
2:发货失败
CP在接受到发货通知后,如果能同步确定发货状态,可以返回此状态,如果不能确定发货状态,可以忽略此字段。CP也可以通过发货结果异步回调接口通知SDK发货结果

3.3 发货结果异步回调接口(可选)

接口说明:

接口相关 说明
接口提供方 WINGSDK平台
接口调用方 CP
接口实现方式 HTTP/POST
接口描述 1.CP在向用户发货成功后,将发货结果反馈给WINGSDK平台
2.CP在通知失败情况下(通知结果返回code值非200),需要重试通知
3.WINGSDK对发货成功的订单不再做修改发货状态(发货成功/发货失败),但发货失败的订单可以再修改发货状态。
4.CP对通知结果状态码code=200的订单不需要再重复通知。
生产环境 https://api.wingsdk.com/cpapi/v1/deliver_callback.do
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y 应用 ID
orderId String Y WINGSDK订单号
productId String(32) Y 商品Id
如果非商品购买(如点卡支付,充值金额由玩家定义),此字段为
具体值:customAmountProduct
userId Long Y 用户ID,WINGSDK游戏平台userId
serverId String N 服务器ID
deliverStatus Int Y 订单发货状态
1:发货成功
2:发货失败
statusMsg String N 订单状态说明
osign String Y 签名,MD5(
appId+
orderId+
productId+
userId+
serverId+
deliverStatus +
paySecretKey
)
serverId等参数无值则使用””(空字符串)代替参与签名
paySecretKey(订单验证key,即SDK后台对应的支付秘钥)由运营人员在SDK后台获取

返回结果说明:

参数名 类型 是否必须 参数说明
code Int Y 通知结果状态码,200表示通知成功
msg String(32) Y 结果描述

3.4 退款通知接口(可选)

该接口由移动平台定义,CP负责实现
退款通知接口调用说明
1.WINGSDK服务端每天定时任务查询第三方支付平台退款订单列表,目前只支持Google play

2.用于Google支付渠道的服务邮箱账号需拥有查看财务的权限。

3.WINGSDK服务端系统通知 CP退款订单时,若未接收到 CP 接口成功回复,该笔退款订单将重复通知5次。每隔30分钟通知一次

4.WINGSDK服务端系统收到 CP 接口返回 code=200 时将不再对该笔退款订单做重复通知。

5.WINGSDK服务端系统若对某笔退款订单重复通知,则 CP 需自行判断是否已经处理,若已处理则接口直接返回 code=200,当作成功处理。

6.WINGSDK回调服务器的 IP 地址为 xx.xx.xx.xx,CP可以考虑在回调接口中做该 IP 的白名单匹配(可选)。不过 IP 地址可能存在变更,如有变更,将在SDK管理后台上另行通知

URL:http://****/refund_notify.do
支持Http Method:POST
返回信息格式:Json

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y WINGSDK应用 ID
orderId String Y WINGSDK订单号
defaultAmount Double N 第三方支付后台配置的商品基准货币价格,单位(元);
如果非商品购买(如预点卡支付,短信充值、充值金额由玩家定义),此字段为0
defaultCurrency String(32) N 第三方支付后台配置的商品价格使用的基准货币
payAmount Double Y 用户支付的本地货币金额,单位(元)
currencyCode String(32) N 用户支付时候使用的本地货币币种
如果非商品购买(如点卡支付,充值金额由玩家定义),此字段为WINGSDK后台设置的支付渠道对应的基准货币
gameAmount Int Y 游戏币数量,如钻石数,金币数
gameCurrency String(32) Y 游戏币种,如钻石,金币,元宝
dollarAmount Double Y 将本地货币金额转换成美元($)的商品金额(精确至小数点后4位),如果没有本地货币,使用基准货币替代。
productId String(32) N WINGSDK后台定义商品Id
如果非商品购买(如点卡支付,充值金额由玩家定义),此字段具体值:customAmountProduct,这类购买CP可以通过gameAmount给玩家发相应的游戏币
payChannel String Y 支付渠道:APPLE 、GOOGLE
userId Long Y 用户ID,WINGSDK游戏平台userId
serverId String Y 服务器ID
orderStatus Int Y 订单状态
1:成功
2:失败
statusMsg String Y| 订单状态说明
ots Long Y 订单创建时间戳(秒)
payDoneTime String N 支付完成时间(秒),已转成字符串,支付失败为空
purchaseTime Long N 第三方支付平台购买时间(秒), 若无不返回
voidedTime Long N 第三方支付平台退款时间(秒), 若无不返回
extInfo String N CP 扩展信息,CP通过客户端SDK 传入,发货通知原样返回,CP可用此字段检验订单信息。
如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为JSON,参数名为deliverUrl,参考格式
{
“deliverUrl”:” http://game.com/deliver.do”,
“otherInfo”:”otherInfo”,
“merId”:””
}
添加merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。
如果是APPLE支付渠道,merId使用客户端bundleId
osign String Y 签名,MD5(
appId+
orderId+
defaultAmount+
defaultCurrency+
gameAmount+
gameCurrency+
productId+
userId+
serverId+
orderStatus+
ots +
payDoneTime +
purchaseTime +
voidedTime +
extInfo +
paySecretKey
)
payDoneTime、extInfo参数无值则使用””(空字符串)代替参与签名
paySecretKey(支付验证key,即SDK后台对应的支付秘钥)由运营人员在SDK后台获取

返回结果说明:

参数名 类型 是否必须 参数说明
appId String(32) N 应用 ID
code Int Y 通知结果状态码,200表示通知成功
msg String(32) Y 结果描述

四、奖励通知

4.1 邀请奖励通知接口定义

接口相关 说明
接口提供方 CP后端
接口调用方 WINGSDK平台
接口实现方式 HTTP/POST
接口描述 奖励通知调用说明:
1.WINGSDK服务端系统在用户触发奖励机制后会通知CP对指定用户发送奖励,奖励规则在SDK管理后台配置。
2.WINGSDK服务端系统通知 CP 奖励通知时,若未接收到 CP 接口成功回复,该奖励通知将重复通知 3次。
3.WINGSDK服务端系统在重复 3 次奖励通知的过程中,若都未收到 CP 的成功回复,通知将进入后台轮询通知。每次轮询将有 3 次的通知;第一次轮询为通知新建之后的 15 分钟;之后每小时轮询通知一次; 24 小时之后隔日通知一次。
4.WINGSDK服务端系统收到 CP 接口返回 code=200 时将不再对该奖励做重复通知。
5.WINGSDK服务端系统若对某笔奖励重复通知,则 CP 需自行判断是否已经发货,若已发货则接口直接返回 code=200,当作成功处理。
生产环境 CP自定义
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y 应用 ID
eventName String Y 触发奖励机制的事件名称,由运营人员配置在WINGSDK后台
installTime Long Y 被邀请者应用安装时间戳
inviteePfUserId String(32) Y 被邀请者社交平台openId
inviteeUserId Long Y 被邀请者ghwUserId
inviteeGameUserId String N 被邀请者游戏ID
inviteeServerId String N 被邀请者服务区ID,安装事件可能为空可能为空
platform String Y 社交平台标识 FaceBook, VK
rewardType String Y 奖励物品标识: 钻石,元宝等
rewardAmount Int Y 奖励物品数量
rewardId String 奖励事件唯一标识Id
userId Long Y 邀请者 ghwUserId
serverId String N 邀请者服务区Id
osign String Y 签名,MD5(
appId +
eventName +
installTime +
inviteePfUserId+
inviteeUserId +
inviteeGameUserId+
inviteeServerId +
platform+
rewardAmount +
rewardId +
userId +
serverId+
secureKey )
参数无值则使用””(空字符串)代替参与签名,secureKey 服务端验证key,在SDK后台配置(即SDK后台对应的秘钥)

返回结果说明:

参数名 类型 是否必须 参数说明
appId String(32) N
code Int Y 通知结果状态码,200表示通知成功
msg String(32) Y
userId Long N
deliverStatus Int N 奖励状态
0:未知
1: 奖励成功
2: 奖励失败
CP在接受到奖励通知后,如果能同步确定奖励状态,可以返回此状态,如果不能确定奖励状态,可以忽略此字段

4.2 视频广告奖励通知接口定义

接口说明:

接口相关 说明
接口提供方 CP后台
接口调用方 WINGSDK平台
接口实现方式 HTTP/POST
接口描述 玩家观看完广告视频后,WINGSDK平台通知CP对玩家进行奖励
生产环境 CP自定义,配置到SDK后台即可。
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y 应用 ID
viewId String Y 视频观看Id,全局唯一,每次观看至奖励一次,WINGSDK平台可能会通知多次,CP需要判断去重,避免重复发放奖励
rewardType String Y 奖励物品标识:钻石,元宝等
rewardAmount Int Y 奖励物品数量
userId Long Y 玩家的WINGSDK平台用户ID
serverId String N 玩家所在的游戏服
gameUserId String Y 玩家的角色Id
extInfo String Y 扩展字段,游戏在客户端观看视频前通过API传给SDK,原样返回给CP后台
osign String Y 签名,MD5(
appId +
viewId+
rewardType+
rewardAmount +
userId +
serverId+
gameUserId+
extInfo+
secureKey )
参数无值则使用””(空字符串)代替参与签名,secureKey 服务端验证key,在SDK后台配置(即SDK后台对应的秘钥)

返回结果说明(JSON格式):
失败返回错误码,请参照附录1的状态码说明表;

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String Y 结果描述

4.3 admob激励广告奖励通知接口定义

接口说明:

接口相关 说明
接口提供方 CP后台
接口调用方 WA平台
接口实现方式 HTTP/POST
接口描述 玩家观看完激励广告后,WA平台通知CP对玩家进行奖励
生产环境 CP自定义,配置到SDK后台即可。
支持Http Method POST
请求信息格式 application/x-www-form-urlencoded
返回信息格式 JSON

接口调用说明
连续通知3次,都失败则不再通知。

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y 应用 ID
transactionId String Y 广告奖励订单流水号
adName String Y 广告名称
rewardItem String Y 奖励物品标识:钻石,元宝等
rewardAmount Int Y 奖励物品数
userId Long Y 玩家的WA平台用户ID
serverId String N 玩家所在的游戏服
extInfo String N 扩展字段,游戏在客户端观看视频前通过API传给SDK,原样返回给CP后台
osign String Y 签名,MD5(
appId +
transactionId +
adName+
rewardItem +
rewardAmount +
userId +
serverId+
extInfo+
secureKey )
参数无值则使用””(空字符串)代替参与签名,secureKey 服务端验证key,在SDK后台配置

返回结果说明(JSON格式):
失败返回错误码,请参照附录1的状态码说明表;

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String Y 结果描述
deliverStatus int N 奖励发货状态
0:未知
1:发货成功
2:发货失败
CP在接受到发货通知后,如果能同步确定发货状态,可以返回此状态,如果不能确定发货状态,可以忽略此字段。

4.4 礼包通知接口定义

接口说明:

接口相关 说明
接口提供方 CP后台
接口调用方 WingSDK平台
接口实现方式 HTTP/POST
接口描述 给玩家发放礼包
生产环境 CP自定义,配置到WingSDK后台即可。
支持Http Method POST
请求信息格式 application/x-www-form-urlencoded
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String(32) Y 应用 ID
giftId String Y 礼包id
transactionId String Y 唯一流水号,可根据此字段来判断是否是重复通知。
userId Long Y 玩家的WingSDK平台用户ID
serverId String Y 玩家所在的游戏服
osign String Y 签名,MD5(
appId +
giftId +
transactionId+
userId +
serverId+
secureKey )
参数无值则使用 “”(空字符串)代替参与签名,secureKey 服务端验证key,由运营提供

返回结果说明(JSON格式):
失败返回错误码,请参照附录1的状态码说明表;

参数名 类型 是否必须 参数说明
code Int Y 状态码,200表示通知成功;400表示通知失败
msg String Y 结果描述

五、数据查询接口

5.1 通过第三方OPEN_ID获取WINGSDK平台用户ID

接口说明:

接口相关 说明
接口提供方 WINGSDK平台
接口调用方 CP后端
接口实现方式 HTTP/POST
接口描述 通过第三方平台openId获取WINGSDK平台的userId
生产环境 https://api.wingsdk.com/cpapi/v1/get_user_info.do
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String Y WINGSDK平台分配的应用id
platform String Y 第三方平台标识: FACEBOOK、APPLE、GOOGLE、GUEST等
openId String Y 第三方平台openId
osign String Y 验证用的加密串
Md5(
appId+
appKey+ //登录验证key,注意保密
platform+
openId
)

返回结果说明(JSON格式):
失败返回错误码,请参照状态码说明表

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String Y 结果描述
userId Long N SDK平台用户Id

5.2 查询区服角色信息

该接口由移动平台定义,CP负责实现
查询区服信息接口调用说明
1、WA服务端系统通过WA的userId来查询用户已经玩过的区服角色以及最近玩过的区服角色。
2、Url:https://****/serverinfo.do

接口说明:

接口相关 说明
接口提供方 CP后端
接口调用方 WINGSDK平台
接口实现方式 HTTP/POST
接口描述 通过WA的userId来查询用户已经玩过的区服角色
生产环境 https://****/serverinfo.do
支持Http Method POST
返回信息格式 JSON

输入参数说明:

参数名 类型 是否必须 参数说明
appId String Y WINGSDK平台分配的应用id
userId Long Y 用户ID,WA游戏平台userId
osign String Y 验证用的加密串Md5(appId+userId+secureKey) //secureKey即SDK后台对应的登录密钥, 需运营人员在SDK后台获取

返回结果说明(JSON格式):
失败返回错误码,请参照状态码说明表

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照状态码说明表
msg String Y 结果描述
currentServerId String Y 当前服务器Id,没有则是最近登录的服务器Id.(游戏没有区服概念时可以传”1”)
currentRoleId String Y 当前角色Id,没有则是最近使用的角色Id
serverList object Y 数组对象
serverList为数组对象,包含数据如下,见示例
serverId String Y 服务器Id。(游戏没有区服概念时可以传”1”)
serverName String Y 服务器名称。(游戏没有区服概念时可以传”server1”)
roleList object Y 数组对象
roleList为数组对象,包含数据如下,见示例
roleId String Y 角色Id
roleName String Y 角色名称

示例:

六、消息推送

6.1 消息推送接口

接口说明:

接口相关 说明
接口提供方 WA平台
接口调用方 CP
接口实现方式 HTTP/POST
接口描述 可通过该接口发起推送任务,需要在sdk后台配置IP白名单后,才能正常访问此接口
生产环境 https://api.wingsdk.com/cpapi/v1/user/push.do
支持Http Method POST
报文类型 application/json; charset=utf-8
返回信息格式 JSON

请求报文头:

字段 类型 必须 参数说明
appId String Y WA应用ID
sign String Y 接口调用签名, 小写MD5(appId + body + secureKey), secureKey (登录验证key)由运营人员在SDK后台生成

body说明:

参数名 类型 是否必须 参数说明
message Object Y 消息对象
message.id String N 自定义ID,当一次推送任务需要多次请求接口时,可以设置相同的ID,标识为同一任务,便于回溯推送情况(不超过64字符)
message.title String Y 消息题目(不超过64字符)
message.body String Y 消息内容(不超过200字符)
message.platform Int Y 推送平台;0-安卓 1-IOS
message.priority String Y 推送优先级;1-低;2-中;3-高;
message.pushType Int Y 推送类型;0-自定义uid推送;1-全服推送;
message.uids List N Uid列表(最多支持1000个),当pushType为”自定义uid推送”时,该参数必须要传值。[123,456,789]

返回格式:

参数名 类型 是否必须 参数说明
code Int Y 状态码,请参照附录1
msg String(32) Y 结果描述

调用实例:

附录1:返回状态码说明

通用返回状态码说明(参考了Http状态码设计):

状态码code 说明
200 成功
400 错误请求:请求参数有错,头信息有误等,导致请求无法被正确理解
401 请求未认证:访问受限资源是缺少认证信息,或者认证未通过
403 禁止访问:由于应用上下文原因或请求端上下文的原因被禁止访问资源,例如IP限制等;
404 找不到被访问资源:接口不存在、页面不存在或对应的业务实体找不到
500 服务器内部故障
501 所请求接口或页面未实现

平台自定义状态码说明

状态码code 说明
4010 无效appId: appId不存在或未开启
4011 无效osign:osign校验失败
4079 推送配置无效,APNS证书及密码(IOS推送)或Firebase(Android推送)认证 Key未配置

iOS版本变更

wapublisher No Comments



版本号 4.2.0 4.3.0 4.4.0 4.5.0 4.6.0 4.7.0 4.8.0
发布日期 20240923 20240927 20250318 20250702 20250723 20250911 20280928
iOS系统适配更新 iOS18
Apple模块
Firebase模块 常规升级 常规升级 常规升级
FACEBOOK 常规升级 常规升级
Appsflyer模块 常规升级 常规升级 常规升级
AiHelp 升级sdk版本,支持红点展示未读消息 常规升级 常规升级
欧盟Consent弹窗 升级 常规升级 常规升级 常规升级
AdMob 支持iOS互推 常规升级
重点提示 建议升级,按照Didomi的要求必须升级Didomi版本,否则10月4日后会影响Consent弹窗功能
建议升级的WingSDK版本 所有版本(有接入Consent弹窗功能的游戏)
升级指引 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可
已接入游戏数量 4 3 5 6 7 3 0

Android版本更新记录

wapublisher No Comments


版本号 4.3.0 4.5.0 4.5.1 4.6.0 4.7.0 4.7.3 4.8.0 4.9.0 4.10.0 4.11.0
发布日期 20240923 20241129 20241224 20250220 20250402 20250429 20250604 20250709 20250903 20250925
Android系统适配更新 兼容Android15 兼容Android16
Google模块 常规升级 常规升级
Firebase模块 常规升级 常规升级
FACEBOOK 常规升级 Facebook社交需求
Appsflyer模块 常规升级 常规升级
Now GG nowgg sdk升级到3.0.0 nowgg包适配OneStore渠道 nowgg sdk升级到 4.2.0
雷电 新增 雷电sdk升级到3.0.3
AiHelp 升级sdk版本,支持红点展示未读消息 常规升级
官网包 增加浮窗新功能,以及浮窗内游戏推广归因功能 新增R2登录 配置精简
GHW浮窗 增加浮窗新功能,以及浮窗内游戏推广归因功能 风控功能优化,支持拉起AdMob广告 浮窗优化
欧盟Consent弹窗 升级 常规升级
AdMob 常规升级
重点提示 有使用Consent弹窗功能的游戏建议升级。按照Didomi的要求必须升级Didomi版本,否则10月4日后会影响。
建议升级的WingSDK版本 所有版本(有接入Consent弹窗功能的游戏) 建议接入R2渠道版本升级 建议接入nowgg渠道版本升级 建议接入雷电渠道版本升级 建议接入nowgg渠道版本升级 建议接入nowgg、雷电渠道版本升级
升级指引 直接获取WingSDK最新版本替换即可 参考指引文档进行升级 参考指引文档进行升级 参考指引文档进行升级 参考指引文档进行升级 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可 直接获取WingSDK最新版本替换即可
已接入游戏数量 7 3 1 7 1 1 3 11 0 0


WingSteamExeSDK 使用指南(2.0.0bak_20240912)

wapublisher No Comments

简介

WingSteamExeSDK主要是为满足PC端Steam平台Windows的游戏需要,为此类游戏提供基于Steam平台的登录、支付、数据收集等通用功能。以下文档中会把WingSteamExeSDK简称为SDK。

1.cp接入流程

steam exe接入流程.drawio

相关步骤指引:

1.第一步,安装和接受邀请,参考《第5.1章 成为steam应用测试者》
2.第二步,集成和接入,参考《第2章 集成》以及之后的章节进行接入
3.第三步,本地调试,参考《第5.2章 本地开发测试》《第5.3章 日志调试与沙盒支付》

2.集成

2.1.SDK库选择

SDK提供了多个版本的库文件,可以根据项目需求使用。

序号 平台 是否MT编译 lib库文件 SDK下载
1 x86 wingsdk.lib 下载
2 x64 wingsdk64.lib 下载
3 x86 wingsdk_mt.lib 下载(推荐)
4 x64 wingsdk64_mt.lib 下载

MT编译版本:已经内置VC运行库内容,不依赖于外部VC运行库。
普通(MD)编译版本:该版本会使用附带的vcruntime140.dll,msvcp140.dll,vcruntime140_1.dll这几个文件。

对应的dll版本:

版本 包含文件 备注
x86 libcrypto-3-wing.dll
libssl-3-wing.dll
sdkencryptedappticket.dll
steam_api.dll
wingsdk.dll
msvcp140.dll
vcruntime140.dll
x64 ibcrypto-3-x64-wing.dll
libssl-3-x64-wing.dll
sdkencryptedappticket64.dll
steam_api64.dll
wingsdk64.dll
msvcp140.dll
vcruntime140.dll
vcruntime140_1.dll
x86_mt libcrypto-3-wing-mt.dll
libssl-3-wing-mt.dll
sdkencryptedappticket.dll
steam_api.dll
wingsdk_mt.dll
x64_mt libcrypto-3-x64-wing-mt.dll
libssl-3-x64-wing-mt.dll
sdkencryptedappticket64.dll
steam_api64.dll
wingsdk64_mt.dll

2.2.项目集成

以VisualStudio项目工程为例

1.下载最新版本SDK压缩包,并解压
2.SDK头文件引入
1)复制include文件夹及其内容到项目中,主要包含wing目录下的wing_api.h头文件
2)右键项目->属性->C/C++->常规->附加包含目录,填入include文件夹路径,例如include文件夹是复制到项目根目录下,则路径可以填写:$(ProjectDir)include

图片1

图片2

3.SDK库文件引入
1)复制lib文件夹及其内容到项目中,并在项目属性页->链接器->常规->附加库目录,中填入lib文件夹路径,例如lib文件夹是复制到项目根目录下,则路径可以填写:$(ProjectDir)lib
2)在项目属性页->链接器->输入->附加依赖项中填入sdk的lib文件,如果是x86编译,则填入wingsdk.lib,如果是x64编译,则填入wingsdk64.lib,如果使用mt版本,则选择对应带mt后缀lib文件。
图片3

图片4

4.SDK的Api使用
1)在项目中引入。以前面步骤的配置路径作为示例,那么引入的路径为 #include “wing/wing_api.h”
2)在项目中使用。wing_api.h的接口为命名空间+方法的使用方式,例如:sdk的初始化方法使用,WingProxy::Init(“appId”,“appKey”,[](int code,string msg,string data){});

5.项目编译后,需要把sdk用到的dll文件复制到编译后的exe程序目录中,否则项目无法正常运行。具体版本对应的dll文件,参考前面dll版本文件对应表。例如x86的dll内容如下图:

图片5

6.运行程序

2.3.三方库版本

三方库 版本 包含dll(只列举x86版本) 功能
OpenSSL 3.1.3 libcrypto-3-wing.dll
libssl-3-wing.dll
网络请求
SteamSDK 1.5.8 steam_api.dll
sdkencryptedappticket.dll
Steam平台SDK

3.接口说明

3.1.使用方式

sdk的api采用命名空间+方法的形式定义的,WingProxy是所有sdk接口的命名空间,以支付是否可用方法为例,使用方式:

3.2.回调函数

sdk接口的参数中,除了一些常见类型参数,在wing_api.h中还声明了WingCallback回调函数,参数说明如下:

参数 类型 说明
code int 状态码,具体取值参考《状态码说明》章节
msg std::string 状态码说明
data std::string Json字符串,里面包含该接口会返回的字段,例如登录接口登录成功后返回的data内容:{“msg”:”token refreshed”,”code”:200,”isFirstLogin”:0,”userId”:7822920,”token”:”30_o1hejvBB22LKMu”}

4.SDK接口

4.1.初始化

调用下面接口对SDK进行初始化,建议在程序开始时首先调用,确保后续其他sdk接口可以正常使用

参数说明:

参数 类型 必填 说明
appId std::string Y appId,具体值从运营处获取
appKey std::string Y appKey,具体值从运营处获取
WingCallback WingCallback Y 回调函数

代码示例:

4.2.退出程序

调用下面接口对SDK内资源进行释放,必须在程序退出前调用。

4.3.登录

使用下面接口进行登录

参数说明:

参数 类型 必填 说明
WingCallback Y 回调函数

WingCallback的data内容字段说明:

字段名 类型 必填 说明
userId long Y 用户Id
token string Y 在线token

代码示例:

4.4.退出登录

调用下面接口退出账号

4.5.检查支付是否可用

进行支付之前,需要先判断支付是否可用

返回值为bool类型,true 表示支付可用,false表示支付不可用。

4.6.购买商品

进行支付之前,需要先判断支付是否可用

参数说明:

参数 类型 必填 说明
productId std::string Y WINGSDK平台的商品ID
extInfo std::string Y CP 扩展信息字段,限长512(JSON格式),WING服务器到CP服务器发货通知时原样返回给CP。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为标准JSON,参数名为 deliverUrl,参考格式{ “deliverUrl”:” http://game.com/deliver.do”, “otherInfo”:”otherInfo”,“merId”:””}merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。无内容建议传入空字符串“”
WingCallback Y 回调函数

WingCallback的data内容字段说明:

字段名 类型 必填 说明
orderId std::string Y 订单ID
productId std::string Y WINGSDK平台的商品ID
currency std::string Y 基准货币
amount long long Y 基准货币价格
quantity int Y 购买数量,目前一般都是1
extInfo std::string N 扩展信息字段,内容与该方法传入的extInfo相同
status int Y 1表示支付成功,其他表示支付失败

代码示例:

4.7.游戏必要参数设置

WINGSDK包括serverId等游戏参数,这些参数主要用于数据跟踪和统计。
该部分参数必须严格按照文档进行设置,在后续的接口中会使用到这些参数,没有按照要求配置会导致部分接口调用失败。

参数设置时机除了按照说明设置,另外需要特别注意在游戏启动时的设置时机,具体参考 流程要求

4.7.1 设置服务器ID

当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务

注意:设置服务器id的操作在每次选服后都需要进行,必须在调用其他事件前设置

4.7.2.设置GameUserId

当游戏角色ID发生改变时,需要调用设置接口设置新的gameUserId,例如成功登录账号后、切换账号成功后

注意:
1.必须在调用其他事件前设置。
2.游戏角色ID是游戏角色在游戏中的ID,不是WINGSDK自身的UserId。
3.若未创角前拿不到游戏角色ID,可以先设置-1,创角后再设置一次正确的角色ID

4.7.3.设置用户等级Level

当用户角色等级发生改变时,需要调用设置等级接口设置新的等级,例如开始进入游戏、等级提升等。

注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级,必须在调用其他事件前设置。

4.7.4.设置玩家游戏昵称

设置游戏玩家的昵称,调用接口:

注意:
1.当玩家登录、登出游戏,或修改昵称时,需要及时调用这个接口设置玩家昵称。
2.调用该接口设置昵称后,玩家进行购买时会自动记录昵称到订单信息中。

4.8.数据收集

4.8.1.流程要求

WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:

图片6

注意:

1.以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:WingProxy::SetServerId()、WingProxy::SetGameUserId()、WingProxy::SetLevel()、WingProxy::SetNickName()、ghw_user_import事件、ghw_user_create事件。

2.其它的事件如ghw_level_achieved、ghw_self_tutorial_completed等请根据对应业务逻辑,在对应业务发生时调用接口发送。

序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 SetServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 SetGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 SetLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
4 SetNickName 设置玩家昵称 标记玩家当前的游戏昵称 玩家设置昵称后
5 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用SetServerId、SetGameUserId、SetLevel接口
6 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用SetServerId、SetGameUserId、SetLevel接口
7 ghw_user_info_update 更新用户信息 更新用户信 玩家信息更新时 需要先调用SetServerId、SetGameUserId、SetNickname接口
8 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
9 ghw_self_lv_x 更新关键等级 更新关键等级 关键等级到达时 属于自定义事件
10 ghw_self_tutorial_completed 完成新手任务 完成新手任务 完成新手任务时 属于自定义事件

4.8.2.发送事件

使用下面接口发送事件

参数说明:

参数 类型 必填 说明
eventName const std::string& Y 事件名称
params const std::string& N 事件参数,可以不传,默认空。以json字符串的形式传递。例如需要设置isFirstEnter为1,则应该传递内容为:{“isFirstEnter”:1}。
eventValue double N 事件价值,可以不传,默认无。

代码示例:

4.8.3.预定义事件

4.8.3.1.ghw_user_import导入用户事件(进服)

说明:导入用户事件,玩家第一次进某个服时调用

参数名 类型 说明 必填 备注
isFirstEnter int 是否第一次进服 Y 0->否;1->是;默认为0

注意:发送ghw_user_import事件前需调用设置服务器ID接口更新服务器id、设置gameUserId接口更新游戏用户id
代码示例:

4.8.3.2.ghw_user_create 创建角色

说明:创建游戏角色,游戏角色创建时调用

参数名 类型 说明 必填 备注
nickname string 角色名(昵称) Y
registerTime long long 创建时间 Y 注册时间戳,13位数,单位为毫秒(1970以后)
gender number 角色性别 N 0 女,1 男,2 未知
roleType string 角色类型 N
vip number 等级 N
bindGameGold number 绑定钻石 N
gameGold number 用户钻石数 N
fighting number 战斗力 N
status number 状态 N 状态标识,-1: 锁定,1:未锁定

代码示例

4.8.3.3.ghw_user_info_update 更新用户信息

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 角色名称 Y 无昵称时,可填写空字符串
vip int 等级 N
status int 状态 N 状态标识,-1:锁定,1:未锁定

代码示例

4.8.3.4.ghw_level_achieved 等级增长事件

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score number 账户分数 N
fighting number 战斗力 N

注意:发送ghw_level_achieved事件前需调用设置用户等级level接口更新用户等级信息。

4.8.4.自定义事件

如果发送的事件不属于预定义事件范围,事件发送时会自动补上ghw_self_前缀,例如关键等级5的事件名称传入,lv_5,最终发送的事件名称为ghw_self_lv_5。

4.8.4.1.ghw_self_lv_x关键等级事件

代码示例:

4.6.4.2.ghw_self_tutorial_completed完成新手任务

5.本地开发调试

5.1.成为Steam应用测试者

在应用上线前,成为Steam应用测试者,可以以测试者的身份在steam客户端中拥有该游戏,并进行测试。
步骤:
1.研发提供steam账号邮箱给运营
2.运营在steam后台邀请该账号成为测试者
3.steam账号邮箱会接收到邀请邮件,需要点击接受邀请

图片1

4.运营在steam后台确认后,把该steam账号添加到对应游戏组,即可拥有该游戏权限
5.研发重新登录steam账号后查看是否已拥有目标游戏

图片2

5.2 本地开发测试

5.2.1 本地测试方式一

在应用未上线时,如果需要在本地进行开发测试,可以在本地exe的同级目录,增加一个steam_appid.txt,内容为steam应用的apppid(appid向运营获取),如steam的appid为3141480,则内容如下图:

图片3

完成steam_appid.txt添加后,运行steam客户端,此时就可以直接运行本地exe进行SDK相关api的接入测试了。

注意:开发完成后打包时,需要移除steam_appid.txt

5.2.2 本地测试方式二

cp打个exe包(此时可以不接sdk),然后让运营上传到steam后台,cp从steam上下载此游戏,然后通过游戏设置-管理-浏览本地文件,找到游戏下载路径。cp可以使用本地开发调试包进行替换,然后从steam上启动此游戏进行测试。

iShot_2024-08-21_15.04.37

iShot_2024-08-21_15.07.37

5.3 日志调试与沙盒支付

SDK的日志默认是关闭状态的,开启日志后会在程序目录下生成winglog.log日志文件,可以查看SDK的日志信息。

开启SDK调试日志:
1.SDK日志的开启需要提供设备的ClientId,在用户的隐藏目录AppData下找到SharedConf配置文件,以文本的形式查看文件可以得到ClientId值。
具体路径:C:\Users\用户名\AppData\Local\WingSteamExeSdk\SharedConf
文本内容参考:{“ClientId”:”5c56b3400000000000000e0a76c72″}
2.把ClientId的值提供给运营,运营在后台操作加入测试设备
3.重启已接入SDK的程序,进行SDK相关操作,即可在winlog.log查看SDK输出的相关日志信息。

沙盒支付:
同上面一样,加入测试设备后,重启已接入SDK的程序,即可进行沙盒支付进行支付相关测试

6.状态码说明

状态码 说明
200 操作成功
-400 一般错误
-401 SDK未初始化
-402 Steam初始化失败
-403 Steam登录授权超时
-404 Steam登录授权失败
-405 未登录
-500 服务器异常
-501 服务器异常:json解析异常
400 失败
500 服务器内部故障
501 所请求接口或页面未实现
4010 无效appId: appId不存在或未开启
4011 无效osign:osign校验失败
4012 请求已过期:ots校验失败
4013 第三方平台验证失败
4017 用户不存在(没有找到)
4019 无效orderId
4020 订单验证失败
4023 未找到渠道信息
4025 汇率转换失败
4026 支付渠道已关闭
4029 登录渠道已关闭
5005 该设备不能支付或者不允许支付
5006 支付过程中出错

WingSteamExeSDK 使用指南(1.0.1)_bak_20240821

wapublisher No Comments

1.简介

WingSteamExeSDK主要是为满足PC端Steam平台Windows的游戏需要,为此类游戏提供基于Steam平台的登录、支付、数据收集等通用功能。以下文档中会把WingSteamExeSDK简称为SDK。

2.集成

2.1.SDK库选择

SDK提供了多个版本的库文件,可以根据项目需求使用。

序号 平台 是否MT编译 lib库文件 SDK下载
1 x86 wingsdk.lib 下载
2 x64 wingsdk64.lib 下载
3 x86 wingsdk_mt.lib 下载(推荐)
4 x64 wingsdk64_mt.lib 下载

MT编译版本:已经内置VC运行库内容,不依赖于外部VC运行库。
普通(MD)编译版本:该版本会使用附带的vcruntime140.dll,msvcp140.dll,vcruntime140_1.dll这几个文件。

对应的dll版本:

版本 包含文件 备注
x86 libcrypto-3-wing.dll
libssl-3-wing.dll
sdkencryptedappticket.dll
steam_api.dll
wingsdk.dll
msvcp140.dll
vcruntime140.dll
x64 ibcrypto-3-x64-wing.dll
libssl-3-x64-wing.dll
sdkencryptedappticket64.dll
steam_api64.dll
wingsdk64.dll
msvcp140.dll
vcruntime140.dll
vcruntime140_1.dll
x86_mt libcrypto-3-wing-mt.dll
libssl-3-wing-mt.dll
sdkencryptedappticket.dll
steam_api.dll
wingsdk_mt.dll
x64_mt libcrypto-3-x64-wing-mt.dll
libssl-3-x64-wing-mt.dll
sdkencryptedappticket64.dll
steam_api64.dll
wingsdk64_mt.dll

2.2.项目集成

以VisualStudio项目工程为例

1.下载最新版本SDK压缩包,并解压
2.SDK头文件引入
1)复制include文件夹及其内容到项目中,主要包含wing目录下的wing_api.h头文件
2)右键项目->属性->C/C++->常规->附加包含目录,填入include文件夹路径,例如include文件夹是复制到项目根目录下,则路径可以填写:$(ProjectDir)include

图片1

图片2

3.SDK库文件引入
1)复制lib文件夹及其内容到项目中,并在项目属性页->链接器->常规->附加库目录,中填入lib文件夹路径,例如lib文件夹是复制到项目根目录下,则路径可以填写:$(ProjectDir)lib
2)在项目属性页->链接器->输入->附加依赖项中填入sdk的lib文件,如果是x86编译,则填入wingsdk.lib,如果是x64编译,则填入wingsdk64.lib,如果使用mt版本,则选择对应带mt后缀lib文件。
图片3

图片4

4.SDK的Api使用
1)在项目中引入。以前面步骤的配置路径作为示例,那么引入的路径为 #include “wing/wing_api.h”
2)在项目中使用。wing_api.h的接口为命名空间+方法的使用方式,例如:sdk的初始化方法使用,WingProxy::Init(“appId”,“appKey”,[](int code,string msg,string data){});

5.项目编译后,需要把sdk用到的dll文件复制到编译后的exe程序目录中,否则项目无法正常运行。具体版本对应的dll文件,参考前面dll版本文件对应表。例如x86的dll内容如下图:

图片5

6.运行程序

2.3.三方库版本

三方库 版本 包含dll(只列举x86版本) 功能
OpenSSL 3.1.3 libcrypto-3-wing.dll
libssl-3-wing.dll
网络请求
SteamSDK 1.5.8 steam_api.dll
sdkencryptedappticket.dll
Steam平台SDK

3.接口说明

3.1.使用方式

sdk的api采用命名空间+方法的形式定义的,WingProxy是所有sdk接口的命名空间,以支付是否可用方法为例,使用方式:

3.2.回调函数

sdk接口的参数中,除了一些常见类型参数,在wing_api.h中还声明了WingCallback回调函数,参数说明如下:

参数 类型 说明
code int 状态码,具体取值参考《状态码说明》章节
msg std::string 状态码说明
data std::string Json字符串,里面包含该接口会返回的字段,例如登录接口登录成功后返回的data内容:{“msg”:”token refreshed”,”code”:200,”isFirstLogin”:0,”userId”:7822920,”token”:”30_o1hejvBB22LKMu”}

4.SDK接口

4.1.初始化

调用下面接口对SDK进行初始化,建议在程序开始时首先调用,确保后续其他sdk接口可以正常使用

参数说明:

参数 类型 必填 说明
appId std::string Y appId,具体值从运营处获取
appKey std::string Y appKey,具体值从运营处获取
WingCallback WingCallback Y 回调函数

代码示例:

4.2.退出程序

调用下面接口对SDK内资源进行释放,必须在程序退出前调用。

4.3.登录

使用下面接口进行登录

参数说明:

参数 类型 必填 说明
WingCallback Y 回调函数

WingCallback的data内容字段说明:

字段名 类型 必填 说明
userId long Y 用户Id
token string Y 在线token

代码示例:

4.4.退出登录

调用下面接口退出账号

4.5.检查支付是否可用

进行支付之前,需要先判断支付是否可用

返回值为bool类型,true 表示支付可用,false表示支付不可用。

4.6.购买商品

进行支付之前,需要先判断支付是否可用

参数说明:

参数 类型 必填 说明
productId std::string Y WINGSDK平台的商品ID
extInfo std::string Y CP 扩展信息字段,限长512(JSON格式),WING服务器到CP服务器发货通知时原样返回给CP。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为标准JSON,参数名为 deliverUrl,参考格式{ “deliverUrl”:” http://game.com/deliver.do”, “otherInfo”:”otherInfo”,“merId”:””}merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。无内容建议传入空字符串“”
WingCallback Y 回调函数

WingCallback的data内容字段说明:

字段名 类型 必填 说明
orderId std::string Y 订单ID
productId std::string Y WINGSDK平台的商品ID
currency std::string Y 基准货币
amount long long Y 基准货币价格
quantity int Y 购买数量,目前一般都是1
extInfo std::string N 扩展信息字段,内容与该方法传入的extInfo相同
status int Y 1表示支付成功,其他表示支付失败

代码示例:

4.7.游戏必要参数设置

WINGSDK包括serverId等游戏参数,这些参数主要用于数据跟踪和统计。
该部分参数必须严格按照文档进行设置,在后续的接口中会使用到这些参数,没有按照要求配置会导致部分接口调用失败。

参数设置时机除了按照说明设置,另外需要特别注意在游戏启动时的设置时机,具体参考 流程要求

4.7.1 设置服务器ID

当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务

注意:设置服务器id的操作在每次选服后都需要进行,必须在调用其他事件前设置

4.7.2.设置GameUserId

当游戏角色ID发生改变时,需要调用设置接口设置新的gameUserId,例如成功登录账号后、切换账号成功后

注意:
1.必须在调用其他事件前设置。
2.游戏角色ID是游戏角色在游戏中的ID,不是WINGSDK自身的UserId。
3.若未创角前拿不到游戏角色ID,可以先设置-1,创角后再设置一次正确的角色ID

4.7.3.设置用户等级Level

当用户角色等级发生改变时,需要调用设置等级接口设置新的等级,例如开始进入游戏、等级提升等。

注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级,必须在调用其他事件前设置。

4.7.4.设置玩家游戏昵称

设置游戏玩家的昵称,调用接口:

注意:
1.当玩家登录、登出游戏,或修改昵称时,需要及时调用这个接口设置玩家昵称。
2.调用该接口设置昵称后,玩家进行购买时会自动记录昵称到订单信息中。

4.8.数据收集

4.8.1.流程要求

WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:

图片6

注意:

1.以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:WingProxy::SetServerId()、WingProxy::SetGameUserId()、WingProxy::SetLevel()、WingProxy::SetNickName()、ghw_user_import事件、ghw_user_create事件。

2.其它的事件如ghw_level_achieved、ghw_self_tutorial_completed等请根据对应业务逻辑,在对应业务发生时调用接口发送。

序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 SetServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 SetGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 SetLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
4 SetNickName 设置玩家昵称 标记玩家当前的游戏昵称 玩家设置昵称后
5 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用SetServerId、SetGameUserId、SetLevel接口
6 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用SetServerId、SetGameUserId、SetLevel接口
7 ghw_user_info_update 更新用户信息 更新用户信 玩家信息更新时 需要先调用SetServerId、SetGameUserId、SetNickname接口
8 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
9 ghw_self_lv_x 更新关键等级 更新关键等级 关键等级到达时 属于自定义事件
10 ghw_self_tutorial_completed 完成新手任务 完成新手任务 完成新手任务时 属于自定义事件

4.8.2.发送事件

使用下面接口发送事件

参数说明:

参数 类型 必填 说明
eventName const std::string& Y 事件名称
params const std::string& N 事件参数,可以不传,默认空。以json字符串的形式传递。例如需要设置isFirstEnter为1,则应该传递内容为:{“isFirstEnter”:1}。
eventValue double N 事件价值,可以不传,默认无。

代码示例:

4.8.3.预定义事件

4.8.3.1.ghw_user_import导入用户事件(进服)

说明:导入用户事件,玩家第一次进某个服时调用

参数名 类型 说明 必填 备注
isFirstEnter int 是否第一次进服 Y 0->否;1->是;默认为0

注意:发送ghw_user_import事件前需调用设置服务器ID接口更新服务器id、设置gameUserId接口更新游戏用户id
代码示例:

4.8.3.2.ghw_user_create 创建角色

说明:创建游戏角色,游戏角色创建时调用

参数名 类型 说明 必填 备注
nickname string 角色名(昵称) Y
registerTime long long 创建时间 Y 注册时间戳,13位数,单位为毫秒(1970以后)
gender number 角色性别 N 0 女,1 男,2 未知
roleType string 角色类型 N
vip number 等级 N
bindGameGold number 绑定钻石 N
gameGold number 用户钻石数 N
fighting number 战斗力 N
status number 状态 N 状态标识,-1: 锁定,1:未锁定

代码示例

4.8.3.3.ghw_user_info_update 更新用户信息

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 角色名称 Y 无昵称时,可填写空字符串
vip int 等级 N
status int 状态 N 状态标识,-1:锁定,1:未锁定

代码示例

4.8.3.4.ghw_level_achieved 等级增长事件

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score number 账户分数 N
fighting number 战斗力 N

注意:发送ghw_level_achieved事件前需调用设置用户等级level接口更新用户等级信息。

4.8.4.自定义事件

如果发送的事件不属于预定义事件范围,事件发送时会自动补上ghw_self_前缀,例如关键等级5的事件名称传入,lv_5,最终发送的事件名称为ghw_self_lv_5。

4.8.4.1.ghw_self_lv_x关键等级事件

代码示例:

4.6.4.2.ghw_self_tutorial_completed完成新手任务

5.调试日志

SDK的日志默认是关闭状态的,开启日志后会在程序目录下生成winglog.log日志文件,可以查看SDK的日志信息。

开启SDK调试日志:
1.SDK日志的开启需要提供设备的ClientId,在用户的隐藏目录AppData下找到SharedConf配置文件,以文本的形式查看文件可以得到ClientId值。
具体路径:C:\Users\用户名\AppData\Local\WingSteamExeSdk\SharedConf
文本内容参考:{“ClientId”:”5c56b3400000000000000e0a76c72″}
2.把ClientId的值提供给运营,运营在后台操作加入测试设备
3.重启已接入SDK的程序,进行SDK相关操作,即可在winlog.log查看SDK输出的相关日志信息。

6.状态码说明

状态码 说明
200 操作成功
-400 一般错误
-401 SDK未初始化
-402 Steam初始化失败
-403 Steam登录授权超时
-404 Steam登录授权失败
-405 未登录
-500 服务器异常
-501 服务器异常:json解析异常
400 失败
500 服务器内部故障
501 所请求接口或页面未实现
4010 无效appId: appId不存在或未开启
4011 无效osign:osign校验失败
4012 请求已过期:ots校验失败
4013 第三方平台验证失败
4017 用户不存在(没有找到)
4019 无效orderId
4020 订单验证失败
4023 未找到渠道信息
4025 汇率转换失败
4026 支付渠道已关闭
4029 登录渠道已关闭
5005 该设备不能支付或者不允许支付
5006 支付过程中出错