聚合渠道SDK-Unity&Harmony

文档修订记录

文档版本 文档更新日期 文档更新内容
3.3.55 2024.04.28 初版

接入准备

1.下载对接资源:点我下载

2.在团结引擎工程的Assets中导入UnityHarmonyFYSDK.package。

3.打开菜单栏的 HMSSeting - EditHMSSeting,修改配置参数

参数 类型 说明 是否必填
client_id string 登录AppGallery Connect平台,我的项目>项目设置>常规>应用>APP ID
app_id string 登录AppGallery Connect平台,我的项目>项目设置>常规>应用>Client ID
bundle_name string 登录AppGallery Connect平台,我的项目>项目设置>常规>应用>包名
FY_GAME_APPID string 星云开放平台>对接中心>SDK列表>App ID
FY_GAME_APPKEY string 星云开放平台>对接中心>SDK列表>App Key
FY_GAME_CHANNELID string 星云开放平台>对接中心>渠道打包>渠道配置>渠道ID
FY_GAME_ORIENTATION string 横屏:0;竖屏:1
FY_GAME_COMPANYID string 星云开放平台>对接中心>SDK列表>Company ID
FY_GAME_ENVIRONMENT string 不填

接口

  • 引入命名空间:
using FYSDK;
  • 要调用星云的聚合渠道SDK接口,主要使用以下方法:
public void CallFunc(string funcName, string paramsJson)
参数 类型 说明 是否必填
funcName string SDK的接口名称
paramsJson string 接口参数,JSON字符串

初始化(必接)

1.说明

  • 游戏需要在刚启动游戏的时候调用。

2.调用范例

Dictionary<string, string> paramsDict = new Dictionary<string, string>();
paramsDict["gameVersion"] = "x.x.x";
string paramsJson = JsonMapper.ToJson(paramsDict);

FYCombine.Instance.CallFunc("doInit", paramsJson);

3.参数说明

参数 类型 说明 是否必传
gameVersion string 游戏版本号

4.回调方法

doInit

登录(必接)

1.说明

  • 启动完游戏显示首页时调用。

  • 玩家点击游戏界面的「进入游戏」时,需要判断是否有登录成功,如有则可以进入游戏;否则再次调用登录接口,让玩家重新登录,直到登录成功。

2.调用范例

FYCombine.Instance.CallFunc("doLogin", "");

3.参数说明

4.回调方法

doLogin

支付(选接)

1.说明

  • 调用此接口将拉起支付界面

  • 建议游戏制定的商品标识格式为:com.feiyu.app_id.xxxx,以保证商品 id 的唯一性

  • 打开"星云平台->对接中心->SDK对接->SDK列表->基础接入参数->游戏支付回调地址",配置游戏服务端的支付回调地址,支付完成后会通过此地址回调支付结果
    图片

  • 客户端的支付回调不能作为支付成功的依据,不能在此处发放道具。判断支付是否成功要根据服务端的支付回调。具体的服务端回调请看服务端接入文档

  • 客户端的支付回调只可以用来控制游戏界面显示,例如loading框的关闭、遮罩层的关闭

  • 商品ID需要配置到华为后台,才能拉起支付

2.调用范例

Dictionary<string, string> paramsDict = new Dictionary<string, string>();
paramsDict["playerId"] = "xxx";
paramsDict["playerName"] = "xxx";
paramsDict["playerLevel"] = "1";
paramsDict["vipLevel"] = "1";
paramsDict["serverId"] = "1";
paramsDict["serverName"] = "xxx";
paramsDict["goodsId"] = "xxx.xxx.xxx";
paramsDict["goodsName"] = "xxx";
paramsDict["payAmount"] = "100";
paramsDict["gameOrderId"] = "xxx";
paramsDict["notifyExt"] = "";
paramsDict["paySignType"] = "md5";
paramsDict["notifyURL"] = "";
string paramsJson = JsonMapper.ToJson(paramsDict);

FYCombine.Instance.CallFunc("doPay", paramsJson);

3.参数说明

