---
title: 如何获取订单状态
permalink: /notes/zh/onlinePayment/bestPractices/fetchStatus/
createTime: '2025/03/07 16:01:49'
description: '说明如何结合前端回跳、异步通知和交易查询获取最终支付结果,并处理未收到通知或长时间未支付订单。'
---
## 背景
支付完成后,商户需要在服务端确认订单的最终交易状态,再进行发货、开通服务或更新账务。前端页面跳转只代表买家回到了商户页面,不能作为订单成功的依据。
PingPongCheckout V4 提供两种服务端获取订单状态的方式:
1. 异步通知
2. 交易查询
如果仅依赖异步通知,网络异常或系统波动可能导致买家已完成支付,但商户服务端未成功接收通知,进而出现订单状态更新不及时的问题。因此建议商户同时接入异步通知和交易查询,并在服务端做统一的订单状态处理。
## 推荐处理流程
```mermaid
flowchart TD
A[买家完成支付] --> B[前端跳转至 payResultUrl]
B --> C[商户前端请求商户服务端查询订单状态]
C --> D{商户服务端是否已有终态结果}
D -->|是| E[返回订单展示状态]
D -->|否| F[调用 PingPong 交易查询]
F --> G[根据查询响应 status 更新商户订单]
G --> E
H[PingPong 发送异步通知] --> I[商户服务端验签并接收通知]
I --> J[返回 HTTP 2xx]
J --> K[根据通知 status 更新商户订单]
```
## 处理建议
1. 前端回跳页面只用于展示支付结果,不直接作为订单成功依据。
2. 商户服务端收到异步通知后,应先验签并返回 HTTP 2xx 确认已接收,再根据通知中的 `status` 幂等更新订单状态。
3. 如果前端已回跳但商户服务端尚未收到终态通知,建议主动调用 交易查询 获取当前状态。
4. 如果查询结果仍为 `INIT` 或 `PROCESSING`,请保持订单为待支付/处理中,并继续等待异步通知或按业务策略定时查询。
5. 商户侧订单状态应以服务端接收到的异步通知或交易查询结果为准,不应以前端 URL 参数、页面展示或买家截图作为最终依据。
::: note 提示
本文说明的是订单结果获取方案。各 `status` 的含义、状态流转和幂等处理规则,请参考交易状态与幂等。
:::
## 订单关闭
对于买家长时间未完成支付的订单,PingPongCheckout V4 会进行关单处理。订单关闭后,买家无法继续支付,商户可以通过交易查询获取到 `CLOSED` 状态。
::: note 提示
如果下单时上送了自定义关单通知地址 `closeNotificationUrl`,订单到达 `CLOSED` 状态后,PingPong 会发送关单通知。
:::