en zh

Unreal 插件

Samsung IAP Unreal Engine Plugin v6.5.0
(11.1MB) April 20 2026

Samsung IAP Unreal Engine 插件附带了用于集成必需的所有内容。

将 Samsung IAP 集成到您的应用程序中

此部分介绍了如何通过集成 Samsung IAP Unreal Engine 插件方法来使用 Samsung 应用程序内购买 (IAP) 功能。

系统要求

要避免兼容性问题,插件需要以下 SDK:

Install Samsung IAP Plugin

  1. Download the Samsung IAP Unreal Engine Plugin file.

  2. Create Plugins folder inside the <unreal_project_directory> directory if it does not exist.

  3. Copy the SamsungIAP folder and its contents to Plugins folder from the Samsung IAP Unreal plugin file.

  1. Now open the editor and navigate to the Edit->Plugins menu and enable the Samsung IAP Plugin.

添加 Samsung IAP 依赖项

通过将 "SamsungIAP" 添加到 PublicDependencyModuleNames 部分中,以修改 <unreal_project_name>.Buld.cs 文件。

代码片段

PublicDependencyModuleNames.AddRange(new string[] {
    "Core", "CoreUObject", "Engine", "InputCore",
    "UMG", "Slate", "SlateCore",
    "SamsungIAP"
});

实施Samsung IAP

此部分介绍了如何通过进行插件方法调用以支持应用程序内项目的提供和销售,从而将 Samsung IAP 功能集成到您的 Android 应用程序中的基础方面。

Include IAP header file

Access the Samsung IAP API by including the IAP header file IAP.h in the related classes of your project.

代码片段

#include "IAP.h"

设置 IAP 操作模式

使用 setOperationMode() 方法可设置操作模式。

模式

说明

IAP_MODE_PRODUCTION

startPayment() 请求将按指定的方式处理,执行财务交易以使请求成功,并返回实际结果(成功或失败)。

注意:所有其他 IAP SDK 请求将按如下方式工作:
  • 只有在 IAP_MODE_PRODUCTION 模式下购买的项目才会视为已拥有的项目。

IAP_MODE_TEST

startPayment() 请求将按指定的方式处理,未发生财务交易除外(将不会针对项目购买向已许可的测试者计费),并且始终返回成功的结果
有关 IAP_MODE_TEST 模式下显示的付款窗口的详细信息,请参见付款窗口所示。

注意:所有其他 IAP SDK 请求将按如下方式工作:
  • 只有在 IAP_MODE_TEST 模式下购买的项目才会视为已拥有的项目。
  • 要购买应用程序内项目,测试者必须在卖家的卖家门户配置文件中注册为已许可测试者。在此模式下,已许可测试者始终可免费获取您的应用程序内项目。如果所有其他用户尝试购买应用程序内项目,将会显示错误消息。

IAP_MODE_TEST_FAILURE

所有 IAP SDK 请求将失败。
这旨在用作负面测试,以确保您的应用程序可以处理诸如输入和用户操作不正确这样的错误。

代码片段

samsung::IAP::setOperationMode(IAP_MODE_TEST);

获取用户拥有的项目

使用 getOwnedList() 方法可获取有关用户已购买的部分或所有项目的信息:

类型

说明

item

消耗性项目和非消耗性项目

subscription

自动定期订阅项目

all

消耗性项目、非消耗性项目和自动定期订阅项目

代码片段

samsung::IAP::getOwnedList("all");

处理完成后,将触发 onGetOwnedProducts 回调,其中包含有关指定的已购买项目和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onGetOwnedProducts(int result, const FString& msg, const std::vector<samsung::OwnedProductVo>& data);

// 侦听器实现示例代码
void SamsungIAPListener::onGetOwnedProducts(int result, const FString& msg, const vector<OwnedProductVo>& data) {
    
    for(auto& i : data) {
        print(FString::Printf(TEXT("Owned Item: %s"), *i.mItemName));
    }    
}

获取应用程序内项目详细信息

使用 getProductsDetails() 方法可获取有关部分或所有应用程序内项目(已在可供用户购买的应用程序中注册)的详细信息(例如项目 ID、价格和说明):

  • 指定一个或多个唯一的应用程序内项目 ID 值(逗号分隔),以获取有关所指定项目的信息。
  • 指定空字符串 ("") 以获取有关所有已注册项目的信息。

代码片段

//获取有关三个应用程序内项目的信息 
samsung::IAP::getProductsDetails("com.mygame.product1, com.mygame.product2, com.mygame.product3");

//获取有关所有应用程序内项目的信息
samsung::IAP::getProductsDetails("");

处理完成后,将触发 onGetProducts 回调,其中包含有关指定的项目和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onGetProducts(int result, const FString& msg, const std::vector<samsung::ProductVo>& data);

// 侦听器实现示例代码
void SamsungIAPListener::onGetProducts(int result, const FString& msg, const vector<ProductVo>& data) {
    
    for(auto& i : data) {
        print(FString::Printf(TEXT(" Name: %s"), *i.mItemName));
    }    
}

Purchase an in-app product

