跳到主要内容

通知结构

本页描述支付状态变更通知结构和测试通知结构。它们都作为 POST 请求发送,具有以下属性:

属性类型描述必需位置示例
idString通知 IDbody12345
timestampString发送通知的时间body2022-07-08T13:24:41.8328711+03:00
payloadString使用 AES‑256 加密的 Base64 数据字符串body

payload

属性类型描述必需位置示例
notification_typeString
  • INVOICE_STATUS — 支付状态变更通知
  • TEST_EVENT — 测试通知
bodyINVOICE_STATUS
app_idNumber进行购买的应用 IDbody12345
dataString

数据块,其结构取决于 notification_type

  • data 用于 INVOICE_STATUS
  • data 用于 TEST_EVENT
body

支付状态变更数据

属性类型描述位置示例
product_codeString在创建产品时在 RuStore 控制台中指定的付费产品代码payload.datatest_test
change_status_timeString支付状态的时间或首次发送通知的时间。

如果通知在第一次尝试时送达,则 change_status_timetimestamp 相同
payload.data1970-01-01T00:00:00Z
status_newString

新的支付状态。可用值:

  • EXECUTED - 支付流程已启动;
  • CONFIRMED — 成功支付的最终状态,资金已从买家账户扣除;
  • CANCELLED - 用户在支付流程开始前取消;
  • REJECTED - 支付被拒绝(资金不足、CVC 无效或其他原因);
  • EXPIRED - 支付时间已过期;
  • PAID - 对于可消耗商品,资金已预授权,购买等待开发者 确认
  • REVERSED - 对于可消耗商品,没有收到确认,预授权取消,资金返还给买家;
  • REFUNDED - 订单已退款。
payload.datapaid
status_oldString

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

  • CREATED - 支付已创建;
  • EXECUTED - 支付流程已启动;
  • CONFIRMED — 成功支付的最终状态,资金已从买家账户扣除;
  • CANCELLED - 用户在支付流程开始前取消;
  • REJECTED - 支付被拒绝(资金不足、CVC 无效或其他原因);
  • EXPIRED - 支付时间已过期;
  • PAID - 对于可消耗商品,资金已预授权,购买等待开发者 确认
  • REVERSED - 对于可消耗商品,没有收到确认,预授权取消,资金返还给买家;
  • REFUNDED - 订单已退款。
payload.dataexecuted
purchase_tokenString购买令牌。您可以使用它通过 RuStore API 获取支付数据payload.data111.123
invoice_idStringRuStore 中的唯一发票编号payload.data123
order_idString开发者应用系统中的唯一订单号。可以在购买初始化时提供,或由支付提供方自动分配payload.data123e4567e89b-12d3-a456-4266-55440000
purchase_idString购买 IDpayload.data123e4567e89b-12d3-a456-4266-55440000

测试通知数据

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

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\"}"
}

测试通知的 payload

{
"app_id": 12345,
"notification_type": "TEST_EVENT",
"data": "{\"test\":\"TEST\"}"
}