コンテンツにスキップ

Send consumption information v2

アプリユーザーが返金をリクエストする際に、ユーザーの消費情報をアプリストアに送信するAPIを提供します。

「消費情報伝送」APIは、HiveサーバーとアプリサーバーとのServer-to-Server通信方式で、Hiveサーバーがアプリサーバーに消費情報伝送リクエストを送信すると、アプリサーバーが応答値をHiveサーバーに返します。

Note

現在、消費情報の送信はApple App Storeのみサポートされています。

動作フロー

「消費情報伝送」APIの呼び出しおよび応答の全体的な動作フローをまとめると、以下の通りです。

  1. アプリ: APIエンドポイントを構成してサーバーURLを準備
  2. アプリ: Hive コンソールで消費情報伝送の使用を選択し、サーバーURLを登録
  3. アプリクライアント: アプリを実行した状態でアプリ内商品の消費情報伝送に同意
  4. アプリユーザー: アプリで返金をリクエスト
  5. Apple: Hive サーバーに消費情報リクエスト(CONSUMPTION_REQUEST)を送信
  6. Hive サーバー: アプリで登録したサーバーURLにPOST APIリクエストを送信し、アプリサーバーから応答値として消費情報データを受信
  7. Hive サーバー: アプリストアに消費情報を送信(成功時、AppleがHTTP 202で応答)
Warning

アプリクライアントで同意ポップアップで情報伝送に同意しない場合、Hive サーバーはアプリサーバーからデータを受信しても、これをアプリストアに送信できません。ユーザーの同意有無(customerConsented)はアプリサーバーが送信するものではなく、Hive サーバーが独自に設定します。

アプリストアに送信する消費情報の中には、アプリサーバーにのみ存在するデータもあります。この場合、Hive サーバーが消費情報をアプリストアに送信するには、アプリサーバーが先にHive サーバーにデータを渡す必要があります。

アプリサーバーURLは、アプリサーバーがHive サーバーにデータを渡すために、アプリサーバー側で開放しているAPIエンドポイントです。APIエンドポイントを構成した後、アプリサーバーURLとして登録すると、ユーザーが返金をリクエストするたびにHive サーバーがこのAPIエンドポイントにPOSTリクエストを行い、必要なデータをアプリサーバーから受け取ります。Hive サーバーはこれらのデータを集約し、アプリに代わってアプリストアへの消費情報伝送を完了します。


APIエンドポイントの構成(サーバーURL)

アプリサーバーは、サーバーURLとして登録するAPIエンドポイントでリクエストを受信した際、リクエストパラメータのユーザー情報(player_id)と取引情報(transaction_id)を使用して消費情報を照会し、応答規約に沿ったデータを返す必要があります。

ファイアウォールルールの解除

Hive サーバーがアプリサーバーのAPIエンドポイントにリクエストを送信できるように、アプリサーバー側で以下のIPアドレスに対するファイアウォールのインバウンドルールを解除する必要があります。

Hive サーバーIP
15.165.223.210
3.34.158.195
43.202.20.33
13.209.91.38
3.34.235.15
15.165.134.120

ファイアウォールルールを解除した後、以下の内容を参考にAPIエンドポイントを構成します。

APIリクエスト(Hive サーバー → アプリサーバー)の構成

Hive サーバーからアプリサーバーに送信するPOSTリクエスト情報です。

API情報 説明
Method POST
Response Format JSON
Content-type application/json

Request body

リクエスト本文の情報は以下の通りです。

名称 タイプ 必須有無 (必須: M, オプション: O) 説明
gameindex Integer M アプリセンターゲームインデックス
appid String M アプリセンターAppID
server_id String M アプリサーバーID
player_id String M アプリ内ユーザー識別子(購入検証時に使用するユーザー識別値)。V1のuser_seqに該当
transaction_id String M Apple元取引ID(originalTransactionId)


リクエスト本文の例は以下の通りです。

{
    "gameindex": 539,
    "appid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal",
    "server_id": "server_01",
    "player_id": "222333",
    "transaction_id": "2000000123456789"
}

API応答(アプリサーバー → Hive サーバー)の構成

アプリサーバーは、処理結果コード(code)、結果メッセージ(message)、消費情報(data)をHive サーバーに渡します。

Response body

Hive サーバーはcodeの値で成功可否を判定します。200の場合は成功と見なしてdataを使用し、それ以外のコードの場合は該当の件を送信せず、messageを理由として記録します。codeは必須であり、送信されない場合はエラーとして処理し、該当の件を送信しません。

名称 タイプ 必須有無 (必須: M, オプション: O) 説明
code Integer M 処理結果コード(下表参照)。200のみ成功であり、それ以外のコードはエラーとして処理
message String O 処理結果メッセージ。エラー時の理由説明用
data Object M 応答データ(成功時は必須)
┕ delivery_status String M 消耗品の配送状態。以下の配送状態の値のいずれか
┕ refund_preference String O 返金の好み。以下の返金の好みの値のいずれか
┕ consumption_percentage Integer O 消費比率。millipercent単位で0~100000(100000 = 100%)
┕ sample_content_provided Integer O サンプルコンテンツ提供有無。0または1

応答成功の例は以下の通りです。

{
    "code": 200,
    "message": "OK",
    "data": {
        "delivery_status": "DELIVERED",
        "refund_preference": "GRANT_FULL",
        "consumption_percentage": 100000,
        "sample_content_provided": 0
    }
}

応答コード

説明
200 成功
400 不正なリクエスト値
500 サーバーエラー

配送状態(delivery_status)

消耗品の配送状態を表し、以下の5つの値のいずれかである必要があります(必須)。

意味
DELIVERED 消耗品を正常に配送し、正常に動作
UNDELIVERED_QUALITY_ISSUE 品質問題により配送できなかった
UNDELIVERED_WRONG_ITEM 購入したものと異なる(誤った)アイテムを配送した
UNDELIVERED_SERVER_OUTAGE サーバー障害により配送できなかった
UNDELIVERED_OTHER その他の理由により配送できなかった

返金の好み(refund_preference)

アプリが希望する返金処理の方向をAppleに伝えます(任意)。値を送信する場合は、以下の3つのいずれかである必要があります。

意味
GRANT_FULL 全額返金の付与を希望
DECLINE 返金しないこと(拒否)を希望
GRANT_PRORATED 一部(比例)返金の付与を希望(主にサブスクリプション)
Warning

以下の値が無効な場合、アプリストアに送信されず、該当の件は除外されます。

  • delivery_statusは必須であり、上記5つの値のいずれかである必要があります。
  • refund_preferenceを送信する場合は、上記3つの値のいずれかである必要があります。
  • consumption_percentageを送信する場合は、0~100000の範囲の整数である必要があります。
Note

以下は、Hive サーバーがAppleの規則に従って自動的に調整する動作です。

  • delivery_statusDELIVEREDでない場合、consumption_percentageは0として送信されます。
  • refund_preferenceGRANT_PRORATED(サブスクリプション)の場合、consumption_percentageは省略されます。