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

# 请求虚拟卡审批

`requestVirtualCard`

提交经理审批请求以创建一张虚拟卡。获批后，Fluz 会使用提交的参数创建该卡片。

## Scopes

| Action | Scope                  |
| ------ | ---------------------- |
| 创建请求   | `REQUEST_VIRTUAL_CARD` |
| 列出请求   | `LIST_APPROVALS`       |
| 批准或拒绝  | `MANAGE_APPROVALS`     |

## Webhook 标识符

| Field          | Value                   |
| -------------- | ----------------------- |
| `approvalType` | `VIRTUAL_CARD_CREATION` |
| `approvalCode` | `600003`                |

Webhook 事件：`APPROVAL_CREATE`、`APPROVAL_APPROVE`、`APPROVAL_DECLINE`，以及在执行失败时的 `APPROVAL_HANDLER_ERROR`。

## 创建请求

### RequestVirtualCardInput

| Field                | Type                          | Required | Description                                           |
| -------------------- | ----------------------------- | -------- | ----------------------------------------------------- |
| `seatId`             | UUID                          | Yes      | 与请求者关联的 Seat                                          |
| `offerId`            | UUID                          | Yes      | 虚拟卡优惠 ID。使用 `getVirtualCardOffers` 列出有效优惠             |
| `purchaseAmount`     | Float                         | Yes      | 该卡的采购金额                                               |
| `channel`            | SourcePlatformChannel         | Yes      | 请求来源渠道（例如 `API`）                                      |
| `fluzpayAmount`      | Float                         | Yes      | 从 Fluz 余额资金中注入的金额                                     |
| `spendLimitDuration` | VirtualCardSpendLimitDuration | Yes      | 限额周期：`DAILY`、`WEEKLY`、`MONTHLY`、`ANNUAL` 或 `LIFETIME` |
| `virtualCardPIN`     | String                        | No       | 可选卡片 PIN                                              |
| `brandLocked`        | Boolean                       | No       | 将卡片锁定到特定商户品牌                                          |
| `mccId`              | String                        | No       | 商户类别限制                                                |
| `shareWith`          | \[String]                     | No       | 与之共享该卡的用户 ID                                          |
| `pinAuthToken`       | String                        | No       | 需要时的 PIN 授权令牌                                         |

### 示例 Mutation

```graphql theme={null}
mutation {
  requestVirtualCard(
    input: {
      seatId: "db11ec6c-c371-4184-ab6a-3dfb2c92c4d3"
      offerId: "b23630f6-8d91-43df-84aa-a541e7691197"
      purchaseAmount: 100.00
      channel: API
      fluzpayAmount: 100.00
      spendLimitDuration: MONTHLY
    }
  ) {
    success
    messageId
    error {
      code
      message
    }
  }
}
```

### 示例响应

```json theme={null}
{
  "data": {
    "requestVirtualCard": {
      "success": true,
      "messageId": "1234567890"
    }
  }
}
```

## 批准请求

使用来自 `approvalRequests` 或 `APPROVAL_CREATE` webhook 的 `approvalId` 调用 `approveApprovalRequest`。需要 `MANAGE_APPROVALS`。

```graphql theme={null}
mutation {
  approveApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

批准后，Fluz 会根据原始请求中的参数创建虚拟卡。

## 拒绝请求

使用 `approvalId` 调用 `declineApprovalRequest`。需要 `MANAGE_APPROVALS`。

```graphql theme={null}
mutation {
  declineApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

当请求被拒绝时，不会创建虚拟卡。
