«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Получайте оплату в QR

Получайте оплату в QR

Опубликовано 1 августа 2024 г.
Просматривать:959

Get paid in QR

Нет, не в пикселях, а в евро.

Нет, не с помощью кредитной карты.

Да, с телефона.

Мотивация

Если вы продаете товар или услуги, получение оплаты является очевидным требованием.

В наши дни кредитная карта — король, во всяком случае, в Интернете.

У вас есть множество платежных шлюзов, которые принимают за вас кредитные карты, Google или Apple Pay.

За определенную плату, конечно.

В обычном магазине вы найдете терминал для кредитных карт.

Некоторые банки могут продать вам гораздо более дешевое приложение для Android, которое превратит ваш телефон в терминал CC.

Это стоит учитывать, особенно если вы обрабатываете всего несколько платежей в день.

Эти варианты охватывают практически все ситуации в типичных потребительских сценариях.

Когда человек заходит в Интернет или в обычный магазин и покупает кучу продуктов или подстригается.

Но это гораздо больше.

  1. Что делать, если вы некоммерческая или гражданская организация, которой необходимо обрабатывать небольшие платежи.
  2. Что делать, если вы представляете B2B-компанию и ваши клиенты не хотят платить прямыми переводами.
  3. Или что, если вы просто не хотите платить около 2–3% накладных расходов за платежи по кредитной карте.

Во всех этих случаях в Европейском Союзе ответом является SEPA.

Точнее, кредитный перевод SEPA.

Или его младший, но гораздо более быстрый брат SEPA Instant Credit Transfer.

Кредитный перевод SEPA

Если вы не знакомы с этим названием, не волнуйтесь, это тот же старый банковский перевод.

Например. вы просите свой банк снять деньги с вашего счета и положить их на чужой счет.

То, что раньше было заполнением бумажной формы, сегодня — это пара кликов в мобильном банковском приложении.

Но теперь у нас есть стандартизированные международные номера банковских счетов — IBAN.

Упрощает отправку денег в любую точку ЕС или даже по всему миру.

А благодаря системе SEPA Instant ваши деньги поступают за считанные секунды.

Но номера IBAN такие длинные, они просто ужасны.

А люди, как известно, плохо вводят данные, так что можете быть счастливы, если получите нужную сумму, забудьте о дополнительных примечаниях.

Все эти проблемы легко решить с помощью QR-кодов.

Ваши клиенты могут отсканировать их с помощью своих телефонов, проверить сумму и нажать «Оплатить» в своем банковском приложении.

С учетом растущего списка банков, участвующих в схеме мгновенного кредитного перевода SEPA, вероятность того, что ваши деньги прибудут в мгновение ока, высока.

В следующем блоге мы рассмотрим, как отслеживать входящие платежи на ваш банковский счет.

Например, для автоматизации формирования и отправки счетов.

Позвольте мне показать вам, как создавать QR-коды для Словакии и Чехии.

Я хочу расширить этот список, поэтому, если вы знаете, как делаются QR-коды в вашей стране, дайте мне знать.

QR Словакия

Словацкие банки договорились о едином стандарте под названием Pay by Square.

Существует даже схема URL-адресов, которую можно использовать в онлайн-сценариях.

Например. пользователь нажимает ссылку, и его банковское приложение запускается с заполненной всей платежной информацией.

К сожалению, они несовместимы (в 2024 году).

Позвольте мне показать вам, как сгенерировать QR-код в NodeJS.

app.get("/api/paybysquare", mustAuth, async (req, res, next) => {
    try {
        const body = req.query.content as string;
        const model = JSON.parse(body);
        const content = await generate(model);
        const qrStream = new PassThrough();
        const result = await toFileStream(qrStream, content,
            {
                type: 'png',
                width: 200,
                errorCorrectionLevel: 'H'
            }
        );

        qrStream.pipe(res);
    } catch (ex) {
        next(ex);
    }
});

Метод генерации взят из библиотеки bysquare.

Вы можете установить его с помощью npm, как обычно, npm i bysquare

