EN

# 五、平台接口

# 5.1 初始化

如果您需要使用奇遇平台功能,必须先按照以下内容初始化奇遇SDK:

Plugins-Online Subsystem QIYU-Platform栏填入初始化参数:

图5.1 Platform初始化参数界面

参数说明

  • App ID, App Secret:请您在登录奇遇开发者网站后,点击“管理 - 我的应用 - 新增”创建您的应用,系统将会给每个应用生成唯一App ID和App Secret。

    创建应用后,点击 “API” 查看App ID,App Secret信息

  • 配置文件

要使用Online Subsystem QIYU插件,需要在项目目录下的Config文件夹内找到Android文件夹(没有则创建),在Android文件夹中找到一个名为AndroidEngine.ini(没有则创建)的文件,然后添加或者修改相关条目信息:

[OnlineSubsystem]
DefaultPlatformService=QIYU

[OnlineSubsystemQIYU]
bEnabled=true

路径示例:YourProjectDir/Config/Android/AndroidEngine.ini

  • Blueprint
函数名称 蓝图 功能 原接口(已弃用)
Init QIYUSDK 初始化SDK
output:
Code:返回码
Was Successful:是否成功
RequesSDKInit()
  • C++

    接口为异步接口,下面是提供的的示例代码:

static void InitQIYUSDK(FQIYUInitQiyuSDKCompleteResult&& OnSuccess, FQIYUInitQiyuSDKCompleteResult&& OnFailure);

MyActor.h

class AMyActor
{
...
UFUNCTION()
		void OnSuccessResults(const FString& Code, bool bWasSuccessful);
	UFUNCTION()
		void OnFailureResults(const FString& Code, bool bWasSuccessful);
	UPROPERTY(BlueprintAssignable)
		FQIYUInitQiyuSDKCompleteResult OnSuccess;
	UPROPERTY(BlueprintAssignable)
		FQIYUInitQiyuSDKCompleteResult OnFailure;...

};
----

MyActor.cpp

void AMyActor::Test()
{
OnSuccess.AddDynamic(this,&AMyActor::OnSuccessResults);
OnFailure.AddDynamic(this,&AMyActor::OnFailureResults);
UOnlineSubsystemQIYUUtils::InitQIYUSDK(MoveTemp(OnSuccess), MoveTemp(OnFailure));
}

void AMyActor::OnSuccessResults(const FString& Code, bool bWasSuccessful)
{
// todo
}

void AMyActor::OnFailureResults(const FString& Code, bool bWasSuccessful)
{
// todo
}
返回码 原因
S0000 成功
S9000 系统异常
S9001 应用ID或秘钥为空
B1009 获取Token失败
B3021 应用ID或秘钥错误

# 5.2 奇遇账户

在应用程序中获取奇遇用户的帐户状态和信息。

  • Blueprint
函数名称 蓝图 功能 原接口(已弃用)
Is Logged In 获取设备账号登录状态
Input:
In Player Controller :用户控制器
Output:
True:账号已登录
False:账号未登录
RequestisAccountLogin
GetQIYUIdentity 获取账号信息:
Input:
In Player Controller :用户控制器
Output:
Results:返回用户信息
Error:调用失败时的错误代码
Was Successful:是否成功
RequestAccountInfo
  • C++
  1. 请求获取账号是否登录
static bool UKismetSystemLibrary::IsLoggedIn(const APlayerController * SpecificPlayer);
  1. 请求获取账号信息

​ 接口为异步接口,下面提供代码参考:

static void UOnlineSubsystemQIYUUtils::GetQIYUIdentity(APlayerController* InPlayerController, FQIYUIdentityCompleteResult&& OnSuccess, FQIYUIdentityCompleteResult&& OnFailure);
错误码 原因
S0000 调用成功
S9000 系统异常

# 5.3 深度链接

当您有两个独立的应用程序时:例如一个单人游戏和一个多人游戏。如果你想要在两个应用程序中实现应用程序深度链接,用户可以从单人应用程序加入多人游戏应用。 深度链接需要在发出请求的应用程序和目标应用程序中进行集成。接下来的部分将描述这两个应用程序所需的实现。

  • Blueprint
