不,不是像素,而是欧元。
不,不能使用信用卡。
是的,用电话。
如果您销售产品或服务,获得报酬是一个明显的要求。
如今信用卡为王,无论如何在网上都很好。
您拥有大量的支付网关,可以为您处理信用卡、Google 或 Apple Pay。
当然是要收费的。
在实体店里,您会得到一个信用卡终端。
有些银行可以向您出售更便宜的 Android 应用程序,将您的手机变成 CC 终端。
这是值得考虑的,特别是如果您每天只处理几笔付款。
这些选项几乎涵盖了典型消费场景中的所有情况。
一个人上网或进入实体店购买一堆产品或理发。
但是,还有更多。
在所有这些情况下,在欧盟,答案是 SEPA。
更具体地说,SEPA 信用转账。
或者是它更年轻但速度更快的兄弟 SEPA 即时信用转账。
如果您不熟悉这个名字,不用担心,它是同样的旧电汇。
例如。您告诉银行从您的帐户中提取资金并存入其他人的帐户。
过去需要填写纸质表格,现在只需在移动银行应用程序中点击几下即可。
但是,我们现在拥有标准化的国际银行帐号 - IBAN。
使汇款变得超级容易在欧盟甚至世界各地的任何地方。
通过 SEPA 即时付款,您的资金可在几秒钟内到达。
但是,但是IBAN太长了,简直可怕。
众所周知,人们不擅长输入东西,所以如果你得到正确的数量,你会很高兴,忘记额外的注释。
所有这些问题都可以通过二维码轻松解决。
您的客户可以用手机扫描它们,检查金额并在银行应用程序中单击“付款”。
随着加入 SEPA 即时信用转账计划的银行名单不断增加,您的钱眨眼间就到账的机会很高。
在以后的博客中,我们将介绍如何监视您的银行帐户上的收款。
例如,自动生成和发送发票。
我来教你如何生成斯洛伐克和捷克的二维码。
我想让这个列表更长,所以如果您知道在您的国家如何制作二维码,请告诉我。
斯洛伐克银行已就名为 Pay by Square 的通用标准达成一致。
甚至还有一个可以在在线场景中使用的url schema。
例如。用户单击链接,他们的银行应用程序将启动,并填写所有付款信息。
遗憾的是,这些无法互操作(2024 年)。
我来教你如何在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 }
在付款中添加描述性消息通常非常有帮助。
这是一些简单的代码,可以规范客户端名称。
这将删除变音符号,将 Ján Kováč 转换为 Jan Kovac.
应该仍然完全可读,并确保银行系统不会搞砸。
const paymentMessage = customerName?.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").substring(0, 100) || "";
尽管捷克共和国或捷克共和国迄今为止(2024年)抵制欧元,但他们也有二维码计划。
他们甚至还有我们可以使用的免版税代码生成器。
现在,出于安全原因,您可能仍然想自己生成它。
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 标准。
因此,您必须根据用户所在的国家/地区显示正确的二维码。
如果您希望从捷克共和国付款,请记住捷克二维码仅适用于捷克克朗(捷克货币 CZK)。
或者,如果您位于捷克共和国,并且希望从斯洛伐克付款,则二维码仅适用于欧元。
下面的代码可以帮助您计算正确的货币金额。
首先我们从央行获取当前的参考汇率。
然后我们根据产品价格和货币计算欧元和捷克克朗的价格。
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 都非常烦人。
你必须非常小心,检查三遍,因为这是钱,更是如此。
我们开发软件是为了让我们的生活更轻松,而用于支付的二维码非常适合这个目标。
我希望您发现这些信息有用,如果您对您的国家二维码方案有一些建议,请按照我的方式拍摄。
黑客快乐!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3