参数 说明 是否必传
playerId 玩家ID。对应服务端支付回调的player_id参数
playerName 玩家名字
playerLevel 玩家等级,数字格式
serverId 服务器ID,数字格式 。对应服务端支付回调的server_id参数
serverName 服务器名字
goodsId 商品标识,建议格式:com.feiyu.app_id.xxxx,例:com.feiyu.20001.store1 。对应服务端支付回调的goods_id参数
goodsName 商品名称
payAmount 支付金额,单位:分 (海外游戏传美分),数字格式。对应服务端支付回调的total_amount参数
gameOrderId 游戏订单号,由游戏生成并管理。服务端支付回调会回传,游戏需进行唯一性校验,防止重复下发商息给玩家。字符串类型,50个字符内。 对应服务端支付回调的out_trade_no参数
paySignType 签名类型,游戏服务器接收回调通知签名方式,需要游戏传递:md5/rsa
vipLevel vip等级,数字格式,如果游戏没有vip等级则传"0"
notifyExt 额外参数,游戏的透传参数可通过此参数传递,支付完成后平台服务端会回调此参数给游戏服务端。对应服务端支付回调的notify_ext参数
notifyURL 1.通过该值能在客户端动态传递服务端支付回调地址;2.若您在客户端传递了该地址,则支付完成后会通过此地址回调支付结果;3.若您同时也在星云后台配置了支付回调地址,会优先回调客户端传递的地址;4.需要先配置支付回调可信域名,请前往"星云后台->对接中心->回调配置->支付回调可信域名"进行配置,否则无法回调成功;5.若您在客户端传递了该地址,在游戏包体发布之前,建议您仔细检查该参数是否配置正确,以防止包体发布后支付出现问题

4.回调方法

doPay

切换账号(必接)

1.说明

  • 在需要切换账号时调用,该接口会弹出登录窗口,让用户重新登录

  • 与「登录接口」不同的是,「登录接口」非首次登录会自动登录,而此接口必定会弹出登录窗口

2.调用范例

FYCombine.Instance.CallFunc("doSwitchAccount", "");

3.参数说明

4.回调方法

doSwitchAccount

用户中心(必接)

1.说明

  • 需在游戏内的设置界面,放置一个「用户中心」按钮,点击按钮调用此接口

  • 调用此接口将弹出用户中心界面

2.调用范例

FYCombine.Instance.CallFunc("doUserCenter", "");

3.参数说明

4.回调方法

登出(选接)

1.说明

  • 登出 SDK,并回调登出回调给游戏

2.调用范例

FYCombine.Instance.CallFunc("doLogout", "");

3.参数说明

4.回调方法

doLogout

第三方收集信息(选接)

1.说明

  • 用于收集第三方SDK收集游戏数据。
  • 如果有出"鸿蒙"渠道,请对接此接口,否则上架渠道会被拒。

2.调用范例

Dictionary<string, string> paramsDict = new Dictionary<string, string>();
paramsDict["method"] = "xxx"; //method (进入区服:enterServer,创建角色:createRole ,角色升级:levelUp)
paramsDict["playerId"] = "xxx"; //角色ID
paramsDict["playerName"] = "xxx"; //角色名称
paramsDict["playerLevel"] = "xxx"; //角色等级
paramsDict["serverId"] = "xxx"; //区服ID
paramsDict["serverName"] = "xxx"; //区服名称
paramsDict["playerTime"] = "xxx"; //角色创建时间,必须取服务端时间,必须为时间戳

string paramsJson = JsonMapper.ToJson(paramsDict);
FYCombine.Instance.CallFunc("doCollectInfo", paramsJson);

3.参数说明

参数 说明 是否必传
method 进入区服:enterServer,创建角色:createRole ,角色升级:levelUp
playerId 角色ID
playerName 角色名称
playerLevel 角色等级,数字格式
serverId 区服ID,数字格式
serverName 区服名称
playerTime 角色创建时间,必须取服务端时间,必须为时间戳

4.回调方法

回调

引入命名空间:

using FYSDK;

对接范例:

