PayPal processing 终态页面事件 (2026-07-02)

背景

Work task 使用 PayPal 支付时,PayPal capture 可能先进入 PENDING,后端会把本地 PayPal checkout session 标记为 processing,并创建 paypal_processing 页面事件。

本次变更新增 PayPal processing 后续终态页面事件:当同一笔 PayPal checkout session 已经进入 processing,之后再进入失败或成功终态时,后端会额外创建对应的页面事件,用于提示 user 和 artist 当前 processing 结果。

新增事件类型

type说明
paypal_processing_failedPayPal capture 已经从 processing 变为失败终态
paypal_processing_successPayPal capture 已经从 processing 变为成功终态

触发条件

这两个事件只在 PayPal checkout session 之前已经是 processing 时创建。

PayPal 后续状态新增页面事件发送对象
PAYMENT.CAPTURE.DENIED / DECLINED / FAILEDpaypal_processing_faileduser 和 artist 各一条
PAYMENT.CAPTURE.COMPLETEDpaypal_processing_successuser 和 artist 各一条

普通的直接失败或直接成功不会创建这两个事件。也就是说,如果支付没有先经历 PayPal capture pending / 本地 processing,就不会生成 paypal_processing_failedpaypal_processing_success

接口变更

user

  • POST /api/worktask_page_event_list/list
    • 功能:获取 user 侧 work task 页面事件列表。
    • 变更:可能返回 type=paypal_processing_failedtype=paypal_processing_success 的页面事件。
    • 两个新事件的 data 均返回对应 order 的 busable_info,包含 pay_type / work_task_id / price_change_id

artist_center

  • POST /api/artist_center/worktask_page_event_list/list
    • 功能:获取 artist 侧 work task 页面事件列表。
    • 变更:可能返回 type=paypal_processing_failedtype=paypal_processing_success 的页面事件。
    • 两个新事件的 data 均返回对应 order 的 busable_info,包含 pay_type / work_task_id / price_change_id

响应字段变更

字段类型说明
typestring新增 paypal_processing_failed / paypal_processing_success
data_idnullPayPal processing 相关事件不绑定独立业务表 id
dataobject当前支付 order 的 busable_info
data.pay_typestringstage_pay / full_pay / price_change
data.work_task_idnumberwork task id
data.price_change_idnumber or null改价支付时为 price change id,否则为 null
is_closeboolean新事件创建时为 false,前端手动关闭后变为 true

说明:列表接口当前只返回 is_close=false 的事件。因此 paypal_processing_success 如果要展示并允许用户手动关闭,初始 is_close 也是 false

响应示例

user:PayPal processing 后失败

{
  "data": [
    {
      "id": 9101,
      "work_task_id": 123,
      "type": "paypal_processing_failed",
      "data_id": null,
      "to": "user",
      "is_close": false,
      "data": {
        "pay_type": "stage_pay",
        "work_task_id": 123,
        "price_change_id": null
      },
      "created_at": "2026-07-02T08:00:00.000000Z",
      "updated_at": "2026-07-02T08:00:00.000000Z"
    }
  ]
}

artist:PayPal processing 后成功

{
  "data": [
    {
      "id": 9102,
      "work_task_id": 123,
      "type": "paypal_processing_success",
      "data_id": null,
      "to": "artist",
      "is_close": false,
      "data": {
        "pay_type": "price_change",
        "work_task_id": 123,
        "price_change_id": 456
      },
      "created_at": "2026-07-02T08:05:00.000000Z",
      "updated_at": "2026-07-02T08:05:00.000000Z"
    }
  ]
}

前端处理建议

  • paypal_processing:展示 PayPal 支付处理中,通常不允许继续支付或取消原支付。
  • paypal_processing_failed:展示 PayPal processing 已失败;work task 场景下原 order 已取消,用户可以重新发起支付并重新选择支付渠道。
  • paypal_processing_success:展示 PayPal processing 已成功;该消息可以通过现有 page event close 接口手动关闭。
  • 前端可统一通过 event.data.pay_type 区分 stage_pay / full_pay / price_change
  • 收到 worktask.refresh 后应重新拉取 work task info 或 page event list。

兼容性说明

  • 这是新增事件类型,不改变已有 paypal_processing 的返回结构。
  • user 和 artist 两端都会收到对应终态事件。
  • 两个新事件只用于 work task 的 PayPal processing 后续状态变化,不影响 product license 页面事件。