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

# ACP商品数据测试与验证流程

> ACP商品数据接入测试与验证流程指南，介绍100条商品小批量优先测试策略、必填字段与Price minor units价格格式校验、URL合法性检查方法，以及SFTP连接测试、API认证验证、HTTP 400/404常见错误排查和Checkout Session交易流程端到端集成测试方案

# 测试与验证

在全量接入之前，系统性的测试和验证是保证数据质量的关键步骤。

## 7.1 小批量优先策略

**核心原则**: 先用约100条商品测试，确认无误后再扩展到全量。

```
阶段1: 约100条商品   → 验证格式和字段正确性
阶段2: 约1000条商品  → 验证批量处理和分片
阶段3: 约10000条商品 → 验证性能和稳定性
阶段4: 全量数据      → 正式上线
```

不要跳过前几个阶段直接上全量。小批量测试可以快速发现格式错误、字段缺失和编码问题，修复成本远低于全量数据出错后的回滚。

## 7.2 必填字段验证

确保以下必填字段都已正确填写：

| 对象      | 必填字段       | 常见错误             |
| ------- | ---------- | ---------------- |
| Product | `id`       | ID不稳定、重复         |
| Product | `variants` | 空数组、缺少Variant    |
| Variant | `id`       | ID不稳定、跨Product重复 |
| Variant | `title`    | 空字符串、缺失          |

```json theme={null}
{
  "id": "prod_001",
  "variants": [
    {
      "id": "var_001_black",
      "title": "Wireless Earbuds - Black"
    }
  ]
}
```

## 7.3 价格格式验证

价格必须使用**minor currency units**（最小货币单位）：

| 货币  | minor unit | 10.00的表示       |
| --- | ---------- | -------------- |
| USD | cent       | `amount: 1000` |
| EUR | cent       | `amount: 1000` |
| JPY | yen（无小数）   | `amount: 10`   |
| GBP | penny      | `amount: 1000` |

```json theme={null}
{
  "price": {
    "amount": 9999,
    "currency": "USD"
  }
}
```

**验证要点**:

* `amount` 必须大于等于0（0表示免费）
* `currency` 使用ISO 4217三字母代码
* 确认未将"元"误传为"分"（99.99 USD应传 `9999` 而非 `99`）

## 7.4 URL验证

逐一检查所有URL：

```
验证清单:
1. URL格式合法（以 https:// 开头）
2. 特殊字符已正确编码（空格使用 %20）
3. URL可公开访问（无需登录）
4. 不包含会过期的session参数
5. 图片URL返回有效图片
6. 包含 utm_medium=feed 追踪参数
```

## 7.5 SFTP连接测试

在正式上传数据前验证SFTP连通性：

```
测试步骤:
1. 使用提供的凭证连接SFTP服务器
2. 上传一个小文件验证写入权限
3. 确认文件成功到达目标目录
4. 验证文件大小匹配（传输完整性）
5. 尝试覆盖同名文件验证覆盖机制
```

## 7.6 API认证测试

验证API凭证和header配置：

```http theme={null}
GET /product_feeds/feed_abc123
Authorization: Bearer api_key_123
API-Version: 2025-09-12
Accept-Language: en-US
User-Agent: MyStore/1.0
Timestamp: 2026-04-11T08:30:00Z
```

如果返回200，说明认证配置正确。如果返回401或403，检查：

* Bearer token是否正确
* token是否过期
* 账户权限是否已开通

## 7.7 常见错误排查

### HTTP 400: invalid\_payload

**原因**: 请求体格式错误或缺少必填字段。

| 常见场景                     | 解决方案                     |
| ------------------------ | ------------------------ |
| 缺少 `variants` 数组         | 每个Product必须包含至少一个Variant |
| Variant缺少 `id` 或 `title` | 补充必填字段                   |
| 价格 `amount` 为负数          | 确保 `amount` 大于等于0        |
| JSON格式错误                 | 检查括号、引号、逗号               |
| 编码不是UTF-8                | 确认文件和请求使用UTF-8           |

### HTTP 404: not\_found

**原因**: 请求的Feed或商品不存在。

| 常见场景      | 解决方案                             |
| --------- | -------------------------------- |
| Feed ID错误 | 确认使用 `POST /product_feeds` 返回的ID |
| Feed已删除   | 重新创建Feed                         |
| 路径拼写错误    | 检查URL路径                          |

### 幂等性冲突

如果使用相同的 `Idempotency-Key` 发送了不同的请求体，可能导致冲突。每个不同的请求批次必须使用唯一的key。

## 7.8 Checkout Session测试

如果商家同时实现了Agentic Checkout端点，需要测试完整的交易流程。

### 创建会话

```http theme={null}
POST /checkout_sessions
Content-Type: application/json

{
  "line_items": [
    {
      "product_id": "prod_001",
      "variant_id": "var_001_black",
      "quantity": 1
    }
  ]
}
```

### 更新会话

```http theme={null}
POST /checkout_sessions/:id
Content-Type: application/json

{
  "shipping_address": {
    "line1": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "postal_code": "94102",
    "country": "US"
  }
}
```

### 完成支付

```http theme={null}
POST /checkout_sessions/:id/complete
```

### 取消会话

```http theme={null}
POST /checkout_sessions/:id/cancel
```

测试以上四个流程，确认状态转换正确、错误处理完善。

## 7.9 Delegate Payment测试

Stripe提供测试模式（test mode）用于支付集成测试：

| 测试项         | 说明                           |
| ----------- | ---------------------------- |
| 测试密钥        | 使用Stripe test mode的API key   |
| 测试卡号        | 使用Stripe提供的测试卡号              |
| vault token | 测试模式下生成的 `vt_test_...` token |
| 支付确认        | 验证支付状态回调正确                   |
| 3DS测试       | 使用Stripe的3DS测试卡号触发认证流程       |

测试模式下不会产生真实交易，可以安全地验证完整支付流程。

## 7.10 数据同步监控

上线后持续监控数据同步状态：

| 监控项       | 建议                |
| --------- | ----------------- |
| SFTP上传成功率 | 每日检查文件是否成功到达      |
| API请求成功率  | 监控4xx和5xx错误率      |
| 数据一致性     | 定期比对本地数据与Feed中的数据 |
| 价格准确性     | 抽查价格是否与实际一致       |
| 库存同步延迟    | 检查库存变化到Feed更新的时间差 |
| 促销状态      | 确认促销按时生效和过期       |

***

**下一章**: [第8章：常见问题](/zh/book-4/ch8-faq) — ACP接入常见问题解答