函数名称 蓝图 功能 原接口(已弃用)
Deeplink 获得深度链接信息:
Output:
Result:返回DeepLink信息
Code:成功码S0000
Was Successful:调用是否成功
Result节点:
RequestDeepLinkParam
LaunchOtherApp 请求切换到其他应用:
Input:
Appid :深度链接APPID
Key :深度链接Key
Value :深度链接值
RequestLaunchOtherApp
LaunchHome 返回Home:
Input:
Key :跳转应用的Key(当key的值为login 时,会跳转到登录界面)
Value :传入home的值
RequestLauchHome
  • C++
  1. 请求获取Deeplink信息

​ 接口为异步接口,下面提供代码参考:

static void UOnlineSubsystemQIYUUtils::GetDeepLink(FQIYUDeeplinkCompleteResult&& OnSuccess,FQIYUDeeplinkCompleteResult&& OnFailure)
  1. 跳转到其他app
static void UOnlineSubsystemQIYUUtils::LaunchOtherApp(const FString& AppId, const FString& Key,const FString& Value)
  1. 返回大厅
static void UOnlineSubsystemQIYUUtils::LaunchHome(const FString& Key,const FString& Value)

Launch Home 参数示例:

Key Value 备注
"store" "123456" 跳转到APPID为123456的游戏的商品详情页
"login" "" 跳转到登录界面

Deeplink返回码

返回码 原因
S0000 调用成功
S9000 系统异常

# 5.4 数据存档

在奇遇商店上线的内容,需要存档用户数据,防止用户在版本升级、卸载重装后丢失已有数据和档案。如果您的应用需要存档用户数据,请使用奇遇SDK提供的Prefs应用数据持久化功能,退出游戏前记得调用Save保存。

函数名称 蓝图 功能
Prefs_GetFloat(FString Key,float DefaultValue) 返回存档文件中的key对应的float值,不存在返回defValue
Prefs_GetInt(FString Key,int32 DefaultValue) 返回存档文件中的key对应的int值,不存在返回defValue
Prefs_GetString(FString Key,FString DefaultValue) 返回存档文件中的key对应的string值,不存在返回defValue
Prefs_SetFloat(FString Key,float Value) 设置给定key的float值
Prefs_SetInt(FString Key,int32 Value) 设置给定key的int值
Prefs_SetString(FString Key,FString Value) 设置给定key的string值
Prefs_HasKey(FString Key) 存档文件中的key存在返回true,否则返回false
Prefs_Save() 所有修改后,需要调用Save
Prefs_DeleteAll() 清空存档文件
Prefs_DeleteKey(FString Key) 删除存档文件中的key

注:

  • 奇遇设备支持多账号登陆和退登,所以在使用Prefs提供的方法时,需将奇遇账号信息连同需要存储的数据关联,以实现针对每个用户正确的档案数据。

  • QiyuPrefs为本地存档方案,支持应用升级、卸载重装后保留用户数据,并非“云存档”。

# 5.5 应用内支付

注:应用内支付需要用户先进行初始化操作。

# 初始化QiyuPay

函数名 蓝图 功能
Init QIYUPay img 初始化Pay
Output:
Code:返回码
Was Successful:是否成功
  • C++
static void InitQIYUPay(FQIYUInitQiyuPayCompleteResult&&OnSuccess,FQIYUInitQiyuPayCompleteResult&& OnFailure);
返回码 原因
S0000 初始化成功
S1000 SDK尚未初始化
S9000 系统异常
S9001 参数错误

# 获取商品列表

函数名 蓝图 功能
Read In App Purchase Information2 img 获取商品列表:
Input:
Product Identifiers:商品sku数组,当数组为空时获取全部商品。
Output:
In App Offer Information:返回的商品数组,包含商品的各种信息。
img 商品详情:
offer id:商品SKU
Title:商品名称
Regular Price:商品折扣价(单位为最小价格单位(分) )
Numeric Price:商品原价(单位为最小价格单位(分) )
Dynamic Dields:商品额外属性,是一个映射类型,其中的键ItemType的值为商品类型,例如
img
  • C++
