Samsung IAP
Software Development Kit
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
Download the Samsung IAP Unreal Engine Plugin file.
Create Plugins folder inside the <unreal_project_directory> directory if it does not exist.
Copy the SamsungIAP folder and its contents to Plugins folder from the Samsung IAP Unreal plugin file.
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 应用程序中的基础方面。
Note 有关 Samsung IAP 方法调用的详细信息,请参阅 编程指南 .
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() 方法可设置操作模式。
Caution 在提交应用程序以供进行 Beta 版测试 或正常发布之前,请确保操作模式设置为 IAP_MODE_PRODUCTION。换言之,仅当卖家门户中的应用程序状态为正在注册 或正在更新 时,才必须设置 IAP_MODE_TEST 或 IAP_MODE_TEST_FAILURE。
模式
说明
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);
获取用户拥有的项目
Requirement 请确保在启动应用程序以检查未消耗的项目或订阅可用性时,始终调用 getOwnedList()。
使用 getOwnedList() 方法可获取有关用户已购买的部分或所有项目的信息:
类型
说明
item
消耗性项目和非消耗性项目
subscription
自动定期订阅项目
all
消耗性项目、非消耗性项目和自动定期订阅项目
Note 不会 返回先前报告为已消耗的所购买消耗性项目。不会 返回具有已过期订阅的所购买订阅项目。
代码片段
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 使用此值来检测欺诈性支付行为。
Note 此方法在 Samsung IAP Unreal Engine Plugin v6.5.0 中已废弃:
samsung::IAP::startPayment("com.mygame.product1", "passThroughParam");
passThroughParam, 是应用程序分配给项目购买和付款交易的唯一标识符,从 plugin v6.5.0 开始已废弃。
代码片段
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,可以启用再次购买(无论用户是否实际使用了该项目)。
您的应用程序将在 onPayment 和 onGetOwnedList 回调中收到项目的购买 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.
Note 在一个 consumePurchasedItems() 或 acknowledgePurchases() 方法调用中验证项目的购买并报告所有未报告的项目之后,我们建议立即报告已购买的消耗性项目,以避免发生系统过载或故障。
侦听回调事件:
// 侦听器声明示例代码
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));
}