FYCombine.CallbackAction = (funcName, resultJson) =>
{
    Debug.Log($"###CallbackAction>>funcName:{funcName}>>resultJson:{resultJson}");
    if (funcName == "doInit")
    {
        Debug.Log("###初始化回调");

        // 初始化回调
        // 游戏应在确保收到此回调后才能调用聚合渠道模块的其他接口
        // 游戏不需管是否初始化成功,只要关心有没有收到初始化回调即可,也不需要重新调用初始化,SDK内部自己会处理初始化失败的情况
    }
    else if (funcName == "doLogin")
    {
        Debug.Log("###登录回调");

        // 收到此回调的「登录成功」时,需将登录参数传到游戏服务器,再请求聚合服务端做登录校验,校验成功才算登录成功,具体校验方式请看[服务端接入文档](https://help.737.com/archives/docs/detail/channel_combine/sdk/server)
        // 游戏收到此回调的「登录取消」或「登录失败」时,需向用户提供再次登录的按钮,以便用户能重新登录
        // 假如在游戏正在进行中,收到此回调的「登录成功」通知时,并且 open_id 变了,此时需要退出到登录首屏,切换成另外一个角色,并重新进入游戏
    }
    else if (funcName == "doPay")
    {
        Debug.Log("###支付回调");

        // 此回调不能作为支付成功的依据,故游戏不能在此处发放道具,游戏需要根据服务端的支付回调作为支付是否成功的依据,具体的服务端回调请看「服务端接入文档」https://help.737.com/archives/docs/detail/channel_combine/sdk/server
        // 此回调只可以用来控制游戏界面显示,例如 loading 框的关闭、遮罩层的关闭
    }
    else if (funcName == "doSwitchAccount")
    {
        Debug.Log("###切换账号回调");

        // 与登录回调的处理方式一致
    }
    else if (funcName == "doLogout")
    {
        Debug.Log("###退出回调");

        // 点击用户中心里面切换账号按钮主动触发
        // 游戏在此处判断是否在游戏内,如果在游戏内则退出到登录首页
        // 初始化后设置回调监听
    }

};
  • 回调参数:
参数 说明
funcName 回调的方法名,通过此参数区分是哪个方法回调过来的
resultJson 回调的数据信息,为JSON格式,需要自行解析
  • resultJson 统一格式如下:
属性名 说明
status 状态码,Int格式
message 提示消息,String格式
dataMap 回调参数,字典格式
  • status 状态码说明(除以下给出的状态码之外,若有返回其他状态码均可以认为是失败状态):
错误码 说明
0 成功
10002 登录取消
11003 取消支付
11005 第三方渠道没有给明确的客户端支付状态,建议游戏提示“如若购买成功,稍后即到账”类似的不是很明确的提示

各个回调方法的 dataMap 参数说明:

  • doInit:
参数 类型 说明
device_id string 设备ID,此 ID 为 SDK 生成的标识设备的唯一ID,卸载重装后会重置
app_id string 星云APP ID
channel_id string 星云渠道ID,如果游戏要对渠道做差异化处理时,可以使用此ID作为区分;渠道ID列表,请查看星云平台->对接中心->渠道打包->渠道配置;
passport_code string 通行证标识,用来标明该渠道用什么通行证进行登录,如果游戏要对不同通行证做差异化处理时,可以使用此标识作为区分,例如:feiyu3、uc、yingyongbao,所有渠道的通行证标识请看渠道版本信息
payment_code string 支付标识,用来标明该渠道用什么支付方式,一般和通行证代号一致,有一些特殊的渠道登录和支付不一致,例如:苹果渠道,登录是飞鱼通行证(feiyu3),支付则是苹果支付(apple),所有渠道的支付标识请看渠道版本信息
  • doLogin:
参数 类型 说明
open_id string 游戏维度唯一用户ID,一般游戏只用到openId即可
platform string 星云APP ID
payment_code string 支付标识
channel_id string 渠道ID
token string 登录校验码,有效时间 7天,请在有效时间内完成校验,如超出时间需重新调用登录接口获取新校验码
passport_code string 通行证标识
union_id string 全渠道唯一用户ID
identity_age string 身份证年龄(有可能空)
identity_birthday string 身份证生日,格式:"1991-12-31"(有可能空)
user_id string 第三方用户ID
  • doPay:
参数 类型 说明
order_id string 星云订单号
game_order_id string 游戏订单号
  • doSwitchAccount:

与doLogin回调参数一致

  • doLogout:

无回调参数

导出测试

  • 参考此文档,配置好团结引擎的鸿蒙环境

  • 在Unity工程对接好SDK的接口和回调之后,打开菜单栏 File - Build Settings,切换 Platform 为 OpenHarmony,点击Export导出鸿蒙 DevEco Studio 工程

  • 在 DevEco Studio 工程中配置好证书后,运行到纯血鸿蒙设备中进行测试

FAQ