跳转至

发送消费信息

本 API 用于在应用用户请求退款时,将用户消费信息发送到应用商店。

'消费信息传输' API 通过 Hive 服务器与应用服务器之间的 Server-to-Server 通信方式运作:Hive 服务器向应用服务器发送消费信息传输请求后,应用服务器将响应值返回给 Hive 服务器。

Note

目前,消费信息的传输仅支持苹果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_status 不是 DELIVERED,则 consumption_percentage 将以 0 发送。
  • refund_preferenceGRANT_PRORATED(订阅),则会省略 consumption_percentage