Guide for Distribution to Countries and Regions Outside of South Korea

ONE store Service Configuration

  • Developers can sell their products in Korea and other countries/regions by registering their products once in the ONE Store Developer Center.

    • Developers who have already registered and are selling products on the existing Korean ONE Store only need to select distribution to additional countries and regions.

    • The ONE Store Developer Center automatically repackages the developer's registered app to create an APK for distribution outside Korea, and distributes it to ONE Store users.

  • The ONE Store client and server are separately configured for Korea and other countries/regions.

    • When your app calls the IAP SDK APIs, it automatically connects to the appropriate ONE Store client/server based on the user's service country/region.

    • When calling IAP Server APIs from your developer server, you must include the market identification code (x-market-code).

ONE store Installer Infomation & Market Classification Code

Service Country/Region
Installer Package Name
Market Classification Code

South Korea

  • com.skt.skaf.A000Z00040

  • com.kt.olleh.storefront

  • com.lguplus.appstore

MKT_ONE

Others

  • com.onestorecorp.gaa.storeapp

  • com.dti.folderlauncher

MKT_GLB

SDK

SDK Version

  • To distribute your app in regions other than Korea, ONE Store In-App Payment SDK V19 (API V6) or higher must be applied.

  • If you are using SDK V17, you need to upgrade the SDK.

  • If you are using SDK V16, you must register a new app with SDK V21 or higher applied.

ONE store Client Integration

  • The ONE Store in Korea and the ONE Store in regions other than Korea are provided as separate apps.

  • Existing apps using ONE Store SDK V19 or higher can be directly distributed to regions other than Korea.

Market Classification Code

Setting Developer Options for Store Selection

From IAP SDK 21.02.00, you can designate the store app integrated with the SDK by setting the android:value of onestore:dev_option as follows:

<manifest>
    <application>
        <meta-data android:name="onestore:dev_option" android:value="onestore_01" />
    </application>
</manifest>
android:value
Target Countries and Regions

onestore_00

South Korea (default)

onestore_01

Singapore, Taiwan

onestore_02

United States

StoreEnvironment API Feature Addition

The StoreEnvironment.getStoreType() API provides functionality to determine whether an application with the SDK has been installed via ONE Store.

Store Type Definition

The API returns a StoreType and has one of the following four values:

StoreType
value
description

StoreType.UNKNOWN

0

Unable to determine the app installation store (e.g., direct APK installation, unknown source).

StoreType.ONESTORE

1

Installed from ONE Store (or Developer Option is activated).

StoreType.VENDING

2

Installed from Google Play Store.

StoreType.ETC

3

Installed from a store other than ONE Store or Google Play.

How to Use the API

This API can be utilized by invoking StoreEnvironment.getStoreType().

import com.gaa.sdk.base.StoreEnvironment

val storeType = StoreEnvironment.getStoreType()

when (storeType) {
    StoreType.ONESTORE -> println("This app was installed from ONE Store.")
    StoreType.VENDING -> println("This app was installed from the Google Play Store.")
    StoreType.ETC -> println("This app was installed from a store other than ONE Store or Google Play.")
    StoreType.UNKNOWN -> println("The store information is unknown.")
}

Store Determination Criteria

This API determines the store through three methods:

  • Distributed via ONE Store market signature Determines if the app was installed from ONE Store by verifying distribution through ONE Store's market signature.

  • Based on Installer Package Name If not distributed via ONE Store's market signature, it uses the PackageManager.getInstallerPackageName() API to verify the store used during app installation.

  • When Developer Option (onestore:dev_option) is activated If onestore:dev_option is set, it always responds with StoreType.ONESTORE.

Examples of Use Cases

  • Applying UI Differentiation by Store

    • If payment systems provided by ONE Store differ from those of other app markets, you can configure different UIs..

if (StoreEnvironment.getStoreType() == StoreType.ONESTORE) {
    showOneStorePaymentUI()
} else {
    showDefaultPaymentUI()
}
  • Restricting Features by Store

    • You can set specific features to be available only on ONE Store.

if (StoreEnvironment.getStoreType() != StoreType.ONESTORE) {
    println("This feature is available only on ONE Store.")
    return
}
enableOneStoreExclusiveFeature()

Server API

Domain

If you are servicing only in Korea, domain changes are required.

  • For services limited to Korea: https://apis.onestore.co.kr

  • For services including regions other than Korea: https://iap-apis.onestore.net

Market Classification

  • The Market Classification Code (x-market-code) has been added to the request header.

  • When servicing regions other than Korea, you must add the market identification code to the header when making requests.

  • If the Market Classification Code is absent, it will be treated as an app for Korea.

<Example>

curl --location '{global domain}/v7/apps/com.sample/purchases/inapp/products/{productId}/{purchaseToken}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {accessToken}' \
--header 'x-market-code: {marketCode]'\
 
Market Code
Service Country/Region

MKT_ONE

South Korea

MKT_GLB

Others

PNS

  • For PNS, the message sending addresses for Korea and regions other than Korea are different.

  • Hence, if a firewall is in place, two firewall exceptions are necessary for each sending address.

3rd Party Payment

Server API

  • The 3rd party payment API version has been updated to V6.

  • If you are servicing regions other than Korea, domain changes are required.

    • For services limited to Korea: https://apis.onestore.co.kr

    • For services including regions other than Korea: https://iap-apis.onestore.net

  • Country/region information and currency codes have been added to the Request Body of the purchase history transmission API for 3rd-party payments.

  • When transmitting the 3rd-party payment transaction history, it should be sent with the amount in the currency in which the transaction was made.

  • The 3rd party payment purchase history has been updated. (send3rdPartyPurchase-p1)

  • When transmitting 3rd party payment purchase history that occurred in the United States, you must use the send3rdPartyPurchase-p1 specification.

  • The existing specification can be used without modification in countries/regions other than the United States, but it is scheduled to be deprecated in June 2025, so please use the new specification.

Settlement

  • Service fees must be wired based on the country/region registered at the time of signing up for the ONE store Developer Center.

    • If the member's country/region is South Korea, the transfer must be made in Korean Won (KRW). (However, for U.S. sales, the settlement must be remitted in USD to a separate account designated by the service provider in that country/region.)

    • If the member's country/region is other than South Korea, the transfer must be made in USD. (However, for U.S. sales, the settlement must be remitted in USD to a separate account designated by the service provider in that country/region.)

  • The exchange rate applied for calculating service fees is based on the exchange rate on the 1st day of the month following the sales month, as announced by Seoul Money Brokerage. (If the 1st day falls on a public holiday, the exchange rate of the previous business day will be applied.)

Products

Subscription Products

  • Subscription products are not available in regions other than Korea.

  • Even if subscription products are already registered, they will not be distributed to regions other than Korea.

  • For information on setting distribution countries/regions, local pricing, and multilingual settings, please refer to App Registration and Mgmt.

Last updated