跳到主要内容

通知结构

本页描述了支付状态变更通知和测试通知的结构。 两者均以 POST 请求格式发送,包含以下属性:

属性类型描述是否必填位置示例
idString通知 ID是body12345
timestampString通知发送时间是body2026-03-24T15:22:31.449+0000
payloadString使用 AES-256 算法加密的 Base64 格式数据字符串是body不适用

HTTP 请求头​

标题值是否必填
Content-Typeapplication/json是

payload​

属性类型描述是否必填位置示例
notification_typeString
  • INVOICE_STATUS — 真实支付状态变更通知
  • INVOICE_STATUS_SANDBOX — 测试支付状态变更通知
  • TEST_EVENT — 用于在真实环境中检查连接的通知
  • TEST_EVENT_SANDBOX — 用于在测试环境中检查连接的通知
  • SUBSCRIPTION_EVENT — 订阅通知
  • SUBSCRIPTION_EVENT_SANDBOX — 订阅测试通知
是bodyINVOICE_STATUS
app_idNumber完成购买的应用 ID是body12345
dataString

数据块,其结构取决于 notification_type:

  • data 用于 INVOICE_STATUS 和 INVOICE_STATUS_SANDBOX
  • data 用于 TEST_EVENT 和 TEST_EVENT_SANDBOX
  • data 用于 SUBSCRIPTION_EVENT 和 SUBSCRIPTION_EVENT_SANDBOX
是body不适用

测试或真实支付状态变更通知的 data​

属性类型描述是否必填位置示例
product_codeString已支付产品的代码,在 RuStore 控制台创建产品时指定是payload.datatest_test
change_status_timeString支付状态变更的时间。是payload.data1970-01-01T00:00:00Z
status_newString

新的支付状态。 可用值:

  • EXECUTED - 支付流程已启动;
  • CONFIRMED — 支付成功的最终状态,资金已从买家处扣除;
  • CANCELLED - 在支付启动前由用户取消;
  • REJECTED - 支付被拒绝(资金不足、CVC 无效或其他原因);
  • EXPIRED - 支付时间已过期;
  • PAID - 用于购买消耗性商品,资金已成功冻结,等待开发者的确认;
  • REVERSED - 用于购买消耗性商品:未收到冻结确认请求,冻结已取消,资金已退还买家;
  • REFUNDED - 账单资金已退还买家。
  • REFUNDING - 已发起退款,请求已发送至收单行。
是payload.datapaid
status_oldString

先前的支付状态。 可用值:

  • CREATED - 已创建;
  • EXECUTED - 支付流程已启动;
  • CONFIRMED — 支付成功的最终状态,资金已从买家处扣除;
  • CANCELLED - 在支付启动前由用户取消;
  • REJECTED - 支付被拒绝(资金不足、CVC 无效或其他原因);
  • EXPIRED - 支付时间已过期;
  • PAID - 用于购买消耗性商品,资金已成功冻结,等待开发者的确认;
  • REVERSED - 用于购买消耗性商品:未收到冻结确认请求,冻结已取消,资金已退还买家;
  • REFUNDED - 账单资金已退还买家。
  • REFUNDING - 已发起退款,请求已发送至收单行。
是payload.dataexecuted
purchase_tokenString购买令牌。 您可以使用它来 获取支付信息 通过 RuStore API是payload.data111.123
invoice_idStringRuStore 中唯一的支付账单编号是payload.data123
order_idString开发者应用程序系统中的唯一订单编号。 可以在应用程序中初始化订单时指定,或者由支付提供商自动分配是payload.data123e4567e89b-12d3-a456-4266-55440000
purchase_idString唯一的购买标识符是payload.data123e4567e89b-12d3-a456-4266-55440000
developer_payloadString开发者在购买产品时传递的关于订单的附加信息。 适用于通过以下方式完成的支付: Pay SDK无payload.data来自开发者的任何数据

用于在测试或真实环境中检查连接的通知 data​

属性类型描述位置示例
testString测试字符串payload.dataTEST

关于订阅事件的通知 data​

属性类型描述是否必填位置填写示例
product_codestring已支付的产品代码(在控制台创建产品时指定)是body.subscription_dataone_more_scan
event_timestring相应事件发生的时间。是body.subscription_data2025-11-18T10:38:58.619Z
subscription_event_typestring

订阅事件类型:

ACTIVATED — 订阅已激活(首次支付成功)
RENEWED — 订阅已续订(周期性付款成功)
CANCELLED — 用户/开发者关闭了订阅的自动续订
RESUMED — 用户重新开启了自动续订(此前曾关闭)
PAYMENT_FAILED — 扣款尝试失败,但订阅未关闭并转入 GRACE/HOLD 周期
CLOSED — 订阅已关闭 - 因关闭自动续订或付款问题

是body.subscription_dataACTIVATED
status_newstring

新的订阅状态。 可用值:

ACTIVE — 订阅处于激活状态
PAUSED — 订阅已暂停(HOLD 周期)
CLOSED — 订阅已关闭 — 在用户/开发者关闭自动续订之后
TERMINATED — 订阅因付款问题而关闭

有关订阅状态的信息请参阅状态模型图表。

是body.subscription_dataCLOSED 可能与 status_old 相同,例如在 RENEWED 事件中,状态未发生变化时
status_oldstring订阅的旧状态。 状态列表与 status_new 相同。不可以。 如果是首次订阅激活事件,该值可能为空body.subscription_dataACTIVE
period_oldstring

订阅周期。 可用值:

TRIAL — 订阅的免费试用期
PROMO — 价格低于主价格的促销周期
MAIN — 订阅的主要使用周期
GRACE — 宽限期:用户出现付款问题,但订阅在指定期限内仍视为有效;系统会继续尝试从用户账户扣款
HOLD — 付款问题。 订阅内容的访问已关闭,但订阅本身尚未关闭,系统会在指定期限内继续尝试从用户账户扣款

有关订阅周期的信息,请参阅“订阅详情”章节

不可以。 如果是首次订阅激活事件,该值可能为空body.subscription_dataMAIN
period_newstring新的订阅周期。 可用值列表与 period_old 中提供的一致是body.subscription_dataMAIN
autorenewingboolean订阅自动续费状态: TRUE — 已开启自动续费, FALSE — 已关闭自动续费是body.subscription_dataTRUE
invoice_idstringRuStore 系统中的唯一付款账单编号。不可以。 可能缺失,例如在以下事件中: CANCEL/RESUMEbody.subscription_data123
order_idstring开发者应用程序系统中的唯一订单编号。 可以在 anyApp 中初始化订单时指定,或者由支付提供商自动分配。是body.subscription_data123e4567e89b-12d3-a456-4266-55440000
purchase_idstring唯一的购买编号是body.subscription_data123e4567e89b-12d3-a456-4266-55440000
developer_payloadstring开发者在购买产品时传递的关于订单的附加信息无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\"}"
}