void FTestStoreInterface::Test(UWorld* InWorld, const TArray<FString>& InOffersIds)
{
	auto OnlineSub = Online::GetSubsystem(InWorld, TEXT("QIYU"));
	if (OnlineSub != nullptr)
	{
		if (OnlineSub->GetIdentityInterface().IsValid())
		{
			LocalUserId = OnlineSub->GetIdentityInterface()->GetUniquePlayerId(0);
		}
		if (LocalUserId.IsValid())
		{
			if (OnlineSub->GetStoreV2Interface().IsValid())
			{
				for (const FString& OfferId : InOffersIds)
				{
					RequestOfferIds.Add(FUniqueOfferId(OfferId));
				}				
				OnlineSub->GetStoreV2Interface()->QueryOffersById(*LocalUserId, RequestOfferIds,
			FOnQueryOnlineStoreOffersComplete::CreateRaw(this, &FTestStoreInterface::OnQueryOnlineStoreOffersComplete));
			}
		}
	}
}

回调函数:

void FTestStoreInterface::OnQueryOnlineStoreOffersComplete(bool bWasSuccessful, const TArray<FUniqueOfferId>& OfferIds, const FString& ErrorString)
返回码 原因
S0000 查询成功
S1001 支付接口未初始化
B1001 查询结果为空
S9000 系统异常
S9001 参数错误

注:物品的价格单位为最小的价格单位(例如人民币的分),开发者使用时可以按自身的需求自行转换。

# 商品下单购买

函数名 蓝图 功能
Place Order img 下单购买物品:
Input:
In Product Identifier :商品的sku
Output:
Results:返回一个订单号
Code:调用失败时的错误代码
Was Successful:是否成功
  • C++
static void UOnlineSubsystemQIYUUtils::PlaceOrder(const FString& Sku, FQIYUPlaceOrderCompleteResult&& OnSuccess, FQIYUPlaceOrderCompleteResult&& OnFailure)
返回码 原因
S0000 成功下单
S1001 支付接口未初始化
B3007 设备识别码无效
B4010 您已购买过该SKU
B4009 您有一笔待支付订单
B1003 authCookie失效
B3019 商品不存在
S9000 系统异常
S9001 参数错误

# 查询订单结果

函数名 蓝图 功能
Query Order Result img 查询订单结果:
Input:
In Order Id:当成功下单时返回的订单号
output:
Results:返回一个订单详情
Code:调用失败时的错误代码
Was Successful:调用是否成功
img 订单详情:
Output:
Order Id:订单ID
Pay Date:支付时间
Sku:购买的商品sku
Order Status:订单状态
Paid Amount:支付金额(单位为最小价格单位(分))

C++

static void UOnlineSubsystemQIYUUtils::QueryOrderResult(const FString& OrderID, FQIYUQueryOrderResultCompleteResult&& OnSuccess, FQIYUQueryOrderResultCompleteResult&& OnFailure)
返回码 原因
S0000 查询成功
S1001 支付接口未初始化
B1003 authCookie失效
B3019 商品不存在
B1001 查询结果为空
S9000 系统异常
S9001 参数错误

:物品的价格单位为最小的价格单位(例如人民币的分),开发者使用时可以按自身的需求自行转换。

# 查询单个商品的历史订单

函数名 蓝图 功能
Query History Orders img 查询某个商品的历史订单:
input:
In Sku Id:要查询的商品的Sku
In Page:要查询的页数
In Page Size:每页的订单数量
output:
Results:返回一个订单详情数组
Was Successful:是否成功
Code:调用失败时的错误代码
img 订单详情:
Order Id:订单ID
Pay Date:支付时间
Sku:购买的商品sku
Order Status:订单状态
Paid Amount:支付金额(单位为最小价格单位(分))

C++

static void UOnlineSubsystemQIYUUtils::QueryHistoryOrders(const FString& Sku, int32 CurrentPage, int32 PageSize, FQIYQueryHistoryOrdersCompleteResult&& OnSuccess, FQIYQueryHistoryOrdersCompleteResult&& OnFailure)
返回码 原因
S0000 查询成功
S1001 支付接口未初始化
B1003 authCookie失效
B3019 商品不存在
B1001 查询结果为空
S9000 系统异常
S9001 参数错误

:物品的价格单位为最小的价格单位(例如人民币的分),开发者使用时可以按自身的需求自行转换。