コンテンツにスキップ

一致結果コールバックAPI

マッチングが完了すると、Hiveサーバーは開発者のサーバーからコールバックAPIを要求して、マッチング結果を配信し、レスポンス値を受け取ります。

コールバックAPIをリクエストして一致する結果を配信するための順序は次のとおりです。

  1. Hiveコンソールで**マッチ統合方法**をサーバーコールバックとして選択します
  2. Hiveコンソールにコールバックを受信するための開発者サーバーURLを登録します
  3. マッチングが完了すると、Hiveサーバーはマッチング結果を届けるために開発者サーバーにコールバックAPIをリクエストします
  4. 開発者サーバーがマッチング結果を正常に受信した場合、HTTPレスポンスステータスコード(HttpStatus 200)をHiveサーバーに返します

リクエストURL(開発者サーバーURL)

HiveコンソールでコールバックAPIをリクエストして一致する結果を受け取る開発者サーバーURLをAPIエンドポイントとして登録します。このURLは外部からアクセス可能な公開アドレスでなければなりません。

ヘッダーパラメータ

コールバックAPIリクエストを行う際のヘッダー値は次のとおりです。

フィールド名 説明 タイプ 必須
X-Match-Signature 送信されたデータのためにHMAC SHA-256アルゴリズムで暗号化された署名値 文字列 はい
Note

X-Match-Signatureの値を通じて、一致結果の信頼性を確認できます。

X-Match-Signatureの値は、以下の例のコード(Java)を使用して取得でき、コードで使用されるHMAC SHA-256キーの値はHiveコンソールで見つけることができます。

```java
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class MatchSignature {  
    private static final String HMAC_SHA_256 = "HmacSHA256";
    private static final String UTF_8 = "UTF-8";
    public String getSignature(String secret, String httpRequestBody) throws Exception {
            SecretKeySpec key = new SecretKeySpec(secret.getBytes(), HMAC_SHA_256);
            Mac mac = Mac.getInstance(HMAC_SHA_256);
            mac.init(key);
            byte[] source = httpRequestBody.getBytes(UTF_8);

            return new String(Base64.getEncoder().encode(mac.doFinal(source)), StandardCharsets.UTF_8);
    }
}
```

ボディパラメータ(コールバックAPIを介して配信される一致結果)

コールバックAPIリクエスト中に送信された一致結果データは以下の通りです。

フィールド名 説明 タイプ
gameIndex 完了したマッチのgameIndex値 int
matchId 完了したマッチのmatchId値 int
matchingInfos マッチを完了したアプリユーザーに関する情報の配列。`playerId`フィールドが`0`のユーザーはボットとして扱われます
  • matchingId: マッチID
  • privateInfos: プライベートマッチでマッチしたユーザーに関する情報の配列、timeoutPlayerInfosと同じ形式
  • teamInfos: チームマッチでマッチしたユーザーに関する情報の配列(teamIndex: チーム番号、playerInfos: timeoutPlayerInfosと同じ形式のチームメンバーに関する情報の配列)
json
timeoutPlayerInfos マッチングせずにタイムアウトしたアプリユーザーに関する情報の配列
  • extraData: マッチングリクエスト中に入力されたextraData
  • point: マッチングリクエスト中に入力されたポイント
  • playerId: マッチングリクエスト中に入力されたユーザープレイヤーID
json

コールバックAPIリクエストの例 (Hiveサーバー → 開発者サーバー)

curl --location 'HIVE 콘솔에 등록한 앱 개발사 API 엔드포인트' --header 'Content-Type: application/json' --header 'X-Match-Signature: nj2YlgGTlLXcAhrl6ijSgfD71gTWokBiM8WPn72xxg8=' --data '{
   "gameIndex": 1,
   "matchId": 1,
   "matchingInfos": [
       {
           "matchingId": "1:1_2024-06-05T05:43:28.91_1",
           "privateInfos": [
               {
                   "playerId": 100,
                   "point": 1000
               },
               {
                   "playerId": 101,
                   "point": 1000
               }
           ]
       }
   ],
   "timeoutPlayerInfos": []
}'

戻り値

HiveサーバーがコールバックAPIリクエストを通じて配信したマッチング結果が開発者のサーバーによって正常に受信された場合、HttpStatus 200をレスポンスとして返す必要があります。

開発者のサーバーからの応答によると、Hiveサーバーでは次のように処理されます。

  • HttpStatus 200 レスポンス: 一致結果が正常に完了したと判断され、対応するコールバックAPIリクエストが終了します。
  • HttpStatus 200 以外の値のレスポンスまたはタイムアウト: コールバックAPIは、一致結果を届けるために定期的に再リクエストされます。
  • HttpStatus 200 レスポンスがない、または他のレスポンス値がない: 連続してレスポンスがない場合、システム管理の観点から一定期間、一致結果は届けられません。