決済

Prev Next

Classic/VPC環境で利用できます。

決済

GAMEPOT SDKが提供する In-App決済機能を使用して、ゲーム内アイテムを販売することができます。決済の前に、ストア別環境設定にそのストアに合わせて設定する必要があります。さらに、ダッシュボード > 決済 > In-App にアイテムが追加されていない場合、「ProductID not found」というエラーが発生します。

Android

(AOS) In-App情報の取得

決済の際は、画面に決済情報と現地の通貨情報を表示する必要があります。以下の関数を使用すると現在の決済通貨や名前などを取得できます。正常に取得できない場合は、コンソール設定をご確認ください。

Kotlin:

import com.nbase.sdk.Store

NBase.getProductItems() {products, e -> 
    if (e != null) {
        Log.e("NBase", e.message)
    } else {
        // In-Appアイテム情報
        Log.e("NBase", products)
    }
}

Java:

NBase nBase = NBase.INSTANCE;

nBase.getProductItems((products, e) -> {
    if (e != null) {
        Log.e("NBase", "getProductItems fail: " + e.getMessage());
    } else {
        if (products != null) {
            Log.e("NBase", "getProductItems success: " + products.toString());
        }
    }
    return null;
});
  • Callback
Key Type Description
id String 製品 ID
productName String 製品名
title String 製品のタイトル
price Float 製品の価格
localizedPrice Float 現地化された価格
productId String 製品の固有 ID
productType String 製品タイプ
productDescription String 製品の説明
currency String 通貨の単位

(AOS) 決済リクエスト

取得した In-App情報にある productIdで決済をリクエストできます。

Kotlin:

import com.nbase.sdk.Store

NBase.purchase(activity, Store.GOOGLE, productId, metadata, options) { purchase, e -> 
    if (e != null) {
        Log.e("NBase", e.message)
    } else {
        Log.e("NBase", purchase)
    }
}

Java:

import com.nbase.sdk.Store;

NBase nBase = NBase.INSTANCE;
nBase.purchase(activity, storeId, productId, metadata, options, (purchase, e) -> {
    if (e != null) {
        Log.e("NBase", "purchase fail: " + e.getMessage());
    } else {
        if (purchase != null) {
            Log.e("NBase", "purchase success: " + purchase.toString());
        }
    }
    return null;
});
  • Parameter
Key Type Description Required
activity Activity 現在のアクティビティ O
storeId Store ストア ID (下記表を参照) O
productId String 商品 ID(ダッシュボード → 決済 → In-Appアイテム) O
metadata String メタデータ X
options String 決済オプション機能 X
Key Description
Store.GOOGLE Google Play Store
Store.ONE ONE Store
Store.GALAXY Galaxy Store
Store.AMAZON Amazon Store
Store.HUAWEI Huawei Store
  • Callback
Key Type Description
id String ID
orderId String 注文 ID
storeId String ストア ID
productId String 商品 ID
billingKey String 決済キー
signature String 署名
originalJson String オリジナル JSON
developerPayload String 開発者ペイロード
packageName String パッケージ名
isAcknowledged bool 確認の有無
purchaseState String 購入状態
purchaseTime String 購入時間
quantity String
recurringState String 定期決済状態
currency String 通貨
country String
paymentId String 決済 ID
price Float 価格
iapVersion String In-App決済バージョン
playerId String プレイヤー ID
serverId String サーバ ID
level Int レベル
userdata String ユーザーデータ
metadata String メタデータ
options String オプション
authCode String 認証コード

iOS

(iOS) In-App情報の取得

決済の際は、画面に決済情報と現地の通貨情報を表示する必要があります。以下の関数を使用すると現在の決済通貨や名前などを取得できます。正常に取得できない場合は、コンソール設定をご確認ください。

Swift:

let products = NBase.getProductItems()

Objective-C:

[NBaseBridge.shared getProductItems:^(NSString * _Nullable result) {
    NSLog(@"getProductItems result: %@", result);
}];
  • Callback
Key Type Description
id String 製品 ID
productId String 製品の固有 ID
productName String 製品名
productType String 製品タイプ
currency String 通貨
price Float64 製品の価格
localizedPrice String 現地化された価格
productDescription String 製品の説明

(iOS) 決済リクエスト

取得した In-App情報にある productIdで決済をリクエストできます。