使用 startPayment() 方法可对指定的应用程序内项目启动购买和付款交易。

You can optionally specify the obfuscated account ID and profile ID in the request for startPayment(). The obfuscated account ID and profile ID are returned in the response. Galaxy Store 使用此值来检测欺诈性支付行为。

代码片段

samsung::IAP::startPayment("com.mygame.product1", "obfuscatedAccountId", "obfuscatedProfileId");

处理完成后,将触发 onPayment 回调,
其中包含有关已购买的项目、交易和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onPayment(int result, const FString& msg, const samsung::PurchaseVo& data);

// 侦听器实现示例代码
void SamsungIAPListener::onPayment(int result, const FString& msg, const PurchaseVo& data) {
    
    print(FString::Printf(TEXT("Item: %s"), *data.mItemName));    
}

Notify Samsung IAP that the purchase was processed

Consumable items

使用 consumePurchasedItems() 方法和消耗性应用程序内项目的购买 ID,可以启用再次购买(无论用户是否实际使用了该项目)。

您的应用程序将在 onPaymentonGetOwnedList 回调中收到项目的购买 ID。

代码片段

samsung::IAP::consumePurchasedItems("purchase_id");

处理完成后,将触发 onConsumePurchasedItems 回调,
其中包含有关已消耗的项目和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onConsumePurchasedItems(int result, const FString& msg, const std::vector<samsung::ConsumeVo>& data);

// 侦听器实现示例代码
void SamsungIAPListener::onConsumePurchasedItems(int result, const FString& msg, const vector<ConsumeVo>& data) {
    
    for(auto& i : data) {
        print(FString::Printf(TEXT("Owned Item: %s"), *i.mPurchaseId));
    }    
}

Non-consumable items and subscriptions

使用 acknowledgePurchases() 方法可确认已经向用户授予一个或多个已购买的非消耗性项目或订阅的权利。

代码片段

samsung::IAP::acknowledgePurchases("purchase_id");

After processing is complete, the onAcknowledgePurchases callback is triggered, which returns non-consumable items or subscription data.

侦听回调事件:

// 侦听器声明示例代码
void onAcknowledgePurchases(int result, const FString& msg, const std::vector<samsung::AcknowledgeVo>& data);

// 侦听器实现示例代码
void SamsungIAPListener::onAcknowledgePurchases(int result, const FString& msg, const vector<AcknowledgeVo>& data) {
    
    for(auto& i : data) {
        print(FString::Printf(TEXT("Owned Item: %s"), *i.mPurchaseId));
    }    
}

获取订阅的优惠资格要求

使用 getPromotionEligibility() 方法可返回为客户提供的订阅项目定价选项,例如免费试用期和初始优惠价。

指定一个或多个唯一订阅ID值(逗号分隔)。

代码片段

//Get promotional offers of items and subscriptions
samsung::IAP::getPromotionEligibility("subItemId_1, subItemId_2");

处理完成后,将触发 onGetPromotionEligibility 回调,其中包含有关指定的项目和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onGetPromotionEligibility(int result, const FString& msg, const std::vector<samsung::PromotionEligibilityVo>& data);

// 侦听器实现示例代码
void SamsungIAPListener::onGetPromotionEligibility(int result, const FString& msg, const vector<PromotionEligibilityVo>& data) {
    
    for(auto& i : data) {
        print(FString::Printf(TEXT("Owned Item: %s"), *i.itemID));
    }    
}

更改订阅计划

使用 changeSubscriptionPlan() 方法可允许客户将现有订阅更改为相同订阅项目的其他等级。

Proration Mode

Description

PRORATION_MODE_INSTANT_PRORATED_DATE

立即升级或降级订阅。剩余订阅时间将根据差价进行调整,并通过推迟下一次账单日的方式,将其计入新订阅周期。无需额外付款。

PRORATION_MODE_INSTANT_PRORATED_CHARGE

仅适用于升级的订阅。立即升级订阅,但账单周期不变。向用户收取剩余期限的差价。

PRORATION_MODE_INSTANT_NO_PRORATION

仅适用于升级的订阅。立即升级订阅,在续订时按新价格收费。账单周期不变。

PRORATION_MODE_DEFERRED

续订时升级或降级订阅。续订时按新价格收费。降级将始终按该模式执行。

请参见按比例调整模式,详细了解四种模式。

代码片段

//Change from one subscription plan to another
samsung::IAP::changeSubscriptionPlan("oldItemId", "newItemId", PRORATION_MODE_INSTANT_PRORATED_DATE, "obfuscatedAccountId", "obfuscatedProfileId");

处理完成后,将触发 onChangeSubscriptionPlan 回调,
其中包含有关已购买的项目、交易和 API 调用处理的信息。

侦听回调事件:

// 侦听器声明示例代码
void onChangeSubscriptionPlan(int result, const FString& msg, const samsung::PurchaseVo& data);

// 侦听器实现示例代码
void SamsungIAPListener::onChangeSubscriptionPlan(int result, const FString& msg, const PurchaseVo& data) {
    
    print(FString::Printf(TEXT("Item: %s"), *data.mItemName));    
}