通知结构
本页描述了支付状态变更通知和测试通知的结构。
两者均以 POST 请求格式发送,包含以下属性:
| 属性 | 类型 | 描述 | 是否必填 | 位置 | 示例 |
|---|---|---|---|---|---|
id | String | 通知 ID | 是 | body | 12345 |
timestamp | String | 通知发送时间 | 是 | body | 2026-03-24T15:22:31.449+0000 |
payload | String | 使用 AES-256 算法加密的 Base64 格式数据字符串 | 是 | body | 不适用 |
HTTP 请求头
| 标题 | 值 | 是否必填 |
|---|---|---|
Content-Type | application/json | 是 |
payload
| 属性 | 类型 | 描述 | 是否必填 | 位置 | 示例 |
|---|---|---|---|---|---|
notification_type | String |
| 是 | body | INVOICE_STATUS |
app_id | Number | 完成购买的应用 ID | 是 | body | 12345 |
data | String | 数据块,其结构取决于 | 是 | body | 不适用 |
测试或真实支付状态变更通知的 data
| 属性 | 类型 | 描述 | 是否必填 | 位置 | 示例 |
|---|---|---|---|---|---|
product_code | String | 已支付产品的代码,在 RuStore 控制台创建产品时指定 | 是 | payload.data | test_test |
change_status_time | String | 支付状态变更的时间。 | 是 | payload.data | 1970-01-01T00:00:00Z |
status_new | String | 新的支付状态。 可用值:
| 是 | payload.data | paid |
status_old | String | 先前的支付状态。 可用值:
| 是 | payload.data | executed |
purchase_token | String | 购买令牌。 您可以使用它来 获取支付信息 通过 RuStore API | 是 | payload.data | 111.123 |
invoice_id | String | RuStore 中唯一的支付账单编号 | 是 | payload.data | 123 |
order_id | String | 开发者应用程序系统中的唯一订单编号。 可以在应用程序中初始化订单时指定,或者由支付提供商自动分配 | 是 | payload.data | 123e4567e89b-12d3-a456-4266-55440000 |
purchase_id | String | 唯一的购买标识符 | 是 | payload.data | 123e4567e89b-12d3-a456-4266-55440000 |
developer_payload | String | 开发者在购买产品时传递的关于订单的附加信息。 适用于通过以下方式完成的支付: Pay SDK | 无 | payload.data | 来自开发者的任何数据 |
用于在测试或真实环境中检查连接的通知 data
| 属性 | 类型 | 描述 | 位置 | 示例 |
|---|---|---|---|---|
test | String | 测试字符串 | payload.data | TEST |
关于订阅事件的通知 data
| 属性 | 类型 | 描述 | 是否必填 | 位置 | 填写示例 |
|---|---|---|---|---|---|
product_code | string | 已支付的产品代码(在控制台创建产品时指定) | 是 | body.subscription_data | one_more_scan |
event_time | string | 相应事件发生的时间。 | 是 | body.subscription_data | 2025-11-18T10:38:58.619Z |
subscription_event_type | string | 订阅事件类型: | 是 | body.subscription_data | ACTIVATED |
status_new | string | 新的订阅状态。 可用值: | 是 | body.subscription_data | CLOSED 可能与 status_old 相同,例如在 RENEWED 事件中,状态未发生变化时 |
status_old | string | 订阅的旧状态。 状态列表与 status_new 相同。 | 不可以。 如果是首次订阅激活事件,该值可能为空 | body.subscription_data | ACTIVE |
period_old | string | 订阅周期。 可用值: | 不可以。 如果是首次订阅激活事件,该值可能为空 | body.subscription_data | MAIN |
period_new | string | 新的订阅周期。 可用值列表与 period_old 中提供的一致 | 是 | body.subscription_data | MAIN |
autorenewing | boolean | 订阅自动续费状态: TRUE — 已开启自动续费, FALSE — 已关闭自动续费 | 是 | body.subscription_data | TRUE |
invoice_id | string | RuStore 系统中的唯一付款账单编号。 | 不可以。 可能缺失,例如在以下事件中: CANCEL/RESUME | body.subscription_data | 123 |
order_id | string | 开发者应用程序系统中的唯一订单编号。 可以在 anyApp 中初始化订单时指定,或者由支付提供商自动分配。 | 是 | body.subscription_data | 123e4567e89b-12d3-a456-4266-55440000 |
purchase_id | string | 唯一的购买编号 | 是 | body.subscription_data | 123e4567e89b-12d3-a456-4266-55440000 |
developer_payload | string | 开发者在购买产品时传递的关于订单的附加信息 | 无 | body.subscription_data | 来自开发者的任何数据 |
payload 示例
测试或真实支付状态变更通知的 payload
{
"app_id": 12345,
"notification_type": "INVOICE_STATUS",
"data": "{\"change_status_time\":\"1970-01-01T00:00:00Z\",\"product_code\":\"test_test\",\"status_new\":\"paid\",\"status_old\":\"executed\",\"purchase_token\":\"111.123\",\"invoice_id\":\"123\",\"order_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"purchase_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"developer_payload\":\"Any data from developer\"}"
}
测试或真实环境下连接检查通知的 payload
{
"app_id": 12345,
"notification_type": "TEST_EVENT",
"data": "{\"test\":\"TEST\"}"
}
订阅状态变更通知的 payload
{
"app_id": 12345,
"notification_type": "SUBSCRIPTION_EVENT",
"data": "{\"product_code\":\"one_more_scan\",\"event_time\":\"2025-11-18T10:38:58.619Z\",\"subscription_event_type\":\"ACTIVATED\",\"status_new\":\"ACTIVE\",\"status_old\":\"\",\"period_old\":\"\",\"period_new\":\"MAIN\",\"autorenewing\":true,\"invoice_id\":\"123\",\"order_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"purchase_id\":\"123e4567e89b-12d3-a456-4266-55440000\",\"developer_payload\":\"Any data from developer\"}"
}