# 一单一付（用户付款)

## 1. 概述

**一单一付 (TO C)** 模式由 CatFee 提供，主要面向钱包厂商或支付平台。 该模式下，**由最终用户直接支付能量/带宽资源费用**，钱包厂商无需预存资金即可为用户提供实时能量服务。

适用于 **兑换、MEME 币交易等对实时性要求高的业务场景**，能显著提升用户体验。

### 模式优势

1. **用户体验好**：实时发起合约时，自动获取所需能量，整个过程无感知。
2. **钱包无需垫资**：不需要钱包预先充值或锁定资金。
3. **账务透明**：所有资源代理、支付交易均在 TRON 链上可查，账务可追溯。

***

## 2. 接入流程

钱包需要对接 CatFee 的开放 API，实现资源费用查询、交易创建、支付确认。

### 流程语言描述

1. **用户发起合约** 用户在钱包中发起一次智能合约调用（如兑换、转账），此时交易尚未广播。
2. **查询资源费用** 钱包调用 `/v1/mate/open/transaction/estimate` 向 CatFee 请求所需能量/带宽的费用，CatFee 返回预估结果，钱包将费用展示给用户。
3. **创建代理资源交易** 钱包调用 `/v1/mate/open/transaction`，由 CatFee 返回一笔已签名但未广播的 **代理能量交易**。这笔交易稍后会用于为用户补充能量。
4. **用户确认支付** 钱包提示用户支付资源费，用户确认后，钱包生成一笔 **支付资源费交易**（未广播）。
5. **依次广播交易** 钱包依次将三笔交易广播到 TRON 网络：
   * 代理资源交易（确保用户能量充足）
   * 用户智能合约交易（完成业务逻辑）
   * 用户支付资源费交易（支付给 CatFee）
6. **提交支付 HASH** 钱包调用 `/v1/mate/open/transaction/pay/{order_id}`，将用户支付交易的 HASH 提交给 CatFee。
7. **CatFee 对账与确认** CatFee 定时扫描链上：
   * 若支付成功 → 更新订单为 **成功**。
   * 若支付失败 → 更新订单为 **失败**，并将结果反馈给钱包。

### 时序图

```mermaid
sequenceDiagram
    autonumber

    actor c as 用户 (User)
    participant w as 钱包 (Wallet Vendor)
    participant f as CatFee
    participant t as TRON网络

    c->>w: 发起智能合约交易 (未广播)
    w->>f: 查询所需资源费用 (POST /v1/mate/open/transaction/estimate)
    f->>w: 返回费用详情
    w->>f: 创建代理资源交易 (POST /v1/mate/open/transaction)
    f->>w: 返回代理能量交易 (未广播)
    c-->>w: 创建支付资源费交易 (未广播)

    w->>t: 广播代理资源交易
    w->>t: 广播用户智能合约交易
    w->>t: 广播支付资源费交易

    w-->>f: 提交支付 HASH (POST /v1/mate/open/transaction/pay/{order_id})

    activate f
    alt 校验转账成功
        f->>f: 更新订单状态为成功
    else 校验转账失败
        f->>f: 更新订单状态为失败
        f-->>w: 返回失败订单
    end
    deactivate f
```

***

## 3. API 接口说明

### 3.1 预估所需资源费用

**接口**： `POST /v1/mate/open/transaction/estimate`

**描述**： 钱包调用此接口，获取执行用户合约所需的能量/带宽费用。

详细说明[点击这里](/api-reference/transaction/estimate-fee.md)

***

### 3.2 创建代理资源交易

**接口**： `POST /v1/mate/open/transaction`

**描述**： CatFee 返回一个未广播的代理资源交易（能量代理），钱包负责后续广播。

详细说明[点击这里](/api-reference/transaction/create-transaction.md)

***

### 3.3 提交支付 HASH

**接口**： `POST /v1/mate/open/transaction/pay/{order_id}`

**参数**：

* `hash`：用户支付资源费的交易 HASH

**描述**： 钱包在用户完成支付后，将支付交易 HASH 提交给 CatFee，CatFee 定时扫描链上确认支付情况，并更新订单状态。

详细说明[点击这里](/api-reference/transaction/pay-transaction.md)

***

## 4. 对账与异常处理

1. **支付校验**
   * CatFee 会定时扫描链上确认支付交易。
   * 若支付成功 → 更新订单为 **成功**。
   * 若支付失败 → 更新订单为 **失败**，并反馈给钱包。
2. **异常场景**
   * 用户未及时支付 → 订单会进入 **失败状态**。
   * 钱包需根据反馈信息决定是否提示用户或重试。

***

## 5. 接入要点总结

* **钱包端职责**：
  * 发起合约前，先查询所需能量费用
  * 请求 CatFee 生成资源代理交易
  * 负责广播代理交易、合约交易、支付交易
  * 将支付 HASH 提交给 CatFee
* **CatFee职责**：
  * 提供资源费用估算
  * 返回未广播代理交易
  * 校验用户支付交易并更新订单状态
  * 提供失败订单反馈

***

📌 **一单一付模式适合：**

* 钱包厂商无需自备能量池
* 需要实时完成交易（兑换、MEME 币等高频操作）
* 强调用户自主支付与账务透明


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.catfee.io/solutions/one-order-one-payment-to-c.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
