> For the complete documentation index, see [llms.txt](https://resources.atriptech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://resources.atriptech.com/api-wen-dang/product-guides/booking/booking-step-guides/payment-and-ticketing/vcc-passthrough.md).

# VCC Passthrough

## VCC Passthrough 使用说明

## 一、什么是 VCC 支付

**VCC Passthrough** 是一种通过虚拟信用卡（VCC）完成资金结算的支付方式，专为代理商（如 OTA、TMC）与航空公司之间的交易场景设计。其核心逻辑为：代理商将客户的虚拟信用卡信息直接透传给航司完成扣款，无需存储或处理真实信用卡数据。

#### 核心优势

* **安全性**：避免存储真实信用卡信息，降低数据泄露风险。
* **简化合规**：由航司或支付服务商直接处理敏感信息，减少合规负担。
* **灵活结算**：可设置 VCC 限额或单次使用，便于退款或费用控制（如服务费分离）。
* **自动化**：适合高频交易，减少人工对账成本。

## 二、VCC 支付流程

{% stepper %}
{% step %}

### 价格获取

通过 Search/Verify/Order 接口中的 VendorFare 对象获取 VCC 支付价格。
{% endstep %}

{% step %}

### 支付

通过 `pay.do` 接口发起支付请求，需传入以下关键参数：

```java
{
    "orderNo": "订单号",
    "supportCreditTransPayment": "1",
    "creditCard": {
        "cardNumber": "卡号",
        "cardExpireMonth": "到期月份（MM）",
        "cardExpireYear": "到期年份（YYYY）",
        "cardCVV": "***",
        "cardHolderLastName": "持卡人姓氏",
        "cardHolderFirstName": "持卡人名",
        "cardHolderCountry": "持卡人国家",
        "cardHolderCity": "持卡人城市",
        "cardHolderPostCode": "邮编",
        "cardHolderAddress": "账单地址"
    },
    "paymentMethod": "3"  // 固定传值3表示VCC支付
}
```

关键字段说明：

| 字段               | 类型 | 说明及传值                       |
| ---------------- | -- | --------------------------- |
| paymentMethod    | 必填 | 使用的支付方式，如需使用 vcc 支付，这里需要传 3 |
| creditCard       | 必填 | 需完整传递虚拟信用卡信息                |
| **paymentLimit** | 可选 | 设置最高可接受票价（详见下方「价格变动处理」）     |
| {% endstep %}    |    |                             |
| {% endstepper %} |    |                             |

## 三、使用规范与注意事项

### 适用订单范围

* **判断方式**：调用 search 接口时，若返回的 `supportCreditTransPayment=1` 且 `vendorFare` 对象存在价格，则表示 Atlas 支持 VCC 支付。
* **不适用场景**：若 `supportCreditTransPayment=0` 或 `vendorFare` 为空，则航司不支持该方式。

### 航司级客户 VCC 透传限制

ATRIP 展示 Atlas 整体航司支付能力。客户自有 VCC 透传还可能受航司、航线、渠道和卡组织限制。

请在 **Airline List** 中筛选 **Payment Method** 为 **VCC**，确认整体能力。下表列出客户自有 VCC 用于航司支付时的额外限制。

| 航司二字码 | 客户 VCC 透传支持情况 | 具体限制或未开放原因                                                                    |
| ----- | ------------- | ----------------------------------------------------------------------------- |
| `TR`  | 部分航线暂不可用      | `JP`、`TW`、`AU`、`CN`、`TH`、`SG`、`ID`、`VN` 始发航线使用 VCC 需支付 3% 手续费，当前未开放客户 VCC 透传。 |
| `AK`  | 部分渠道可用        | 仅 Sabre 渠道支持客户 VCC 透传。                                                        |
| `VF`  | 暂不可用          | 航司要求白名单和指定 Card BIN，当前未向客户开放。                                                 |
| `U2`  | 暂不可用          | 航司支付风控严格，当前未向客户开放。                                                            |
| `XQ`  | 暂不可用          | 使用 VCC 需支付 2.5% 手续费，当前未开放客户 VCC 透传。                                           |
| `6E`  | 暂不可用          | 国际线使用 VCC 需支付 3% 手续费，国内线需支付 2% 手续费，当前未开放客户 VCC 透传。                            |
| `7C`  | 有条件可用         | 支持 VCC，但不接受 Mastercard。                                                       |
| `RS`  | 有条件可用         | 支持 VCC，但不接受 Mastercard。                                                       |
| `BC`  | 有条件可用         | 已确认 Mastercard VCC 可用。Visa VCC 仍需进一步验证。                                       |
| `HP`  | 有条件可用         | 已确认 Mastercard VCC 可用。Visa VCC 仍需进一步验证。                                       |
| `GE`  | 有条件可用         | 已确认 Mastercard VCC 可用。Visa VCC 仍需进一步验证。                                       |

### 价格变动处理策略

由于 VCC 支付方式是将客户的虚拟信用卡信息直接传递给航空公司完成支付，故通过这种支付方式 Atlas 无法进行任何的价格保护。针对部分无法占座、支付时需要增加额外手续费的航司，在实际出票过程中票价会有涨跌变化，这部分的金额变动需要由客户自己承担。Atlas 会在中间进行一些保护策略：

{% stepper %}
{% step %}

### 航司降价时

系统自动按低价出票，实际扣款金额为最终成交价（可在 VCC 账单中确认实际扣款金额）。
{% endstep %}

{% step %}

### 航司涨价时

* **用户设置上限**：通过 **paymentLimit** 指定最高可接受金额。若涨价后金额 ≤ 上限则正常扣款（可在 VCC 账单中确认实际扣款金额）；若超限则出票失败。
* **未设置上限**：

  * **价格变动阈值**：`max(订单金额 × 5%, USD 5 × 乘客人数)`
  * **默认支付上限**：订单金额 + 价格变动阈值
  * **余额要求**：VCC 余额必须覆盖默认支付上限，否则订单将取消。

  **计算示例**

  | 场景                 | 按人计算               | 按订单金额的 5% 计算          | 价格变动阈值 |
  | ------------------ | ------------------ | --------------------- | ------ |
  | 2 名乘客，订单金额 USD 50  | USD 5 × 2 = USD 10 | USD 50 × 5% = USD 2.5 | USD 10 |
  | 1 名乘客，订单金额 USD 300 | USD 5 × 1 = USD 5  | USD 300 × 5% = USD 15 | USD 15 |

{% endstep %}
{% endstepper %}

### VCC 卡使用建议

* 建议使用单次卡（如使用多次卡，请明确告知不可重试，避免重复多次扣款带来损失）。
* 预留部分 VCC 开卡金额（避免航司变价）。

### 支付成功率优化指南

#### 变价处理

* 设置可接受金额上限。
* 预留部分 VCC 开卡金额。

#### 基础配置

* **开通 3DS 自动通过**：要求 VCC 供应商启用所有交易的 3DS 自动验证功能（核心前置条件）。

#### 用卡策略

| **策略类别**  | **推荐操作**                                                                       |
| --------- | ------------------------------------------------------------------------------ |
| **卡类型**   | <p>✅ 优先选择与航司属地一致的本地主流卡（如欧美航司用 VISA/Mastercard）<br>⚠️ 避免预付卡、虚拟银行匿名卡及高风险地区发卡</p> |
| **交易限额**  | 单笔≤$5,000（大额支付需提前与发卡行确认限额）                                                     |
| **交易间隔**  | 同一卡号支付间隔≥15分钟，避免触发风控                                                           |
| **环境一致性** | 支付 IP/设备指纹需与卡归属地匹配，必要时使用 VPN 模拟本地环境                                            |

#### 信息填写规范

* 持卡人姓名需与订票信息完全一致。
* 账单地址建议模拟真实地址，优先匹配持卡人所在地。

{% hint style="info" %}
**免责声明**：以上建议基于行业通用经验，实际结果可能受航司风控策略、发卡行政策等因素影响。
{% endhint %}

### 支付失败处理

#### 场景说明

因航司风控、余额不足或价格超限导致支付失败时，订单状态将变更为 Cancel。

#### 解决方案

{% tabs %}
{% tab title="API" %}
{% stepper %}
{% step %}

### 重新生成订单

调用 `regenerateOrder.do` 接口：

```json
{
  "originalOrderNo": "{original order no}"
}
```

{% endstep %}

{% step %}

### 选择新的支付方式

调用 `pay.do` 接口，可更换成新卡或使用账户余额支付：

```json
{
  "orderNo": "{new order no}",
  "supportCreditTransPayment": null, // no need
  "creditCard": null
}
```

{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="ATrip" %}
{% stepper %}
{% step %}

### 登录 ATrip 系统

进入「My Bookings」找到需处理的订单，点击「Regenerate」获取新订单号。

![](https://content.gitbook.com/content/DGvFJgcmYPDYk6hvtLpx/blobs/0koiiauOFuPiXUcAvDEO/attachments/a138dc38-e8a0-42c7-8559-c776cca13e1e.png)

![](https://content.gitbook.com/content/DGvFJgcmYPDYk6hvtLpx/blobs/VK5moHotP5Y7rr0Dv0Mt/attachments/43afa425-ea9d-4a5d-a6dc-1d2b323d7e16.png)
{% endstep %}

{% step %}

### 余额支付

在新订单详情页点击「Pay」按钮，系统将自动使用账户余额完成扣款。

![](https://content.gitbook.com/content/DGvFJgcmYPDYk6hvtLpx/blobs/xEFUzln6iDCHultseYgh/attachments/554f4cf9-173c-4d85-86e2-cba558a9aa76.png)
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

## 四、FAQ

<details>

<summary>vcc 支付时，报价与实际出票价格是否会存在差异，差异需要如何处理？</summary>

会存在差异。这部分金额全部由代理人自行承担，自负盈亏。具体的盈亏数据可在 dashboard-price change 查看。

</details>

<details>

<summary>vcc 支付支持哪些航司？</summary>

可在 Airline List 中筛选 Payment Method 为 VCC 的航司。客户自有 VCC 透传还可能受航司、航线、渠道和卡组织限制。请同时查看上方「航司级客户 VCC 透传限制」。

</details>

<details>

<summary>支付给航司的实际金额可以在哪里看到？</summary>

可以在 2 个地方看到：

1. 可在 VCC 的账单中查看。
2. 出票成功后，在 order detail 接口也将返回实际金额。

</details>

<details>

<summary>vcc 支付场景下 Atlas 是什么角色？</summary>

Atlas 作为技术服务商提供自动出票服务，实际出票人是代理人自己。

</details>

<details>

<summary>为什么有些 VCC 卡在官网可以支付成功，通过 Atlas 透传却支付失败了？</summary>

这里涉及到航司的风控策略，单笔高额交易、短时高频交易以及其他场景都可能会触发风控警报。

</details>

## 五、Atlas 处理 VCC 透传交易失败指南

{% hint style="warning" %}
**请确保您已经走过人工测试支付的流程！**
{% endhint %}

{% stepper %}
{% step %}

### 人工测试支付

请客户使用该 VCC（虚拟信用卡）在航司官网尝试支付。
{% endstep %}

{% step %}

### 确认支付结果

**支付失败**：如果支付失败，很大概率是航司基于其风控规则拦截了订单，请您更换其他的 VCC 进行支付。

**支付成功**：如果支付成功，可以提交工单给 Atlas，内容包括：

* 保存且附上支付成功的截图。
* 提供 VCC 供应商的名称。
* 提供 VCC 的 BIN 号（前 6 位卡号）。
  {% endstep %}

{% step %}

### Atlas 协助处理

Atlas 将协助进一步处理，确保支付流程顺畅。
{% endstep %}
{% endstepper %}

通过以上步骤，Atlas 将协助您处理 VCC 透传交易失败的情况，确保支付流程顺利进行。

## 附录：VCC 支付相关校验

| **字段**       | **校验**                                                                                                                                   |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| cardNo       | <p>卡号必须为13-19位数字<br>输入的卡号不符合信用卡号校验逻辑（不符合 Luhn 算法）<br>卡号被风控拒绝（相同的卡号在30分钟内失败5次以上，会触发该报错，该卡在24小时内不再可以使用）</p>                                |
| cardExpire   | <p><code>cardExpireMonth</code> 必须传入1-12的数字<br><code>cardExpireYear</code> 必须传入2位或4位数字<br><code>cardExpire</code> 必须大于等于当前年月</p>         |
| cardCVV      | `cardCVV` 必须为3-4位数字                                                                                                                      |
| cardHoldName | <p><code>cardHolderLastName</code> 只能使用以下字符：A-Z、a-z、-、À-Ö、Ø-ö、ø-ÿ<br><code>cardHolderFirstName</code> 只能使用以下字符：A-Z、a-z、-、À-Ö、Ø-ö、ø-ÿ</p> |

卡相关地址信息要求必填。

| **字段**             | **校验**                                               |
| ------------------ | ---------------------------------------------------- |
| cardHolderCountry  | `cardHolderCountry` 必须是2位字母，且需要符合 ISO3166 标准         |
| cardHolderProvince | 与该卡关联的账单地址所在的州/省。请仅使用两位字母代码，例如使用“CA”，而非“California”。 |
| cardHolderCity     | `cardHolderCity` 不能为纯数字                              |
| cardHolderPostCode | `cardHolderPostCode` 只能为数字或英文字母，长度大于4                |
| cardHolderAddress  | `cardHolderAddress` 必须大于6个字符                         |