Чтобы получить изображение PNG, которое мы можем использовать в браузере или в документе счета-фактуры, мы вызываем метод следующим образом.

interface IBySquareModel {
    IBAN: string;
    Amount: number;
    CurrencyCode: string; // must be "EUR",
    VariableSymbol: string;
    Payments: number; // must be 1,
    PaymentOptions: number; // must be 1,
    BankAccounts: number; // must be 1,
    PaymentNote?: string; // optional note
}

const BySquareQR = (payModel: IBySquareModel) => {
    return Получайте оплату в QR
}

Часто очень полезно добавить к платежу описательное сообщение.

Вот простой код, который нормализует имена клиентов.

Диакритические знаки будут удалены, а Ян Ковач превратится в Ян Ковач.

Должно быть по-прежнему прекрасно читаемым, и банковские системы не испортят его.

    const paymentMessage = customerName?.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").substring(0, 100) || "";

QR Чехия

Несмотря на то, что Чехия или Чехия до сих пор (2024 г.) сопротивлялись евро, у них тоже есть схема QR-кода.

И у них даже есть бесплатный генератор кода, который мы можем использовать.
Теперь из соображений безопасности вы все равно можете сгенерировать его самостоятельно.

const czQrLink = "https://api.paylibo.com/paylibo/generator/image?iban="   iban   "&amount="   
czkPrice   "&currency=CZK&vs="   vsym   
"&message="   message;

const CzQrImage = (czQrLink: string) => {
    return Получайте оплату в QR
}

Международный

К сожалению, международного или европейского стандарта QR пока не существует.

Поэтому вам придется показать правильный QR-код в зависимости от страны вашего пользователя.

Если вы ожидаете платежей из Чехии, имейте в виду, что чешские QR-коды работают только в чешских кронах (чешская валюта CZK).

Или, если вы находитесь в Чехии и ожидаете платежей из Словакии, QR работает только в евро.

Приведенный ниже код поможет вам рассчитать правильную сумму в валюте.

Сначала мы получаем текущий базовый обменный курс от центрального банка.

Затем мы рассчитываем цены в евро и чешских кронах в зависимости от цены продукта и валюты.

const getExchangeRate = async () => {
    const now = new Date();
    const dt = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1).toISOString().substring(0, 10);

    const url = "https://nbs.sk/export/sk/exchange-rate/"   dt   "/xml";
    const dat  = { url: url }
    const opts = {
        headers: {
            'Content-Type': 'application/json'
        },
        method: "POST",
        body: JSON.stringify(dat)
    }

    const resp = await fetch("/api/httpfetch", opts);
    const xml = await resp.text();

    const parser = new DOMParser();
    const xmlDoc = parser.parseFromString(xml, "text/xml");
    const node = xmlDoc.querySelector("Cube [currency='CZK']");
    if (node) {
        const attr = node.getAttribute("rate");
        if (attr) {
            const num = attr.replace(/\s/, "").replace(",", ".");
            return  num;
        }
    }
    return undefined;
}

    // basePrice is the amount to be paid, for the products or services
    // currencyCode is the currency the products or services are sold in.
    const czkRate = await getExchangeRate();

    const eurPrice = currencyCode === "EUR" ? basePrice : (Math.ceil(basePrice / czkRate * 100) / 100).toFixed(2);
    const czkPrice = currencyCode === "CZK" ? basePrice : (Math.ceil(basePrice * czkRate * 100) / 100).toFixed(2);

Получите оплату

Пытаться прочитать плохо напечатанные номера IBAN в счетах-фактурах или даже вводить ужасно длинные номера IBAN очень раздражает.

То, что нужно быть очень осторожным и проверять трижды, потому что это деньги, еще больше усугубляет ситуацию.

Мы создаем программное обеспечение, которое делает нашу жизнь проще, и QR-коды для платежей прекрасно соответствуют этой цели.

Надеюсь, эта информация оказалась для вас полезной, и если у вас есть какие-то подсказки о национальных схемах QR-кодов, поделитесь ими со мной.

Удачного взлома!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/chuliomartinez_ebd2d8009bdec/get-paid-in-qr-2dkp?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3