コンテンツにスキップ

DMM GAMES 連携ガイド

アプリにDMM GAMESを連携するには、事前契約を締結する必要があります。契約締結後、以下のガイドを参照して実装してください。

アプリの実行環境に応じたDMM GAMES連携のサポート範囲は以下のとおりです。

  • PC: ストアリリース向けの認証および決済機能をすべてサポートします。
  • モバイル: IdPログイン認証手段の連携のみサポートします。

事前準備

1. DMM Developer Siteで資格情報を発行し、キー値を確認

  • PC: DMM ClientGame Developer Siteで発行された3つのキー値を確認します。
    • App ID(アプリID)、Consumer Key(コンシューマーキー)、Consumer Secret(コンシューマーシークレット) - **ゲーム管理 > ゲーム情報 > 基本情報**で確認 image
    • DMMコンソールでアプリを登録する際、決済方式はAPI方式を選択してください。
  • モバイル: DMM資格情報を発行します。

    • DMM GAMES開発者コンソールにパッケージ名、アプリ情報などのモバイルアプリ情報を先に登録した後、以下の資格情報を発行します。DMM認証はOpenSocial系とAuthSDK系の2種類の資格情報を使用します。
    区分 キー 説明
    OpenSocial appId OpenSocialアプリID。makeRequestのopensocial_app_id値であり、署名検証にも使用します。
    OpenSocial consumerKey、consumerSecret 署名用consumer資格情報。アプリ登録後、DMMコンソールで確認します。
    AuthSDK clientId、clientSecret、secretKey OAuth2ログイン資格情報。デバイス側のDMM AuthSDKが使用し、Hiveサーバーには送信されません。DMMへ別途申請して発行を受けます。
    AuthSDK redirectUri OAuth2コールバックスキーム。DMMがclientIdにバインドし、申請時に併せて提供します。

2. App IDの準備

  • App Center > App ID Management > New App IDで、OSとストアに合わせてApp IDを作成します。PC環境の場合、OSはWindows、ストアはDMM GAMESを選択します。
  • App ID例: com.[会社名].[プロジェクト名].windows.dmm

3. 認証設定

4. 決済設定


DMMログインを実装する

PC実行環境連携(DMM GAME PLAYER実行環境)

ログイン/ログアウトを参照して実装します。

Warning

実行パラメータが存在しない場合は、アプリを実行しないでください。

DMM GAME PLAYERを経由せずに実行され、実行パラメータviewer_id、onetime_tokenが渡されない場合は、アプリを実行せず終了などで処理してください。パラメータの受け渡し方式の詳細は、DMM GAMES Developer SupportのDMM GAMES PLAYERサービス方針を参照してください。

アプリ実行環境がPC(DMM GAME PLAYER)の場合、DMMログイン連携で考慮すべき事項は以下のとおりです。

  • DMM GAME PLAYERランチャーが渡す実行パラメータviewer_id、onetime_tokenをHive SDKが受け取り、DMMアカウントログインを処理します。別途ログインUIは表示されず、暗黙的にログインします。そのため、アプリ側でDMM実行環境向けのログインフローを別途実装せず、DMMアカウントログイン処理を連携します。
  • DMMログインは、暗黙的ログインメソッドAuthV4.Helper.signInまたはAuthV4.signIn(ProviderType.DMM)で行います。ログインに成功すると自動ログインセッションが保存され、以降はAuthV4.signIn(ProviderType.Auto)でもログインできます。ログイン結果PlayerInfoのDMM provider情報で、ユーザー識別子viewer_idベースのproviderUserIdを確認してください。
  • DMM GAME PLAYERを通じて実行され、ランチャーパラメータが渡された場合、初回1回の制限なく暗黙的ログインは常にDMMアカウントで動作し、明示的ログインUIであるshowSignInは使用しません。一般的なWindowsの暗黙的ログイン動作は「暗黙的ログイン動作: PC」を参照してください。
  • 管理トークンonetime_tokenは、DMMポリシーに従い90分間有効です。Hive SDKが内部で自動更新するため、別途実装する必要はありません。ただし、ネットワークが長時間切断されるなどして更新に失敗し、トークンが完全に期限切れになった場合、SDK単体では復旧できません。アプリを再起動して新しいトークンを発行してください。決済などのDMM API呼び出しには有効な管理トークンが必要です。
  • DMM GAME PLAYERで実行する場合、ログアウトメソッドsignOutは使用しないでください。DMMはランチャーベースの自動ログインとして動作するため、IdP選択UIであるshowSignInも使用しません。

