# Lưu cấu trúc mã thanh toán

`PUT /service/@id/tinopay/pay-codes` · TinoPay, token đăng nhập của chủ dịch vụ

Ghi đè cả danh sách: body `{"pay_codes": [...]}` gửi đủ các mẫu đang có cùng mẫu mới, `[]` xoá hết; tối đa 20 mẫu. `prefix` 2–5 chữ hoặc số (lưu in hoa, không trùng), `suffix_from` ≤ `suffix_to` trong khoảng 1–30, `character_type` là `NumberOnly` hoặc `NumberAndLetter`. Trả danh sách sau khi lưu. Bỏ tiền tố đang được tích hợp Sapo dùng: 409 `RESOURCE_IN_USE`, `details.prefixes` liệt kê các tiền tố đó.

## HTTP request

| Mục | Giá trị |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/tinopay/pay-codes` |
| Method | `PUT` |
| Xác thực | token đăng nhập của chủ dịch vụ TinoPay (`Authorization: Bearer <token>`); gateway `/v1` chưa mở TinoPay |
| Content-Type | `application/json` |

## Tham số

| Tên | Vị trí | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- | --- |
| `id` | đường dẫn | int | có | ID dịch vụ TinoPay |
| `pay_codes` | body | array | có | — |

## Example request

```bash
curl -X PUT "https://api.tino.vn/service/100001/tinopay/pay-codes" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "pay_codes": [
    {
      "prefix": "DH",
      "suffix_from": 6,
      "suffix_to": 8,
      "character_type": "NumberOnly"
    },
    {
      "prefix": "TNG",
      "suffix_from": 1,
      "suffix_to": 12,
      "character_type": "NumberOnly"
    }
  ]
}'
```

`$TINO_TOKEN` là token đăng nhập của chủ dịch vụ TinoPay. Tham số đường dẫn trong ví dụ là giá trị mẫu.

SDK ([SDK & Ví dụ](/docs/sdk)): chưa có hàm riêng, dùng `client.request("PUT", "/service/@id/tinopay/pay-codes")`.

## Example response

```json
{
 "data": [
  {
   "prefix": "DH",
   "suffix_from": 6,
   "suffix_to": 8,
   "character_type": "NumberOnly"
  },
  {
   "prefix": "TNG",
   "suffix_from": 1,
   "suffix_to": 12,
   "character_type": "NumberOnly"
  }
 ]
}
```

Mẫu dựng theo tài liệu TinoPay API v1 (Tino chuyển tiếp nguyên dữ liệu TinoPay), giá trị là ví dụ.
