# 其他

> 返回前台基础数据的 Ajax API 接口：电话区号、货币、国家/地区与省州、访客所在地、商品优惠券，以及主题语言包。

其他 API 返回前台需要的基础数据：电话区号、货币、国家/地区、省/州、访客所在的国家/地区、店铺已开通的货币、商品可领取的优惠券，以及主题的语言包。

## 获取国际电话区号列表

```text
GET /{locale}/api/phone
```

获取电话相关信息数据。

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/phone')
  .then((response) => response.json())
  .then((data) => {
    // Do something...
  });
```

### 响应

**数据结构 | 示例**

*   Array [

- `cn_name` string

  国家的中文名称。
- `flag` string

  国旗图片地址。
- `iso_code_2` string

  ISO 3166-1 alpha-2 国家代码。
- `iso_code_3` string

  ISO 3166-1 alpha-3 国家代码。
- `name` string

  国家的英文名称。
- `phone_code` string

  国家的国际电话区号。
- `phone_key` string

  由国家代码与电话区号组成的键，例如 `AF_93`。
*   ]

```json
[
  {
    "cn_name": "阿富汗",
    "flag": "https://imglib.shoplazza.com/42757bc371af7061a1775697529b55c6.png",
    "iso_code_2": "AF",
    "iso_code_3": "AFG",
    "name": "Afghanistan",
    "phone_code": "93",
    "phone_key": "AF_93"
  },
  {
    "cn_name": "奥兰群岛",
    "flag": "https://imglib.shoplazza.com/Aland.png",
    "iso_code_2": "AX",
    "iso_code_3": "ALA",
    "name": "Aland lslands",
    "phone_code": "358",
    "phone_key": "AX_358"
  },
  {
    "cn_name": "津巴布韦",
    "flag": "https://imglib.shoplazza.com/eb2d7eafed41ce90f19b6b94055291a7.png",
    "iso_code_2": "ZW",
    "iso_code_3": "ZWE",
    "name": "Zimbabwe",
    "phone_code": "263",
    "phone_key": "ZW_263"
  }
]
```

## 获取平台支持的货币列表

```text
GET /{locale}/api/currency
```

获取货币相关信息数据。

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/currency')
  .then((response) => response.json())
  .then((data) => {
    // Do something...
  });
```

### 响应

**数据结构 | 示例**

*   Array [

- `cn_name` string

  货币的中文名称。
- `code` string

  货币代码，例如 `USD`。
- `currency_id` number

  货币 ID。
- `flag` string

  国旗图片地址。
- `symbol_left` string

  显示在金额左侧的符号。
- `symbol_right` string

  显示在金额右侧的符号。
- `title` string

  按前台语言展示的货币名称。
- `value` number
*   ]

```json
[
  {
    "cn_name": "美元",
    "code": "USD",
    "currency_id": 1,
    "flag": "//img.staticdj.com/411902f97f55701c425aeb0b1df78fed.png",
    "symbol_left": "$",
    "symbol_right": "",
    "title": "United States Dollars (USD)",
    "value": 0
  },
  {
    "cn_name": "欧元",
    "code": "EUR",
    "currency_id": 2,
    "flag": "//img.staticdj.com/8e76e4a274e105aaeca38a9e00f76821.png",
    "symbol_left": "€",
    "symbol_right": "",
    "title": "Euro (EUR)",
    "value": 0
  },
  {
    "cn_name": "伊朗里亚尔",
    "code": "IRR",
    "currency_id": 152,
    "flag": "//img.staticdj.com/df0e6a9526632c7f50447e2d28d7766e.png",
    "symbol_left": "",
    "symbol_right": "﷼",
    "title": "Iranian Rial (IRR)",
    "value": 0
  }
]
```

## 获取国家/地区列表

```text
GET /{locale}/api/country
```

获取国家/地区相关信息数据。

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/country')
  .then((response) => response.json())
  .then((data) => {
    // Do something...
  });
