Нет, не в пикселях, а в евро.
Нет, не с помощью кредитной карты.
Да, с телефона.
Если вы продаете товар или услуги, получение оплаты является очевидным требованием.
В наши дни кредитная карта — король, во всяком случае, в Интернете.
У вас есть множество платежных шлюзов, которые принимают за вас кредитные карты, Google или Apple Pay.
За определенную плату, конечно.
В обычном магазине вы найдете терминал для кредитных карт.
Некоторые банки могут продать вам гораздо более дешевое приложение для Android, которое превратит ваш телефон в терминал CC.
Это стоит учитывать, особенно если вы обрабатываете всего несколько платежей в день.
Эти варианты охватывают практически все ситуации в типичных потребительских сценариях.
Когда человек заходит в Интернет или в обычный магазин и покупает кучу продуктов или подстригается.
Но это гораздо больше.
Во всех этих случаях в Европейском Союзе ответом является SEPA.
Точнее, кредитный перевод SEPA.
Или его младший, но гораздо более быстрый брат SEPA Instant Credit Transfer.
Если вы не знакомы с этим названием, не волнуйтесь, это тот же старый банковский перевод.
Например. вы просите свой банк снять деньги с вашего счета и положить их на чужой счет.
То, что раньше было заполнением бумажной формы, сегодня — это пара кликов в мобильном банковском приложении.
Но теперь у нас есть стандартизированные международные номера банковских счетов — IBAN.
Упрощает отправку денег в любую точку ЕС или даже по всему миру.
А благодаря системе SEPA Instant ваши деньги поступают за считанные секунды.
Но номера IBAN такие длинные, они просто ужасны.
А люди, как известно, плохо вводят данные, так что можете быть счастливы, если получите нужную сумму, забудьте о дополнительных примечаниях.
Все эти проблемы легко решить с помощью QR-кодов.
Ваши клиенты могут отсканировать их с помощью своих телефонов, проверить сумму и нажать «Оплатить» в своем банковском приложении.
С учетом растущего списка банков, участвующих в схеме мгновенного кредитного перевода SEPA, вероятность того, что ваши деньги прибудут в мгновение ока, высока.
В следующем блоге мы рассмотрим, как отслеживать входящие платежи на ваш банковский счет.
Например, для автоматизации формирования и отправки счетов.
Позвольте мне показать вам, как создавать 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 }
Часто очень полезно добавить к платежу описательное сообщение.
Вот простой код, который нормализует имена клиентов.
Диакритические знаки будут удалены, а Ян Ковач превратится в Ян Ковач.
Должно быть по-прежнему прекрасно читаемым, и банковские системы не испортят его.
const paymentMessage = customerName?.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").substring(0, 100) || "";
Несмотря на то, что Чехия или Чехия до сих пор (2024 г.) сопротивлялись евро, у них тоже есть схема QR-кода.
И у них даже есть бесплатный генератор кода, который мы можем использовать.
Теперь из соображений безопасности вы все равно можете сгенерировать его самостоятельно.
const czQrLink = "https://api.paylibo.com/paylibo/generator/image?iban=" iban "&amount=" czkPrice "¤cy=CZK&vs=" vsym "&message=" message; const CzQrImage = (czQrLink: string) => { return }
К сожалению, международного или европейского стандарта 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-кодов, поделитесь ими со мной.
Удачного взлома!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3