en zh

Unreal Plugin

SamsungIAP_Unreal_plugin_v6.1.4.zip
(8.79MB) May 17, 2023

The Samsung IAP Unreal plugin comes with all the content necessary for your integration.
The guide explains how to use the Samsung In-App Purchase (IAP) functionality by integrating the Samsung IAP Unreal Engine Plugin.


Get Started

This section explains how to use the Samsung In-App Purchase(IAP) functionality by integrating the Samsung IAP Unreal Engine Plugin.

The Samsung IAP Unreal Engine Plugin supports Unreal Engine version 4.18 or higher.

Install the Plugin

Copy and enable the Unreal Engine Plugin.

If a <unreal_project_directory>/Plugins folder does not exist, create it.

From the Samsung IAP Unreal plugin, copy the SamsungIAP folder and its contents to <unreal_project_directory>/Plugins.

In the Edit->Plugins menu, enable the Samsung IAP Plugin.

Add Samsung IAP dependency

Modify the <unreal_project_name>.Buld.cs file by adding "SamsungIAP" to the PublicDependencyModuleNames section.

Sample code:

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

Integrate Samsung IAP Functionality

This section explains the fundamental aspects of integrating Samsung IAP functionality into your Android app by making plugin method calls to support the offering and sale of in-app products.

Include IAP Header File

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

Sample code:

#include "IAP.h"

Set IAP operating mode

Use the setOperationMode() method to set Samsung IAP to one of three operating modes:

SetOperationMode() Setting

Description

IAP_MODE_PRODUCTION

  • Mode for normal and beta release
  • Successful or failure results can be returned for all requests
  • Caution: Successful purchase requests and payment transactions result in financial billing of the user
    IAP_MODE_TEST

    • Mode for app development and testing
    • Successful or failure results can be returned
    • Successful purchase requests for licensed testers do not result in payment transactions or financial billing
    • Purchase requests for users who are not licensed testers result in an error message displayed
    • For requests that succeed, successful results are returned
    • For requests that fail (for example, due to network issues), failure results are returned
    IAP_MODE_TEST_FAILURE

    • Mode for app development and testing
    • Failure results are returned for all requests
    • Purchase requests do not result in in payment transactions or financial billing

    During app development and testing:

    • Either test mode can be set.
    • IAP_MODE_PRODUCTION mode must not be set.

    For beta release:

    • IAP_MODE_PRODUCTION mode must be set.
    • All beta testers download paid beta apps for free.
    • Beta testers who are not given permission will be financially billed for in-app products, and they can test in-app purchase functionality.
    • Beta testers who are given permission get in-app products for free, but they cannot test purchase functionality.

    For validation testing and for normal release:

    • IAP_MODE_PRODUCTION mode must be set prior to submitting an app and its in-app products to validation testing.

    Sample code:

    samsung::IAP::setOperationMode(IAP_MODE_TEST);
    

    Query previously purchased products

    Use the getOwnedList() method to get information about some or all of the products the user has already purchased:

    GetOwnedList() Setting

    Description

    PRODUCT_TYPE_ITEM

    Returns all purchased non-consumable items, and consumable items that have not been consumed

    PRODUCT_TYPE_SUBSCRIPTION

    Returns all purchased subscriptions with active subscriptions

    PRODUCT_TYPE_ALL

    Returns all purchased non-consumable items, consumable items that have not been consumed, and subscriptions with active subscriptions

    Sample code:

    samsung::IAP::getOwnedList(PRODUCT_TYPE_ALL);
    

    After processing is complete, the onGetOwnedProducts callback is triggered, containing information about the specified purchased products and API call processing.

    Query Offered Samsung IAP Products

    Use the getProductsDetails() method and the following parameter settings to get information (including, localized description, price, and currency symbol) about some or all of the registered in-app products that are available for user purchase:

    • Specify one or more unique in-app product ID values (comma delimited) get information about the specified products.
    • Specify an empty string ("") gets information about all registered products.

    Sample code:

    //Get information about three in-app products
    samsung::IAP::getProductsDetails("com.mygame.product1, com.mygame.product2, com.mygame.product3");
    
    //Get information about all in-app products
    samsung::IAP::getProductsDetails("");
    

    After processing is complete, the onGetProductsDetails callback is triggered, containing information about the specified registered products and API call processing.

    Initiate a purchase and payment transaction

    Use the startPayment() method to initiate a purchase and payment transaction for a specified in-app product.

    You can specify your own pass-through parameter, and use it later to identify the purchase when verifying the purchase and payment transaction. You must specify whether or not a dialog box is to notify users when the transaction was successful.

    Sample code:

    //Start purchase and payment of an in-app product.
    samsung::IAP::startPayment("com.mygame.product1", "pass_through_value", true);
    

    After processing is complete, the onPayment callback is triggered,
    which contains information about the purchased product, the transaction, and API call processing.

    Enable a purchased consumable item to be purchased again

    Use the consumePurchasedItems() method and the purchase ID of a consumable in-app item to enable it to be purchased again (whether or not the user has actually used the item).

    Your app receives an item's purchase ID in the onPayment and onGetOwnedList callbacks. Sample code:

    //Consume Purchased Items
    samsung::IAP::consumePurchasedItems(purchase_id);
    

    After processing is complete, the onConsumePurchasedItems callback is triggered, which contains information about the consumed item and API call processing.

    Listen to callback events

    Implement an IAP Listener class to receive information in all the Samsung IAP callback events.

    Listener declaration sample code:

    class SamsungIAPListener : public samsung::IAPListener {
    public:
        void onGetProducts(int result, const FString& msg, const std::vector<samsung::ProductVo>& data);
        void onGetOwnedProducts(int result, const FString& msg, const std::vector<samsung::OwnedProductVo>& data);
        void onPayment(int result, const FString& msg, const samsung::PurchaseVo& data);
        void onConsumePurchasedItems(int result, const FString& msg, const std::vector<samsung::ConsumeVo>& data);
    };
    

    Listener implementation sample code:

    using namespace std;
    using namespace samsung;
    
    void SamsungIAPListener::onGetProducts(int result, const FString& msg, const vector<ProductVo>& data) {
        
        for(auto& i : data) {
            print(FString::Printf(TEXT(" Name: %s"), *i.mItemName));
        }    
    }
    
    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));
        }    
    }
    
    void SamsungIAPListener::onPayment(int result, const FString& msg, const PurchaseVo& data) {
        
        print(FString::Printf(TEXT("Item: %s"), *data.mItemName));    
    }
    
    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));
        }    
    }