```

### 响应

**数据结构 | 示例**

*   Array [

- `cn_name` string

  国家的中文名称。
- `continent` string

  国家所属的大洲。
- `country_id` number

  国家 ID。
- `flag` string

  国旗图片地址。
- `iso_code_2` string

  ISO 3166-1 alpha-2 国家代码。
- `iso_code_3` string

  ISO 3166-1 alpha-3 国家代码。
- `name` string

  国家的英文名称。
- `phone_code` string

  国家的国际电话区号。
*   ]

```json
[
  {
    "cn_name": "阿富汗",
    "continent": "AS",
    "country_id": 1,
    "flag": "https://imglib.shoplazza.com/42757bc371af7061a1775697529b55c6.png",
    "iso_code_2": "AF",
    "iso_code_3": "AFG",
    "name": "Afghanistan",
    "phone_code": "93"
  },
  {
    "cn_name": "奥兰群岛",
    "continent": "EU",
    "country_id": 2,
    "flag": "https://imglib.shoplazza.com/Aland.png",
    "iso_code_2": "AX",
    "iso_code_3": "ALA",
    "name": "Aland lslands",
    "phone_code": "358"
  },
  {
    "cn_name": "津巴布韦",
    "continent": "AF",
    "country_id": 240,
    "flag": "https://imglib.shoplazza.com/eb2d7eafed41ce90f19b6b94055291a7.png",
    "iso_code_2": "ZW",
    "iso_code_3": "ZWE",
    "name": "Zimbabwe",
    "phone_code": "263"
  }
]
```

## 获取国家/地区的省/州列表

```text
GET /{locale}/api/country/{country_code}/province
```

通过国家/地区代码 Alpha-2 获取省/州相关信息数据。

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/country/CN/province')
  .then((response) => response.json())
  .then((data) => {
    // Do something...
  });
```

### 请求参数

- `country_code` string

  两位国家/地区代码，例如 `CN`。

### 响应

**数据结构 | 示例**

*   Array [

- `cn_name` string

  省份的中文名称。
- `code` string

  省份代码。
- `country_code2` string

  省份所属国家的代码。
- `name` string

  省份的英文名称。
- `old_code` string

  省份的旧代码。
- `province_id` number

  省份 ID。
*   ]

```json
[
  {
    "cn_name": "安徽省",
    "code": "CN-AH",
    "country_code2": "CN",
    "name": "Anhui",
    "old_code": "ANH",
    "province_id": 615
  },
  {
    "cn_name": "北京市",
    "code": "CN-BJ",
    "country_code2": "CN",
    "name": "Beijing",
    "old_code": "BJG",
    "province_id": 616
  },
  {
    "cn_name": "浙江省",
    "code": "CN-ZJ",
    "country_code2": "CN",
    "name": "Zhejiang",
    "old_code": "ZHE",
    "province_id": 648
  }
]
```

## 获取访客 IP 和所属国家/地区

```text
GET /{locale}/api/ip-info
```

获取访客的 IP 地址及其解析出的国家/地区。没有参数。

### 请求示例

**Example request using Fetch**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/ip-info')
  .then((response) => response.json())
  .then((data) => {
    // Do something...
  });