DMM認証は、ユーザーがWindowsでDMM GAME PLAYERを通じてアプリを実行する際に使用する認証方式です。ランチャーベースの自動ログインとして動作し、明示的ログインUIのIdP選択リストには表示されません。

モバイル実行環境連携

モバイルDMMログインは、Google、Appleなど他のIdPと同様にAuthV4.signIn(ProviderType.DMM)呼び出しで使用し、DMM SDKの初期化・ログイン・署名検証連携はproviderが内部で処理します。

hive_config.xmlにキーを設定

以下のサンプルコードを参照し、hive_config.xmlファイルのprovidersタグに値を入力します。Sandbox、商用(Service)の例のうち、使用環境のdevelopmentModeに合うブロックを1つだけ適用してください。

<!-- Sandbox設定 -->
    <properties>
    <!-- Hive SDK共通設定省略 -->

    <!-- Hive SDK認証設定: START -->
                <providers>
                        <!-- DMMでログイン (DMM) -->
                        <dmm appId="123456" developmentMode="sandbox" redirectUri="app-redirect-url" consumerKeySandbox="abcdefghijklmnop" consumerSecretSandbox="abcdefghijklmnopabcdefghijklmnop" />
                    </providers>
                    <!-- Hive SDK認証設定: END -->
        </properties>

    <!-- 商用(Service)設定 -->
    <properties>
    <!-- Hive SDK共通設定省略 -->

                    <!-- Hive SDK認証設定: START -->
                <providers>
                                    <!-- DMMでログイン (DMM) -->
                                <dmm appId="123456" developmentMode="service" redirectUri="app-redirect-url" consumerKey="abcdefghijklmnop" consumerSecret="abcdefghijklmnopabcdefghijklmnop" />
                    </providers>
<!-- Hive SDK認証設定: END -->
</properties>

hive_config.xmlキー一覧(Android、iOS)は以下のとおりです。

キー 値 必要な場合
appId アプリ識別子 常時
developmentMode sandboxまたはservice 常時
consumerKey consumer key serviceの場合
consumerSecret consumer secret serviceの場合
consumerKeySandbox consumer key sandboxの場合
consumerSecretSandbox consumer secret sandboxの場合
redirectUri アプリに設定されたredirect url 常時
adult trueまたはfalse iOSの場合

secretKey、clientId、clientSecret設定に関する考慮事項は以下のとおりです。

  • secretKey、clientId、clientSecretの3つの設定値はsetConfigurations() APIで設定してください。
  • setConfigurations() APIで設定した情報はランタイムメモリにのみ保持されるため、アプリ起動ごとに呼び出す必要があります。
  • hive_config.xmlファイルに設定値が存在しても、ランタイムでsetConfigurations() APIにより設定した値が優先適用(上書き)されます。
  • setConfigurations() APIによる機密キー値設定は、以下のサンプルコードを参照してください。

    using hive;
    
    // HiveConfigType.dmmSecretKey
    // HiveConfigType.dmmClientId
    // HiveConfigType.dmmClientSecret
    Configuration.setConfigurations(HiveConfigType.dmmSecretKey, "***");
    
    #include <HIVE_SDK_Plugin/HIVE_CPP.h>
    using namespace std;
    using namespace hive;
    
    // HiveConfigType::dmmSecretKey
    // HiveConfigType::dmmClientId
    // HiveConfigType::dmmClientSecret
    Configuration::setConfigurations(HiveConfigType::dmmSecretKey, "***");
    
    import com.hive.Configuration
    
    // Configuration.HiveConfigType.dmmSecretKey
    // Configuration.HiveConfigType.dmmClientId
    // Configuration.HiveConfigType.dmmClientSecret
    Configuration.setConfigurations(Configuration.HiveConfigType.dmmSecretKey, "***")
    
    import HIVEService
    
    // HiveConfigType.dmmSecretKey
    // HiveConfigType.dmmClientId
    // HiveConfigType.dmmClientSecret
    ConfigurationInterface.setConfigurations(.dmmSecretKey, "***")
    
    #import <HIVEService/HIVEService-Swift.h>
    
    // HiveConfigTypeDmmSecretKey
    // HiveConfigTypeDmmClientId
    // HiveConfigTypeDmmClientSecret
    [HIVEConfiguration setConfigurations: HiveConfigTypeDmmSecretKey value: @"***"];
    

