Що охоплює специфікація EMV QR
Специфікація EMV QR-коду від EMVCo визначає, як платіжні дані розташовуються всередині звичайного QR-коду. Вона має два режими. У режимі, коли код показує продавець (Merchant-Presented Mode, MPM), продавець відображає код, а клієнт сканує його банківським додатком або гаманцем. У режимі, коли код показує споживач (Consumer-Presented Mode, CPM), додаток клієнта показує код, а продавець сканує його на касі.
Специфікація не створює платіжної мережі. Це спільний формат даних, тож національна система чи карткова мережа може додати власні реквізити рахунку, зберігши решту даних незмінною. Ось чому Pix у Бразилії, PromptPay у Таїланді, SGQR у Сінгапурі, DuitNow у Малайзії, QRIS в Індонезії, VietQR у В'єтнамі та Bharat QR в Індії структурно схожі.
Як структуровано дані
Дані MPM це рядок об'єктів даних, кожен записаний як двоцифровий ID, двоцифрова довжина й значення. Наприклад, 5303840 означає ID 53 (валюта операції), довжина 03, значення 840 (долари США в цифровому форматі ISO 4217). Об'єкти йдуть один за одним без роздільників, а деякі ID це шаблони, що містять власні вкладені об'єкти в тому самому форматі.
Дані мають починатися з ID 00 і закінчуватися ID 63, контрольною сумою. Контрольна сума це значення CRC-16/CCITT-FALSE, записане чотирма шістнадцятковими символами, обчислене над усім, що йде до нього, включно із символами 6304. Сканер, що обчислює іншу контрольну суму, відхиляє код, що ловить більшість помилок набору чи копіювання.
- 00: індикатор формату даних, завжди 01
- 01: спосіб ініціювання, 11 для статичного або 12 для динамічного
- 26-51: шаблони інформації про рахунок продавця
- 52: код категорії продавця (MCC)
- 53: валюта (цифровий код ISO 4217) і 54: сума
- 58: код країни, 59: назва продавця, 60: місто
- 62: додаткові дані, як-от номер рахунку чи посилання; 63: CRC
Статичні та динамічні коди
Статичний EMV QR-код (спосіб ініціювання 11) друкують один раз і використовують повторно, а клієнт вводить суму. Динамічний код (спосіб ініціювання 12) генерують для однієї операції, і він зазвичай несе суму та посилання, тож клієнт лише підтверджує. Надруковані наліпки на прилавку зазвичай статичні, а коди на екрані каси чи в рахунку зазвичай динамічні.