--- url: >- https://acquirer-api-docs-v4-en.pingpongx.com/notes/zh/integrate/tokenization/cardOnFileNonHosted/index.md description: 说明商户服务端如何使用已保存卡 token 发起复购或一键支付,并处理 CIT CoF 后续交易。 --- ## 适用场景 - 商户自行管理卡列表和支付交互,不需要 PingPong 收银台 - 商户已在本地维护 token 与卡信息的映射关系 - 后续支付由持卡人在场发起,适合一键支付场景 ## 前提条件 - 已完成 [首次支付并保存卡](/notes/zh/integrate/tokenization/cardOnFile/) 流程,并获取到可用于复购的支付凭证 token - 已了解首笔保存卡交易时是否传入了 `bizType=CardOnFile` - 已在商户侧完成保存卡及后续使用授权的告知 ## 交互流程 ```mermaid sequenceDiagram participant 持卡人 as 💳 持卡人 participant 商户前端 as 💻 商户前端 participant 商户后端 as 🏪 商户后端 participant PP as 🔄 PingPongCheckout 持卡人->>+商户前端: 1. 发起结账 商户前端->>+商户后端: 2. 提交订单 商户后端->>+PP: 3. 请求下单并支付(传入支付凭证 token) PP-->>-商户后端: 4. 响应结果 商户后端-->>-商户前端: 5. 返回初始支付状态 Note over 持卡人,PP: token 支付过程 PP->>+商户后端: 6. 📡 异步通知 商户后端-->>-PP: 7. 🟢 响应 OK loop 轮询获取支付状态 商户前端->>+商户后端: 8. 查询支付状态 商户后端-->>-商户前端: 9. 返回当前支付状态 Note over 商户前端: 若状态为最终状态则结束轮询 end 商户前端-->>-持卡人: 10. 显示最终支付结果 ``` ## 接入步骤 ::: steps 1. 客户端下单 客户在商户平台发起订单创建 2. 商户服务端请求下单并支付 调用 [下单并支付](/notes/zh/checkout/api/uniformly/) 接口 - 传入支付凭证 `token` - 如果创建 token 时传入了 `bizType=CardOnFile`,那么后续使用 token 交易时每一笔也都需要继续传送 ::: note PingPong 平台规则:bizType=CardOnFile 继承规则 首笔保存卡时传入了 `bizType=CardOnFile` → 后续所有基于该 token 的复购都必须继续传入 `bizType=CardOnFile`。 首笔未传 → 后续无需传,也不能传。 后续 token 复购请求关键字段示例: ```json title="bizContent 关键字段(CardOnFile 场景)" { "merchantUserId": "USER_12345", "token": "TOKEN_123456", "bizType": "CardOnFile" } ``` ::: ::: warning 注意 后续无需输入 CVV,并不代表交易一定不会被要求额外认证。实际是否触发 3DS、challenge 或被拒绝,仍取决于发卡行风控、监管要求以及交易风险。 ::: ::: note 字段区分 此处上传的 `token` 为支付凭证 token,由首笔保存卡成功后返回;后续服务端复购时,继续在 `uniformly` 请求中通过 `token` 字段传入。 ::: 3. 下单并支付 API 同步响应支付结果 [下单并支付](/notes/zh/checkout/api/uniformly/) 接口会立即返回处理结果 4. 异步通知推送最终结果 系统会通过异步通知机制推送最终的支付结果,详见 [异步通知](/notes/zh/notify/) ::: ## 相关文档 - [首次支付并保存卡](/notes/zh/integrate/tokenization/cardOnFile/) — 首次支付并保存卡信息,获取后续可复用凭证 - [收银台复购(已保存卡 + CVV)](/notes/zh/integrate/tokenization/cardOnFileCVV/) — 通过收银台收集 CVV 完成复购 - [下单并支付接口](/notes/zh/checkout/api/uniformly/) — Non-Hosted 模式核心 API