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

# 获取模板元数据

> 获取支付方式模板的详细字段级元数据，包括校验规则、文本类型和下拉选项列表。

`/v2/payments/templates` 仅返回简单的键值骨架，而此端点提供了 UI 正确渲染和校验每个字段所需的完整元数据。对于每个字段，您将获得其位置索引、唯一的 `indexCode`（当其非空时，将其用作 `fieldJson` 中的键）、显示标题、预期的文本类型、最小/最大字符限制、该字段是否可选，以及编码在 `extendInfo` 中的枚举下拉选项。使用此端点可以动态构建收款人创建表单，而无需硬编码字段规则。

## 端点

```text theme={null}
GET https://api.velafi.com/v2/payments/templates/metamessage
```

> [!NOTE]
>
> 在沙盒环境中测试时，请使用 `https://api-test.velafi.com/v2/payments/templates/metamessage`。

## 请求参数

**paymentId** `integer` *required*

需要获取字段元数据的支付方式的数字 ID。

## 响应字段

**code** `integer`

响应状态码。`200` 表示成功。

**msg** `string`

可读的响应信息，例如 `"SUCCESS"`。

**data** `object`

支付方式元数据对象。

**data 字段**

**data.id** `integer`

支付方式 ID。

**data.paymentName** `string`

支付方式的显示名称（例如 `"Wire (CPN)"`）。

**data.paymentType** `integer`

表示支付类型类别的数字代码。

**data.trench** `string`

底层支付通道或服务提供商（例如 `"Circle Payment Network"`）。

**data.fieldList** `array`

有序的字段描述符列表。每一项描述一个输入字段。

**fieldList 项字段**

**index** `integer`

字段在表单中的顺序位置。

**indexCode** `string`

该字段的唯一代码。当其非空时，添加收款人时将此值用作 `fieldJson` 中的键。当其为空时，改用 `title` 的值。

**title** `string`

字段的可读显示标签。

**textType** `integer`

描述预期输入格式的数字代码。请参阅下方的文本类型表。

**promptText** `string`

显示在输入框内的占位符或提示文本。

**minLimit** `integer`

允许的最小字符长度或数值。

**maxLimit** `integer`

允许的最大字符长度或数值。

**isOptional** `boolean`

若该字段可省略则为 `true`；若为必填则为 `false`。

**isAccount** `boolean`

若该字段表示账号或账户标识符则为 `true`。

**extendInfo** `string`

包含附加元数据的 JSON 字符串。对于 `textType` 10（下拉列表），其中包含选项数组，例如 `[{"code":"B2B","name":"B2B"},{"code":"B2C","name":"B2C"}]`。其他类型为空字符串。

## 文本类型参考

| 值 | 类型 | 说明 |
| - | - | - |
| 1 | number | 仅限数字字符（0–9） |
| 2 | letter | 仅限字母字符（A–Z、a–z） |
| 3 | alphanumeric | 仅限字母和数字 |
| 4 | string | 任意自由文本字符串 |
| 5 | image | 图片数据。通过 `/v2/base/file/upload` 上传并提交返回的路径。多个路径以逗号分隔。 |
| 6 | ISO 3166-1 | 国家代码（例如 `US`、`CN`） |
| 7 | ISO 3166-2 | 行政区划代码（例如 `US-CA`） |
| 8 | international dialing code | 国际电话区号（例如 `1`、`86`） |
| 9 | date | `yyyy-MM-dd` 格式的日期 |
| 10 | dropdown list | 枚举值；选项以 JSON 形式编码在 `extendInfo` 中 |

## 示例

```bash theme={null}
curl -X GET "https://api.velafi.com/v2/payments/templates/metamessage?paymentId=120" \
  -H "X-BH-TOKEN: YOUR_TOKEN"
```

```json theme={null}
{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "id": 120,
    "paymentName": "Wire (CPN)",
    "paymentType": 5,
    "trench": "Circle Payment Network",
    "fieldList": [
      {
        "index": 1,
        "indexCode": "beneficiaryName",
        "textType": 4,
        "title": "Beneficiary Name",
        "promptText": "Please enter Beneficiary Name",
        "minLimit": 1,
        "maxLimit": 300,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 3,
        "indexCode": "country",
        "textType": 6,
        "title": "Nationality",
        "promptText": "Please select Nationality",
        "minLimit": 1,
        "maxLimit": 300,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 9,
        "indexCode": "dateOfBirth",
        "textType": 9,
        "title": "Date of Birth / Date of Incorporation",
        "promptText": "Please enter Date of Birth / Date of Incorporation (yyyy-MM-dd)",
        "minLimit": 1,
        "maxLimit": 10,
        "isOptional": true,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 13,
        "indexCode": "useCase",
        "textType": 10,
        "title": "Use Case",
        "promptText": "Please select Use Case",
        "minLimit": 1,
        "maxLimit": 100,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": "[{\"code\":\"B2B\",\"name\":\"B2B\"},{\"code\":\"B2C\",\"name\":\"B2C\"},{\"code\":\"C2B\",\"name\":\"C2B\"},{\"code\":\"C2C\",\"name\":\"C2C\"}]"
      },
      {
        "index": 24,
        "indexCode": "accountNumber",
        "textType": 3,
        "title": "Account Number",
        "promptText": "Please enter Account Number",
        "minLimit": 1,
        "maxLimit": 34,
        "isOptional": false,
        "isAccount": true,
        "extendInfo": ""
      }
    ]
  }
}
```

> [!TIP]
>
> 当 `indexCode` 非空时，在 `fieldJson` 请求体中将其用作键。当 `indexCode` 为空时，改用 `title` 字符串作为键。


## Related topics

- [更新日志](https://docs.velafi.com/cn/docs/changelog.md)
- [管理收款人](https://docs.velafi.com/cn/docs/guides/managing-beneficiaries.md)
- [获取支付方式模板](https://docs.velafi.com/cn/api-reference/beneficiary/get-payment-templates.md)
- [获取法币→法币支付方式](https://docs.velafi.com/cn/api-reference/basic-configuration/get-fiat-fiat-payment-methods.md)
- [获取支持的支付方式](https://docs.velafi.com/cn/api-reference/beneficiary/get-supported-payment-methods.md)


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