コンテンツにスキップ

IAP v4 初期化

IAP v4を使用するには、購入前に一度IAP初期化をリクエストする必要があります。IAP初期化をリクエストすると、アプリクライアントで利用可能なストア情報が結果値として返されます。

ストア情報

ストア情報はIAPV4Type列挙型として定義されており、フィールドの説明は次のとおりです。

フィールド名 説明
APPLE_APPSTORE Apple App Store
GOOGLE_PLAYSTORE Google Play Store
HIVE_LEBI Lebi Store
ONESTORE ONE Store
AMAZON_APPSTORE Amazon App Store (SDK v4のみ利用可能)
SAMSUNG_GALAXYSTORE Samsung Galaxy Store
HUAWEI_APPGALLERY Huawei App Gallery
HIVESTORE PG (Windows用Unity、iOS、Android対応)
ANIMATE_GO animate Games Online (Android専用)
DMM DMMポイントストア。WindowsでDMM GAME PLAYERを介して実行した場合に使用します。
  • HIVESTORE PGは商品検索と購入のみをサポートしており、クライアントベースの領収書検証はサポートされていません。
  • DMM決済は、WindowsでDMM GAME PLAYERを介して実行した場合にのみ使用し、DMMポイントに基づいて動作します。

ストアでアプリサービスが終了しても、既存ユーザーがゲームプレイを継続するには、ゲーム内通貨ストアにアクセスできる必要があります。そのため、アプリでは現金決済ストアとゲーム内通貨ストアを必ず分けて設計する必要があります。IAP v4初期化で返される結果値はゲーム内ストアにアクセスするためのものではないため、目的と異なる使い方をしないでください。

DMM決済ご利用前の確認事項

DMM決済は、WindowsでDMM GAME PLAYERを介して実行した場合に使用します。本ドキュメントのDMM関連の内容はWindows環境を前提としています。DMMログインと管理トークンの制約については、先にDMMログインを参照してください。

DMM決済は、ユーザーがチャージしたDMMポイントで商品を購入する決済方式です。決済リクエストと復元の流れはIAP v4の一般的な購入フローに従いますが、DMMポイント残高の確認やポイントチャージの誘導といったDMM専用の分岐処理が併せて動作します。そのため、Windows DMM環境でも既存のIAP v4フローを維持しながら、DMMポイントに基づく決済条件を併せて処理します。

事前準備: コンソール登録

DMM認証を使用するには、先にDMMでログインを参照してください。

DMM決済の特徴

決済は、専用の決済画面UIなしでpurchase()呼び出し後、即座に確定されます。ただし、サーバー側の処理状況によっては、購入直後にレシートがすぐに返されない場合があり、この場合はrestore()でレシートを再度取得してください。

DMM決済APIの呼び出しには、有効な管理トークンonetime_tokenが必要です。トークンの有効期間、自動更新、期限切れ時の処理などについては、DMMログインを参照してください。

IAPv4を初期化する

IAP v4を初期化するには、IAPV4クラスのmarketConnect()メソッドを呼び出す必要があります。

以下はIAP v4を初期化するためのサンプルコードです。

APIリファレンス: hive.IAPV4.marketConnect

using hive;    
    IAPV4.marketConnect((ResultAPI result, List marketIdList) => {    
         if (result.isSuccess()) {    
            // call successful    
        }    
});
#include "HiveIAPV4.h"

FHiveIAPV4::MarketConnect(FHiveIAPV4OnMarketConnectDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<EHiveIAPV4Type>& MarketIds) {
        if (Result.IsSuccess()) {
                // call successful 
        }
}));

APIリファレンス: IAPV4::marketConnect

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    IAPV4::marketConnect([=](ResultAPI const & result, vector const & marketIdList) {    
         if (result.isSuccess()) {    
            // call successful    
         }    
});

APIリファレンス: IAPV4.marketConnect