```

### 响应

**数据结构 | 示例**

- `country` string

  根据访客 IP 解析出的两位国家代码。
- `ip` string

  访客的 IP 地址。

```json
{
  "country": "US",
  "ip": "203.0.113.10"
}
```

## 获取店铺已开通的货币

```text
GET /{locale}/api/multi-currency/finance-list
```

获取店铺已开通的货币列表和其中的默认货币。没有参数。

### 请求示例

**请求示例**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/multi-currency/finance-list')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 响应

示例中的列表只保留了 3 种货币。

**数据结构 | 示例**

- `state` number

  请求结果标识，`success` 或 `0` 表示请求成功。
- `msg` string

  响应返回的结果说明。
- `data` object

  响应数据主体。

  - `default_code` string

    店铺默认货币的代码。
  - `open_state` number
  - `list` object[]

    店铺已开启的货币列表。

    *   Array [

    - `code` string

      货币代码，例如 `USD`。
    - `title` string

      按前台语言展示的货币名称。
    - `name` string

      货币的英文名称。
    - `symbol` string

      货币符号。
    - `flag` string

      国旗图片地址。
    - `default` number

      是否为默认货币，`1` 是，`0` 否。
    - `format` string
    - `currency_symbol_pos` string

      货币符号的位置，`left` 或 `right`。
    - `finance` number
    *   ]

```json
{
  "state": 0,
  "msg": "请求成功",
  "data": {
    "default_code": "USD",
    "open_state": 1,
    "list": [
      {
        "code": "USD",
        "title": "美元(USD)",
        "name": "United States Dollars (USD)",
        "symbol": "$",
        "flag": "//img.staticdj.com/411902f97f55701c425aeb0b1df78fed.png",
        "default": 1,
        "format": "amount",
        "currency_symbol_pos": "left",
        "finance": 1
      },
      {
        "code": "CNY",
        "title": "中国人民币(CNY)",
        "name": "Chinese Yuan Renminbi (CNY)",
        "symbol": "¥",
        "flag": "//img.staticdj.com/8990b1b7cab189e38913017d3887b918.png",
        "default": 0,
        "format": "amount",
        "currency_symbol_pos": "left",
        "finance": 6.71915
      },
      {
        "code": "JPY",
        "title": "日元(JPY)",
        "name": "Japanese Yen (JPY)",
        "symbol": "¥",
        "flag": "//img.staticdj.com/e2393bdde2c379e21d71ffbe77cc2739.png",
        "default": 0,
        "format": "amount",
        "currency_symbol_pos": "left",
        "finance": 155.872505
      }
    ]
  }
}
```

## 获取商品可领取的优惠券

```text
GET /{locale}/api/discount-code/coupons
```

获取某个商品可以领取的优惠券。

### 请求示例

**请求示例**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/discount-code/coupons?product_id=14a309ec-b966-4cf9-a9bb-33baa821fdbc')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 请求参数

- `product_id` string

  商品的 id。

### 响应

示例所用店铺没有可领券的活动，所以列表为空。

**数据结构 | 示例**

- `data` undefined[]

  响应数据主体。

```json
{
  "data": []
}
```

## 获取主题语言包

```text
GET /{locale}/api/front/themes/languages
```

获取主题的语言包，也就是前台渲染用的文案翻译，按文案分组组织。

### 请求示例

**请求示例**

```javascript
fetch(window.SHOPLAZZA.routes.root + '/api/front/themes/languages?catalogues=all&theme_id=1709a232-7dc7-4412-9209-be8baf14b66f')
  .then((response) => response.json())
  .then((data) => {
    // do something...
  });
```

### 请求参数

- `catalogues` string

  要返回的文案分组。传 `all` 返回全部分组。
- `theme_id` string

  主题的 id。

### 响应

示例省略了大部分文案键。

**数据结构 | 示例**

- `data` object

  响应数据主体。

  - `config` object

    按板块分组的前台文案翻译。

    - `bag` object

      购物袋板块的文案翻译。

      - `` object
    - `blog` object

      博客板块的文案翻译。

      - `` object
    - `cart` object

      购物车板块的文案翻译。

      - `` object
  - `language` string

    返回内容的语言代码，例如 `en-US`。
- `msg` string

  响应返回的结果说明。
- `state` number

  请求结果标识，`success` 或 `0` 表示请求成功。

```json
{
  "data": {
    "config": {
      "bag": {},
      "blog": {},
      "cart": {}
    },
    "language": "en-US"
  },
  "msg": "请求成功",
  "state": 0
}
```
