---
url: >-
https://acquirer-api-docs-v4-en.pingpongx.com/notes/zh/InPersonPayments/offlineCardPayment/index.md
description: >-
线下卡支付解决方案通过SAAS收银机与POS设备云端通信,实现支付、查询、退款等功能。采用REST
API方式,关键参数包括deviceSn、deviceModel和cashierDeviceId,确保交易请求准确路由至指定POS终端。覆盖场景包括实体店铺的即时支付与退款处理,支持刷卡及NFC支付方
---
## 主要参与方
PingPongCheckout的线下卡支付解决方案集成方案实现了SAAS收银机与POS设备通过云端服务进行通信,完成支付、查询、退款等交易流程。该方案采用REST API方式,通过明确的设备标识机制确保交易请求准确路由到指定的POS终端。
- SAAS收银机:发起交易请求,接收交易结果
- PingPong收单服务:作为中间层,处理请求路由和响应转发
- POS设备:执行实际的支付操作,处理卡片交易
## API 清单
1. 下单 API
2. 单笔交易查询 API
3. 申请退款 API
4. 退款查询 API
## 支付流程
```mermaid
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#E3F2FD',
'primaryTextColor': '#0D47A1',
'primaryBorderColor': '#1976D2',
'lineColor': '#1565C0',
'secondaryColor': '#BBDEFB',
'tertiaryColor': '#90CAF9',
'background': '#F8FBFF',
'mainBkg': '#E3F2FD',
'secondBkg': '#BBDEFB',
'tertiaryBkg': '#90CAF9',
'actorBkg': '#2196F3',
'actorBorder': '#1976D2',
'actorTextColor': '#FFFFFF',
'actorLineColor': '#1565C0',
'signalColor': '#0D47A1',
'signalTextColor': '#0D47A1',
'c0': '#E8F4FD',
'c1': '#D1E7DD',
'c2': '#B3D9FF',
'c3': '#81C784',
'noteBkgColor': '#E1F5FE',
'noteTextColor': '#01579B',
'noteBorderColor': '#0288D1',
'loopTextColor': '#0D47A1',
'activationBkgColor': '#B3E5FC',
'activationBorderColor': '#0277BD'
}
}}%%
sequenceDiagram
participant SAAS as 💳 SAAS收银机
participant PP as 🔄 PingPong收单服务
participant POS as 📱 POS设备
Note over SAAS, POS: 💰 卡支付流程
Note over SAAS, PP: 📋 请求参数:• deviceSn, deviceModel, cashierDeviceId• paymentMethod=卡支付方式
SAAS->>+PP: 1. 下单并支付请求(unifiedPay)
PP->>PP: 2. 验证请求签名和参数
PP->>+POS: 3. 转发支付请求到指定POS设备
POS->>POS: 4. 执行刷卡/NFC支付操作
Note over PP, POS: ✅ 支付响应:• 包含卡交易信息(cardTransinfo)• transactionId, merchantTransactionId• status=SUCCESS/FAILED
POS-->>-PP: 5. 返回支付处理结果
PP-->>-SAAS: 6. 返回支付结果
opt 🔍 [查询订单详情]
Note over SAAS, PP: 🔎 查询参数:• transactionId 或 merchantTransactionId
SAAS->>+PP: 7. 订单结果查询(query)
PP->>PP: 8. 查询订单状态
Note over PP, POS: 📊 订单详情响应:• 完整的cardTransinfo信息• 收单行、卡号、持卡人等信息
PP-->>-SAAS: 9. 返回订单详情
end
Note over SAAS, POS: 🎉 支付流程完成
```
### 发起支付请求
SAAS收银机向PingPong收单服务发送统一下单支付请求(unifiedPay)
请求中包含`deviceSn`和`deviceModel`参数,明确指定目标POS设备
同时包含`cashierDeviceId`标识收银机自身
::: note 注意
`deviceSn`,`cashierDeviceId`和`deviceModel`参数是为了确保支付请求被正确路由到指定的POS设备, 请确保参数填写正确,
否则可能导致支付失败或请求被路由到错误的POS设备
:::
### 请求路由
PingPong收单服务接收请求并验证签名
根据`deviceSn`和`deviceModel`将支付请求路由到指定POS设备
### 支付处理
POS设备接收请求并执行支付操作(如刷卡、NFC支付等)
处理完成后,POS设备将结果返回给收单服务
### 结果返回
收单服务将支付结果返回给SAAS收银机,同步响应结果可能是`PROCESSING`状态,支付结果需要通过查询API进行获取,
SAAS收银机接收结果并进行后续处理(如打印小票、更新订单状态等)
## 退款流程
```mermaid
%%{init: {
'theme': 'base',
'themeVariables': {
'primaryColor': '#E3F2FD',
'primaryTextColor': '#0D47A1',
'primaryBorderColor': '#1976D2',
'lineColor': '#1565C0',
'secondaryColor': '#BBDEFB',
'tertiaryColor': '#90CAF9',
'background': '#F8FBFF',
'mainBkg': '#E3F2FD',
'secondBkg': '#BBDEFB',
'tertiaryBkg': '#90CAF9',
'actorBkg': '#2196F3',
'actorBorder': '#1976D2',
'actorTextColor': '#FFFFFF',
'actorLineColor': '#1565C0',
'signalColor': '#0D47A1',
'signalTextColor': '#0D47A1',
'c0': '#E8F4FD',
'c1': '#D1E7DD',
'c2': '#B3D9FF',
'c3': '#81C784',
'noteBkgColor': '#E1F5FE',
'noteTextColor': '#01579B',
'noteBorderColor': '#0288D1',
'loopTextColor': '#0D47A1',
'activationBkgColor': '#B3E5FC',
'activationBorderColor': '#0277BD'
}
}}%%
sequenceDiagram
participant SAAS as 💳 SAAS收银机
participant PP as 🔄 PingPong收单服务
participant POS as 📱 POS设备
Note over SAAS, POS: 💰 卡支付退款流程
Note over SAAS, PP: 📋 退款请求参数:• merchantTransactionId, merchantRefundId• deviceSn, deviceModel (POS退款必传)
SAAS->>+PP: 1. 退款请求(refund)
PP->>PP: 2. 验证请求签名和参数
PP->>+POS: 3. 转发退款请求到指定POS设备
POS->>POS: 4. 执行退款操作
Note over PP, POS: ✅ 退款响应:• transactionRefundId, merchantRefundId• status = ACCEPT_SUCCESS/PROCESSING/SUCCESS/FAILED
POS-->>-PP: 5. 返回退款处理结果
PP-->>-SAAS: 6. 返回退款受理结果
opt 🔍 [查询退款状态 - 可选]
Note over SAAS, PP: 🔎 查询参数:• refundId 或 merchantRefundId• merchantTransactionId
SAAS->>+PP: 7. 退款结果查询(refund/query)
PP->>PP: 8. 从数据库查询退款状态
Note over PP, POS: 📊 退款状态响应:• status = PROCESSING/SUCCESS/FAILED• 退款金额、币种、时间等信息
PP-->>-SAAS: 9. 返回退款状态信息
end
Note over SAAS, POS: 🎉 退款流程完成
```
### 发起退款请求
SAAS收银机向收单服务发送退款请求(refund)
对于POS交易退款,必须包含`deviceSn`和`deviceModel`参数
请求中包含原交易信息和退款金额
### 退款路由
收单服务验证请求并路由到指定POS设备
POS设备执行退款操作
### 结果返回
POS设备将退款结果返回给收单服务,同步响应结果可能是`PROCESSING`状态,支付结果需要通过查询API进行获取,
收单服务将退款受理结果返回给收银机