import com.hive.IAPV4    
    import com.hive.ResultAPI    
    IAPV4.marketConnect(object : IAPV4.IAPV4MarketInfoListener {    
         override fun onIAPV4MarketInfo(result: ResultAPI, iapV4TypeList: ArrayList<IAPV4.IAPV4Type>?) {    
             if (result.isSuccess) {    
                 // call successful    
             }    
         }    
})

APIリファレンス: com.hive.IAPV4.marketConnect

import com.hive.IAPV4;    
    import com.hive.ResultAPI;    
    IAPV4.INSTANCE.marketConnect((result, iapV4TypeList) -> {    
         if (result.isSuccess()) {    
             // call successful    
         }    
});

API リファレンス: IAPV4Interface .marketConnect

import HIVEService    
    IAPV4Interface.marketConnect() { result, marketIdList in    
        if result.isSuccess() {    
        // call successful    
        }    
}

APIリファレンス: HIVEIAPV4::marketConnect

#import <HIVEService/HIVEService-Swift.h>    
    [HIVEIAPV4 marketConnect: ^(HIVEResultAPI *result, NSArray<NSNumber *> *marketIdList) {    
         if ([result isSuccess]) {    
            // call successful    
         }    
}];

初期化結果の確認

複数のストアを使用する場合、コールバックで渡されるmarketListにはHiveコンソールに設定されたストアが含まれ、ストア初期化の成功可否に応じてコールバックは次のように分かれます。

  • すべてのストア、または一部のストアのみ接続に成功した場合: ResultAPIは成功を返し、marketListには接続に成功したストアのみが渡されます。
  • すべてのストア接続に失敗した場合: ResultAPIはエラーコードを返し、marketListは値なし(null)を返します。

たとえば、HiveコンソールにApp StoreとPG(Hive Store)の両方を設定したアプリで、PG(Hive Store)の接続のみに失敗した場合:

  • ResultAPI: 成功を返す
  • marketList: [APPLE_APPSTORE](成功したストアのみ渡される)
Warning

marketConnect()メソッドの呼び出しに失敗した場合、商品一覧の照会や購入を正常に進められません。失敗の原因は次のとおりです。

  • デバイスアカウントログインが正常に行われていない
  • Google Play Store、Apple App Storeなどのストアプラットフォームアプリへのログインが正常に行われていない
  • HiveコンソールでApp IDに対するストア設定が正常に行われていない

ResultAPIが成功を返しても、コンソールに設定したすべてのストアが接続されたわけではありません。コンソールに設定したストア数とmarketListのストア数が異なる場合、一部のストア接続に失敗しているため、返されたmarketList内のストアのみで以降の決済フローを進めてください。

ResultAPIが失敗を返した場合(全体失敗)は、アプリクライアントで成功コールバックを受け取るまで再試行する、またはエラー状況(ストア利用不可)をポップアップでユーザーに表示するなどの対応を独自に実装する必要があります。

関連コードは IAP v4 Result API Guide を参照してください。

Notes for initialization

Hive SDK v4 Unity Windows 25.8.0以降、Google Play向けWindowsアプリをサポートし、GOOGLE_PLAYSTOREストアを利用できます。開発時は次に注意してください。

Hive SDK v4 iOS 26.3.2以降ではPG(HIVESTORE)を利用できます。

Google Play for native PC の初期化失敗への対応(Hive SDK v4 Unity Windows 26.4.2 以降)

Play Games PC SDK の初期化に失敗して終了が必要な場合、強制終了ではなく IAPV4.marketConnect コールバックで結果を通知します。これはアプリが終了のタイミングと方法を自ら制御できるようにするためです。

Play Games PC SDK の初期化失敗(kActionRequiredShutdownClientProcess)時、IAPV4.marketConnect コールバックでは IAPV4PlayStoreActionRequiredShutdown(-6100706) の結果コードが通知されます。

この結果コードを受信した場合は、できるだけ早くアプリのプロセスを終了することを推奨します。ResultAPI.needExit()true を返すため、needExit() を使用して終了が必要かどうかを判定できます。プロセスを終了すると、Play Games PC SDK 側でユーザーサポートのための後続処理が行われます。