> ## Documentation Index
> Fetch the complete documentation index at: https://ifdocdemo.lumivescence.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Thanh toán cho resource

> Thanh toán cho endpoint MPP và x402 từ Buyer Wallet, nhận response và quản lý gói thuê bao MPP.

Với Pay (x402 và MPP), agent thanh toán cho một endpoint từ Buyer Wallet bằng InFlow CLI và nhận response. Response `402` của endpoint liệt kê các giao thức và tùy chọn mà endpoint chấp nhận. Về luồng thanh toán và phê duyệt của chủ sở hữu, xem [Cách Pay hoạt động](https://ifdocdemo.lumivescence.com/vi/concepts/payments.md). Để thanh toán từ ứng dụng của riêng bạn, xem [Thanh toán từ code](https://ifdocdemo.lumivescence.com/vi/agents/pay-from-code.md).

## Cách agent thanh toán

Theo mặc định, agent thanh toán từ [số dư InFlow](https://ifdocdemo.lumivescence.com/vi/concepts/payments.md#số-dư-inflow) của agent. Agent cũng có thể thanh toán theo cách khác khi người bán cung cấp các cách đó.

| Cách thanh toán | MPP | x402 |
| - | - | - |
| Số dư InFlow | Rail `balance` của phương thức thanh toán `inflow` | Scheme `balance` |
| Onchain | Phương thức thanh toán `tempo` | Scheme `exact` |
| Thẻ đã liên kết | Rail `instrument` của `inflow`, hoặc một khoản thu `card` | Scheme `instrument` |

Khi một endpoint cung cấp MPP và x402, CLI lọc các tùy chọn theo network, loại tiền và số dư khả dụng. Sau đó, CLI ưu tiên MPP. Với x402, CLI ưu tiên `balance`, sau đó `exact`, rồi đến `instrument`. Với MPP, challenge của người bán quyết định rail. Thanh toán bằng thẻ không dùng số dư InFlow của bạn. Xem [Rail và scheme](https://ifdocdemo.lumivescence.com/vi/concepts/payments.md#rail-và-scheme).

CLI cũng có thể thanh toán cho các endpoint không dùng InFlow, khi các endpoint đó dùng MPP hoặc x402 chuẩn. Onchain, CLI thanh toán x402 trên Aptos, Arc, Base, Monad và Solana, và MPP trên Tempo.

## Kiểm tra trước khi thanh toán

Làm các bước kiểm tra này trước lần thanh toán đầu tiên cho một endpoint mới.

**1. Đọc thông tin endpoint**

`inspect` báo cáo những gì một URL hỗ trợ: khám phá, ghi danh, MPP và x402. Lệnh này không ghi danh và không thanh toán.

```bash theme={null}
inflow inspect https://api.example.com/paid-resource
```

Để lấy đầy đủ tùy chọn thanh toán của một giao thức, dùng lệnh của giao thức đó. Lệnh này gửi một request đến endpoint, nhưng không thanh toán.

```bash MPP theme={null}
inflow mpp inspect https://api.example.com/paid-resource
```

```bash x402 theme={null}
inflow x402 inspect https://api.example.com/paid-resource
```

**2. Kiểm tra những gì bạn có thể dùng để thanh toán**

```bash MPP theme={null}
inflow mpp supported
```

```bash x402 theme={null}
inflow x402 supported
```

`mpp supported` liệt kê các phương thức thanh toán của bạn theo intent, rail quyết toán và loại tiền. `x402 supported` liệt kê các khả năng người mua của bạn theo scheme và network.

**3. Kiểm tra số dư**

```bash theme={null}
inflow balances list
inflow deposit-addresses list
```

`deposit-addresses list` hiển thị nơi gửi stablecoin. Luôn sao chép đầy đủ một địa chỉ nạp tiền. Một địa chỉ rút gọn không hoạt động.

## Thanh toán bằng một lệnh

Một lệnh thăm dò endpoint, chuẩn bị khoản thanh toán và chờ phê duyệt. Sau đó lệnh này gửi credential cho người bán và trả về body của response.

```bash MPP theme={null}
inflow mpp pay https://api.example.com/paid-resource --interval 5 --max-attempts 180
```

```bash x402 theme={null}
inflow x402 pay https://api.example.com/paid-resource --interval 5 --max-attempts 180
```

Kết quả chứa `outcome`, `transaction_id`, `response_status`, `settled` và body response của người bán.

Với `--format json` hoặc `--format toon`, agent chỉ thấy kết quả cuối cùng. Để hiển thị `approval_url` cho chủ sở hữu sớm hơn, stream các frame bằng `--format jsonl`.

```bash theme={null}
inflow mpp pay https://api.example.com/paid-resource --interval 5 --max-attempts 180 --format jsonl
```

`--timeout` mặc định là 900 giây, bằng thời hạn phê duyệt trên server.

## Thanh toán trong hai bước

Dùng cách này khi host chạy agent của bạn không thể chờ một lệnh chạy lâu.

**1. Bắt đầu thanh toán**

Chạy `pay` không có `--interval`.

```bash theme={null}
inflow mpp pay https://api.example.com/paid-resource
```

Kết quả chứa `transaction_id`, `approval_id`, `approval_url` và một đối tượng `_next`.

**2. Hiển thị URL phê duyệt**

Đưa ngay `approval_url` cho chủ sở hữu. Lưu ngay `transaction_id`. Bạn cần giá trị này để tiếp tục.

**3. Hoàn tất thanh toán**

Chạy ngay lệnh trong `_next.command`, với `inflow` ở phía trước. Không chờ chủ sở hữu trả lời trước.

```bash theme={null}
inflow mpp fetch <transaction_id> https://api.example.com/paid-resource --interval 5 --max-attempts 180
```

`fetch` polling cho đến khi chủ sở hữu phê duyệt. Sau đó lệnh này gửi credential cho người bán và trả về body.

Với x402, thay `mpp` bằng `x402` trong mỗi lệnh.

## Tiếp tục một khoản thanh toán bị gián đoạn

Chạy `fetch` với `transaction_id` đã lưu. Không bắt đầu một khoản thanh toán mới cho cùng request đó.

```bash MPP theme={null}
inflow mpp fetch <transaction_id> https://api.example.com/paid-resource --interval 5 --max-attempts 180
```

```bash x402 theme={null}
inflow x402 fetch <transaction_id> https://api.example.com/paid-resource --interval 5 --max-attempts 180
```

## Kiểm tra hoặc hủy một khoản thanh toán

| Lệnh | Chức năng |
| - | - |
| `inflow mpp status <transactionId>` | Hiển thị trạng thái phía người mua của một giao dịch MPP. |
| `inflow x402 status <transactionId>` | Hiển thị trạng thái ký của một giao dịch x402. |
| `inflow mpp cancel <approvalId>` | Thử hủy một phê duyệt MPP. |
| `inflow x402 cancel <approvalId>` | Thử hủy một phê duyệt x402. |

Lệnh hủy là một request kiểu best-effort.

## Gửi body hoặc header

Request gửi người bán dùng `GET` theo mặc định. Dùng `--method`, `--data` và `--header` cho các request khác.

```bash theme={null}
inflow mpp pay https://api.example.com/upload --method POST --data '{"name":"report"}' --header "X-Request-Id: 42" --interval 5
```

Với `--data`, kiểu nội dung là `application/json`. Một giá trị `--header` có thể thay đổi kiểu nội dung này. `--header` có thể lặp lại.

## Chọn một tùy chọn thanh toán

Các flag này giới hạn những tùy chọn của người bán mà CLI xem xét.

| Giao thức | Flag | Ví dụ |
| - | - | - |
| MPP | `--payment-method` | `inflow` |
| MPP | `--intent` | `charge` |
| MPP | `--currency` | `USDC` |
| MPP | `--rail` | `balance` hoặc `instrument` |
| x402 | `--scheme` | `balance`, `exact` hoặc `instrument` |
| x402 | `--network` | `eip155:84532` |
| x402 | `--asset` | Một địa chỉ ERC-20 hoặc một mint SVM |
| x402 | `--asset-name` | `USDC` |

Để thanh toán bằng một thẻ đã liên kết cụ thể, dùng `--instrument-id` với MPP hoặc x402. Nếu không có flag này, CLI dùng thẻ chính của bạn. Nếu `outcome` là `verification-required`, đưa `verification_url` cho chủ sở hữu. Không bắt đầu một khoản thanh toán mới.

Với x402, `--payment-id` gửi định danh thanh toán của riêng bạn. Định danh này phải có từ 16 đến 128 ký tự thuộc `a-z`, `A-Z`, `0-9`, `_` và `-`.

## Giữ nội dung và bí mật bên ngoài chat

| Flag | Chức năng |
| - | - |
| `--output-file` | Ghi body response vào một file. Dùng flag này cho PDF, hình ảnh và nội dung nhị phân khác. |
| `--no-show-body` | Bỏ body response khỏi kết quả. |
| `--credential-file` (MPP) | Ghi credential `Authorization: Payment` vào một file với chế độ `0600`. |
| `--payload-file` (x402) | Ghi payload có chữ ký vào một file với chế độ `0600`. |

## Mua gói thuê bao cho một resource MPP

Các đề nghị định kỳ là challenge MPP có intent `subscription`.

**1. Tìm tùy chọn**

```bash theme={null}
inflow mpp inspect https://api.example.com/pro
```

Sao chép ID tùy chọn của đề nghị gói thuê bao.

**2. Mua gói thuê bao**

```bash theme={null}
inflow mpp subscribe https://api.example.com/pro --option-id <option_id> --interval 5
```

Chủ sở hữu xem xét và phê duyệt các điều khoản định kỳ. Sau đó InFlow quyết toán kỳ đầu tiên.

**3. Dùng gói thuê bao**

```bash theme={null}
inflow subscriptions fetch <subscription_id> https://api.example.com/pro
```

| Lệnh | Chức năng |
| - | - |
| `inflow subscriptions list` | Liệt kê các gói thuê bao của bạn. `--status` lọc theo `active`, `cancelled`, `expired`, `failed`, `past_due`, `pending` hoặc `revoked`. |
| `inflow subscriptions get <subscriptionId>` | Hiển thị chi tiết của một gói thuê bao. |
| `inflow subscriptions cancel <subscriptionId>` | Hủy gói thuê bao ngay lập tức. |

> [!WARNING]
>
> Một agent phải có phê duyệt rõ ràng của chủ sở hữu trước khi agent hủy một gói thuê bao.

## Giải mã một header

`decode` đọc một header thanh toán thô.

```bash theme={null}
inflow mpp decode "<WWW-Authenticate value, credential, or receipt>"
inflow x402 decode "<PAYMENT-REQUIRED value>"
```

## Quy tắc cho agent

* Không bao giờ in token OAuth hoặc API key.
* Dùng `fetch` để hoàn tất một khoản thanh toán đã phê duyệt. `fetch` gắn credential vào request gửi người bán, nên credential nằm bên ngoài chat.
* Trên luồng nhanh, credential trong kết quả chỉ để tham khảo. Không gửi lại credential đó.
* Lưu `transaction_id` ngay khi bạn nhận được giá trị này.

## Khắc phục sự cố

> [accordion] Khoản thanh toán không bao giờ được quyết toán
>
> Chủ sở hữu không phê duyệt khoản thanh toán. Phê duyệt hết hạn sau 900 giây. Kiểm tra trạng thái bằng `inflow mpp status` hoặc `inflow x402 status`.

> [accordion] Lệnh không tìm thấy tùy chọn phù hợp
>
> Các bộ lọc của bạn loại trừ mọi tùy chọn của người bán. Bỏ `--currency`, `--rail`, `--scheme`, `--network` hoặc `--asset-name`. Sau đó chạy lại `inflow inspect`.

> [accordion] Số dư quá thấp
>
> Chạy `inflow deposit-addresses list`. Gửi stablecoin đến địa chỉ đầy đủ. Sau đó chạy lại `inflow balances list`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.