# Viet QR

Плательщик во Вьетнаме оплачивает по QR-коду VietQR из приложения своего вьетнамского банка:
сканирует код, и приложение открывает перевод с уже заполненными суммой и счётом. Заявка
устроена так же, как [приём по СБП](sbp.md): тот же метод API, те же статусы, callback-и и
правила повторов. Отличаются `payment_method` и то, что выдаётся вместо номера телефона.

| | СБП | Viet QR |
| --- | --- | --- |
| `payment_method` | `sbp` | `viet_qr` |
| Страна и валюта заявки | `RU`, `RUB` | `RU`, `RUB` |
| Что получает плательщик | номер телефона в `requisite` | QR-код: строка VietQR в `requisite` и картинка по `qrcode_link` |
| Как платит плательщик | «Перевод по СБП» по номеру телефона | сканирует QR в приложении вьетнамского банка и платит донгами |

## Создать заявку { #create }

`POST /api/v1/payments` с `payment_method: "viet_qr"`. Сумма `amount` — в **рублях**, как у
остальных российских заявок; `geo_code` и `currency` можно не передавать (по умолчанию `RU`,
`RUB`). Запрос [подписывается](signing.md) так же, как для СБП.

```json
{
  "merchant_payment_id": "order-1004",
  "amount": "5919.00",
  "payment_method": "viet_qr"
}
```

Все поля и правила — в разделе [Приём по СБП → Поля запроса](sbp.md#request-fields), допустимые
методы и суммы — в [Лимитах договора](sbp.md#contract-limits). Метод должен быть в договоре
вашего проекта.

## Ответ { #response }

Вместо номера телефона в ответе — QR-код:

- `requisite` — строка VietQR (`000201…`): по ней можно нарисовать QR-код самостоятельно. Сумма
  в донгах уже записана внутри строки;
- `qrcode_link` — ссылка `https` на готовую картинку этого QR-кода;
- `requisite_bank` — вьетнамский банк получателя, `holder_name` — получатель.

```json
{
  "id": "7c1f2e3d-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
  "merchant_payment_id": "order-1004",
  "status": "processing",
  "amount": 5919,
  "initial_amount": 5919,
  "currency": "RUB",
  "geo_code": "RU",
  "payment_method": "viet_qr",
  "requisite": "00020101021238600010A000000727013000069704360116QRS1072662728020208QRIBFTTA5303704540718467285802VN6304F15D",
  "qrcode_link": "https://api.qrserver.com/v1/create-qr-code/?size=450x450&margin=15&format=svg&data=00020101021238600010A000000727013000069704360116QRS1072662728020208QRIBFTTA5303704540718467285802VN6304F15D",
  "requisite_bank": "Vietcombank",
  "holder_name": "NGUYEN VAN A",
  "created_at": "2026-10-26T10:28:37Z",
  "updated_at": "2026-10-26T10:28:38Z"
}
```

Остальные поля ответа и расчёт `merchant_information` — как у СБП:
[Ответ](sbp.md#response) и [Расчёт `merchant_information`](sbp.md#merchant-information).

## Что показать плательщику { #payer-screen }

- **QR-код** — картинка по `qrcode_link` или код, нарисованный по строке `requisite`.
  Плательщик сканирует его приложением своего банка.
- **Сумма** — плательщик платит в донгах: сумма уже в QR-коде, в приложении банка он увидит её
  сам. `amount` заявки — в рублях, его плательщику показывать не нужно.
- **Получатель** — `requisite_bank` и `holder_name`, чтобы плательщик сверил их в приложении.
- **Срок** — обратный отсчёт от `created_at` на срок заявки вашего проекта.

!!! warning "QR-код — только для этой заявки"
    Не сохраняйте и не показывайте QR повторно. Для новой оплаты создайте новую заявку.

## Статусы и результат { #result }

Статусы, callback-и и опрос — такие же, как у СБП:
[Статусы](sbp.md#statuses) и [Как узнать результат](sbp.md#result).

## Крайние случаи { #edge-cases }

Всё из раздела [Приём по СБП → Крайние случаи](sbp.md#edge-cases) верно и для Viet QR.
Отдельно: если в ответе нет ни строки VietQR в `requisite`, ни `qrcode_link`, реквизиты не
выданы — заявка закроется ошибкой, как у СБП без номера телефона.