Android DMM IdP設定

Android IdP追加を参照してDMMログインライブラリを追加します。その後、以下の順序でAndroid DMM IdP設定を行ってください。

  1. redirectUri(scheme)設定

    redirect_uriはcomXXX://authのようなカスタムスキームであり、clientIdの申請時に併せて提出し、DMM認証を受けて使用する必要があります。この値はclientIdにバインドされるため、認証されていない値を使用すると、ログイン時にDMMエラーE210019 (error_redirect_uri_unavailable)が発生します。

    build.gradleでredirect schemeを注入します。

    manifestPlaceholders += [hiveDmmRedirectScheme: "comXXX"]
    
  2. Gradle依存関係・リポジトリ設定

    ルートsettings.gradleのdependencyResolutionManagement { repositories }にDMM Mavenリポジトリを追加します。Gradleリポジトリ宣言は伝播しないため、アプリビルドで宣言されていない場合、DMM SDK(link-id-sdk、AuthSDK)の解決に失敗します。

    maven { url 'https://repos-app.games.dmm.com/' }
    
    3. ログイン/ログアウトを参照して実装します。

iOS DMM IdP設定

iOS IdP追加を参照してDMMログインライブラリを追加します。その後、ログイン/ログアウトを参照して実装します。


DMM決済を実装する

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

実装手順

  1. Billing > IAP v4初期化を参照して実装します。
  2. Billing > 商品リスト照会と購入を参照して実装します。
  3. レシート検証を参照して実装します。
  4. DMMログイン開発時の考慮事項
    1. DMM決済は、別途決済画面UIなしですぐに確定されます。購入直後にレシートが返されないPending状態の場合、IAPV4.restoreを呼び出してレシートを再取得した後、検証と支給処理を進めてください。購入後のレシート検証と商品支給処理の全体フローは他のストアと同一です。詳細はレシート検証を参照してください。
    2. DMM決済API呼び出しには、有効な管理トークンonetime_tokenが必要です。トークンの有効期間、自動更新、期限切れ時の処理などはDMMログインを参照してください。
    3. DMM決済も複数数量購入をサポートします。quantityパラメータを含むIAPV4.purchase(marketPid, iapPayload, quantity, onIAPV4PurchaseCB)を呼び出し、同一商品を一度に複数購入してください。

DMMポイント

DMMポイント残高照会

IAPV4.getBalanceInfoを呼び出すと、ユーザーが使用できるDMMポイント残高を照会します。購入前に事前に残高を確認したり、ショップ画面に残高を表示したりする場合に使用します。コールバックでResultAPIと整数型残高balanceを受け取ります。getBalanceInfoはPC Windows環境のDMM決済でのみ使用でき、その他のマーケットで呼び出すと未サポートのNOT_SUPPORTED結果が返されます。

呼び出しに成功すると、balanceに現在使用可能なDMMポイント残高が格納されます。呼び出しに失敗した場合は、ResultAPIで失敗原因を確認してください。

using hive;

IAPV4.getBalanceInfo((ResultAPI result, int balance) => {
    if (result.isSuccess()) {
        // balance: 使用可能なDMMポイント残高
    }
});
#include "HiveIAPV4.h"

FHiveIAPV4::GetBalanceInfo(FHiveIAPV4OnBalanceDelegate::CreateLambda([this](const FHiveResultAPI& Result, int32 Balance) {
    if (Result.IsSuccess()) {
        // Balance: 使用可能なDMMポイント残高
    }
}));
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace hive;

IAPV4::getBalanceInfo([=](ResultAPI const & result, int balance) {
    if (result.isSuccess()) {
        // balance: 使用可能なDMMポイント残高
    }
});

DMMポイント不足時のチャージ誘導

購入時にポイント残高が不足している場合、purchaseコールバックはIAPV4DmmInsufficientPointBalance結果コードを返します。この場合、アプリでDMMポイントチャージページをブラウザに表示し、チャージを案内してください。

DMMポイントチャージページURLはhttps://point.dmm.com/choice/pay?basket_service_type=freegameです。

Caution

上記のチャージページURLはDMMから提供された値であり、DMMポリシーにより変更される場合があります。最新URLおよびbasket_service_typeなどのパラメータ値はDMM側の案内を確認してください。