Как создать QR-код для системы быстрых платежей (СБП)?

Здравствуйте! Мы перевели расчетный счет в другой банк и теперь необходимо прикреплять QR-код СБП к документу счета на оплату. При запросе по номеру заказа через API банк предоставляет ссылку на страницу СБП оплаты, на которой отображается QR-код в формате data:image/svg+xml;base64. Однако в HTML-коде страницы и в атрибутах элементов этот QR-код отсутствует, его можно увидеть только во вкладке "Источники" в браузере Chrome. Кто-нибудь сталкивался с подобной задачей? Не важно, на каком языке будет предложено решение.
  • 3 декабря 2024 г. 1:33
Ответы на вопрос 2
Создание QR-кода для системы быстрых платежей (СБП) может быть выполнено с использованием кода на языке программирования, который позволяет работать с изображениями и выполнять HTTP-запросы. Отмечу, что, скорее всего, вам понадобится извлечь QR-код из полученной вами ссылки (data URI) и затем использовать его в вашем документе счёта.

Вот общий алгоритм с примером на Python с использованием библиотеки `requests` для запросов и `Pillow` для работы с изображениями:

1. **Получите данные QR-кода в формате data URI:**
   После выполнения запроса к API вашего банка, вы получите строку, которая выглядит как `data:image/svg+xml;base64,...`, где `...` - это закодированные данные QR-кода.

2. **Извлеките закодированные данные QR-кода:**
   Вам нужно отделить префикс `data:image/svg+xml;base64,` от самого содержимого.

3. **Декодируйте данные и сохраните изображение:**
   Использовать `base64` для декодирования данных и сохранить их в файл или использовать в HTML-документе.

### Пример кода на Python:
```python
import base64
import requests

# URL для запроса, который возвращает QR-код в формате data URI
url = "https://example.com/your-api" # Замените на ваш URL API

# Выполняем HTTP запрос
response = requests.get(url)
data_uri = response.text  # Предполагается, что сервер возвращает данные в формате data URI

# Извлекаем содержимое base64
base64_data = data_uri.split(",")[1]

# Декодируем данные
qr_code_image = base64.b64decode(base64_data)

# Сохраняем в файл или используем как нужно
with open("qr_code.svg", "wb") as f:
    f.write(qr_code_image)

print("QR-код успешно сохранен как qr_code.svg!")
```

### Использование QR-кода в HTML:
После того как вы сохранили изображение, его можно использовать в вашем HTML-документе следующим образом:

```html
<img src="qr_code.svg" alt="QR-код для оплаты" />
```

### Примечания:
- Если QR-код предоставляется именно в формате SVG, то вы можете сохранить его как `.svg` файл. Если это обычное изображение (PNG, JPG), измените расширение и обработку соответственно.
- Если у вас на выходе будет достаточно простая строка, вы сможете использовать также JavaScript для использования полученного QR-кода в веб-приложении.
- Убедитесь, что вы проверяете все ошибки при выполнении запроса к API и при обработке данных.
Вам не нужно заходить на эту страницу. 
Просто берете библиотеку, которая преобразует ссылку в QR-код.
И загоняете ссылку (буквально этот текст) в эту библиотеку:
https://qr.nspk.ru/VPODZV3JONANMKUXO6BOIDP5STMAAQQM?type=02&bank=100000000005&sum=1200&cur=RUB&crc=hQyb

На выходе получаете файл изображения, его и используете.
Похожие вопросы