Swift:

NBase.purchase(productId: productId, metadata: metadata, options: options) { result in
    switch result {
    case .success(let data):
        NBase.showToast(message: data?.encodeToJson() ?? "")
    case .failure(let error):
        NBase.showToast(message: error.errorDescription ?? "")
    }
}

Objective-C:

[NBaseBridge.shared purchase:productId metadata:metadata options:options :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
    if (error) {
        NSLog(@"purchase Error: %@", error.localizedDescription);
    } else {
        NSLog(@"purchase succeeded with result: %@", result);
    }
}];
  • Parameter
Key Type Description Required
productId String 商品 ID(ダッシュボード > 決済 > In-Appアイテム) O
metadata String メタデータ X
options String 決済オプション機能 X
  • Callback
Key Type Description
orderId String 注文 ID
receipt String レシート
signature String 署名
productId String 商品 ID
storeId String ストア ID
country String
quantity Int
paymentId String 決済 ID
currency String 通貨
serverId String サーバ ID
playerId String プレイヤー ID
userdata String ユーザーデータ
metadata String メタデータ
options String 決済オプション
authCode String 認証コード
level Int レベル
price Float64 価格

Unity

(Unity) In-App情報の取得

決済の際は、画面に決済情報と現地の通貨情報を表示する必要があります。
以下の関数を使用すると現在の決済通貨や名前などを取得できます。正常に取得できない場合は、コンソール設定をご確認ください。

NBaseSDK.NBase.getProductItems(Store.google.ToString(), (products, error) => 
{
    if (products != null && products.Count > 0)
    {
        // 製品リストをループします。
        foreach (var product in products)
        {
            // 各製品の情報をトーストメッセージで表示します。
            // 例では product.ToString()を呼び出していますが、
            // 実際は productの具体的な属性(例: 名前、価格など)を表示できます。
            NBaseSDK.NBase.showToast(product.ToString());
        }
    }
    else
    {
        // 製品リストが空の場合、ユーザーに通知します。
        NBaseSDK.NBase.showToast("製品リストが空です。");
    }
});
  • Callback
Key Type Description
Products[].id string 製品 ID
Products[].title string 製品のタイトル
Products[].productId string 製品の固有 ID
Products[].productType string 製品タイプ
Products[].productName string 製品名
Products[].productDescription string 製品の説明
Products[].currency string 通貨の単位
Products[].price float 製品の価格

(Unity) 決済リクエスト

取得した In-App情報にある productIdで決済をリクエストできます。

NBaseSDK.NBase.purchase(Store.google.ToString(), productId, metadata, options, (purchase, error) => 
{
    if (error != null)
    {
        Debug.Log(error.Message.ToString());
        return;
    }
    // 決済成功
});
  • Parameter
Key Type Description Required
storeId string ストア ID (下記表を参照) O
productId string 商品 ID(ダッシュボード → 決済 → In-Appアイテム) O
metadata string Metadata X
options string 決済オプション機能 X
Key Description
Store.google.ToString() Google Play Store
Store.one.ToString() ONE Store
Store.galaxy.ToString() Galaxy Store
Store.amazon.ToString() Amazon Store
Store.huawei.ToString() Huawei Store
  • Callback
Key Type Description
storeId string ストアの固有 ID
paymentId string 決済 ID
iapVersion string In-App決済バージョン
productId string 製品 ID
billingKey string 請求キー
signature string 署名
originalJson string オリジナル JSON
orderId string 注文 ID
developerPayload string 開発者ペイロード
packageName string パッケージ名
isAcknowledged bool 確認の有無
purchaseState int 購入状態
purchaseTime long 購入時間
price float 価格
quantity int
currency string 通貨の単位

トラブルシューティング

Q. ProductID not foundエラーが発生します。
A. ダッシュボード > 決済 > In-App にその商品 IDが登録されていることをご確認ください。

Q. 決済ができません。
A. ストア別環境設定を参照し、そのストアに合った設定が完了しているかご確認ください。

Q. (Android) java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/billingclient/api/BillingClient;
A. 以下のコードを追加してください。

<androidPackage spec="com.android.billingclient:billing:6.1.0" /> 

Q. (iOS) In-App情報を取得できません。
A. Apple Connectに登録された In-App商品情報とアプリ環境(Production/Sandbox)が一致していることをご確認ください。