EMV QR

Международный стандарт EMVCo для платёжных QR-кодов; задаёт структуру полей, контрольную сумму и форматы для merchant-presented и consumer-presented QR.

EMV QR — семейство спецификаций организации EMVCo (объединяет Visa, Mastercard, UnionPay, Amex, Discover, JCB), определяющих формат платёжных QR-кодов. Документ «EMV QR Code Specification for Payment Systems» описывает два режима: Merchant-Presented Mode (MPM) — продавец показывает QR, покупатель сканирует; и Consumer-Presented Mode (CPM) — покупатель предъявляет QR из приложения, терминал сканирует. Оба режима используют TLV-подобную структуру (Tag-Length-Value) с числовыми идентификаторами полей.

Структура MPM-кода

Полезная нагрузка MPM-кода — строка ASCII с полями фиксированного формата. Каждое поле кодируется как двузначный ID + двузначная длина + значение. Обязательные поля включают: ID 00 (Payload Format Indicator, значение «01»), ID 01 (Point of Initiation Method: «11» статический, «12» динамический), идентификаторы платёжных систем в диапазоне ID 02–51, ID 52 (Merchant Category Code, MCC по ISO 18245), ID 53 (Transaction Currency по ISO 4217), ID 58 (Country Code по ISO 3166-1), ID 59 (Merchant Name), ID 60 (Merchant City) и ID 63 — четырёхсимвольная контрольная сумма CRC-16/CCITT-FALSE всей строки, включая «6304» без значения суммы.

  • Статический QR (ID 01 = «11») — сумма вводится покупателем; один код для всех транзакций.
  • Динамический QR (ID 01 = «12») — сумма зашита в код; генерируется под каждую транзакцию.
  • ID 54 — опциональная сумма транзакции (Transaction Amount).

Применение в России и СБП

В России стандарт EMV QR лёг в основу QR-платежей Системы быстрых платежей (СБП) Банка России. Национальная платёжная карта (НСПК) адаптировала MPM-спецификацию, добавив идентификатор платёжной системы «ru.nspk» в поле диапазона 02–51. Банки-участники СБП обязаны поддерживать как статические (для малого бизнеса), так и динамические (для торгового эквайринга) QR-коды. Формат также применяется в Mir Pay при оплате через QR.

Интеграция EMV QR в кассовое ПО строится по единому принципу: генерация строки с полями по спецификации, вычисление CRC-16, кодирование в QR-код по ISO/IEC 18004 с уровнем коррекции M или выше. Важно понимать, что EMV QR описывает содержимое, тогда как ISO/IEC 18004 описывает физическую структуру матричного кода — они работают в паре и не заменяют друг друга.