Heim  >  Artikel  >  Web-Frontend  >  Lassen Sie sich in QR bezahlen

Lassen Sie sich in QR bezahlen

王林
王林Original
2024-07-26 16:58:44577Durchsuche

Get paid in QR

Nein, nicht in Pixel, sondern in Euro.

Nein, nicht mit Kreditkarte.

Ja mit Telefon.

Motivation

Wenn Sie Produkte oder Dienstleistungen verkaufen, ist die Bezahlung eine selbstverständliche Voraussetzung.

Heutzutage ist die Kreditkarte das A und O, jedenfalls online.

Sie verfügen über zahlreiche Zahlungsgateways, die Kreditkarten, Google oder Apple Pay für Sie abwickeln.

Natürlich gegen Gebühr.

In einem physischen Geschäft würden Sie ein Kreditkartenterminal bekommen.

Einige Banken können Ihnen eine viel günstigere Android-App verkaufen, die Ihr Telefon in ein CC-Terminal verwandelt.

Dies ist eine Überlegung wert, insbesondere wenn Sie nur wenige Zahlungen pro Tag abwickeln.

Diese Optionen decken fast alle Situationen in typischen Verbraucherszenarien ab.

Wenn eine Person online oder in ein Ladengeschäft geht und eine Reihe von Produkten kauft oder sich die Haare schneiden lässt.

Aber es gibt noch viel mehr.

  1. Was ist, wenn Sie eine gemeinnützige oder Bürgerorganisation sind, die kleine Zahlungen abwickeln muss?
  2. Was ist, wenn Sie ein B2B-Unternehmen sind und Ihre Kunden nicht mit Direktüberweisungen bezahlen möchten?
  3. Oder was ist, wenn Sie einfach nicht die ca. 2-3 % Mehrkosten für Kreditkartenzahlungen bezahlen möchten.

In all diesen Fällen lautet die Antwort in der Europäischen Union SEPA.

Genauer gesagt SEPA-Überweisung.

Oder sein jüngerer, aber viel schnellerer Bruder SEPA Instant Credit Transfer.

SEPA-Überweisung

Wenn Ihnen der Name nicht bekannt ist, machen Sie sich keine Sorgen, es ist die gleiche alte Überweisung.

Z.B. Sie weisen Ihre Bank an, Geld von Ihrem Konto abzuheben und es jemand anderem zu überweisen.

Was früher ein Papierformular zum Ausfüllen war, sind heutzutage ein paar Klicks in Ihrer Mobile-Banking-App.

Aber wir haben jetzt standardisierte internationale Bankkontonummern – IBANs.

Damit ist es ganz einfach, Geld überall in der EU oder sogar weltweit zu versenden.

Und mit SEPA Instant kommt Ihr Geld in Sekundenschnelle an.

Aber, aber die IBANs sind so lang, dass sie fast furchterregend sind.

Und die Leute sind notorisch schlecht darin, Dinge einzugeben. Sie können also froh sein, wenn Sie die richtige Menge erhalten, und vergessen Sie zusätzliche Notizen.

All diese Probleme lassen sich leicht mit QR-Codes lösen.

Ihre Kunden können sie mit ihrem Telefon scannen, den Betrag überprüfen und in ihrer Banking-App auf „Bezahlen“ klicken.

Da die Liste der Banken, die am SEPA-Sofortüberweisungssystem teilnehmen, immer größer wird, stehen die Chancen gut, dass Ihr Geld im Handumdrehen ankommt.

In einem zukünftigen Blog werden wir einen Blick darauf werfen, wie Sie auf Zahlungseingänge auf Ihrem Bankkonto achten können.

Um beispielsweise die Rechnungserstellung und den Rechnungsversand zu automatisieren.

Lassen Sie mich Ihnen zeigen, wie Sie QR-Codes für die Slowakei und die Tschechische Republik generieren.

Ich möchte diese Liste verlängern. Wenn Sie also wissen, wie QR-Codes in Ihrem Land erstellt werden, lassen Sie es mich bitte wissen.

QR Slowakei

Slowakische Banken haben sich auf einen gemeinsamen Standard namens Pay by Square geeinigt.

Es gibt sogar ein URL-Schema, das in Online-Szenarien verwendet werden kann.

Z.B. Der Benutzer klickt auf einen Link und seine Banking-App wird mit allen ausgefüllten Zahlungsinformationen gestartet.

Leider sind diese nicht interoperabel (im Jahr 2024).

Lassen Sie mich Ihnen zeigen, wie Sie den QR-Code in NodeJS generieren.

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);
    }
});

Die Methode „generate“ stammt aus der bysquare-Bibliothek.

Sie können es wie gewohnt mit npm installieren, npm i bysquare

Um ein PNG-Bild zu erhalten, das wir im Browser oder in einem Rechnungsdokument verwenden können, rufen wir die Methode wie folgt auf.

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 <img style={{ width: "120px", height: "120px" }} src={"/api/paybysquare?content=" + encodeURIComponent(JSON.stringify(payModel))} />
}

Oft ist es sehr hilfreich, der Zahlung eine beschreibende Nachricht hinzuzufügen.

Hier ist ein einfacher Code, der Kundennamen normalisiert.

Dadurch werden diakritische Zeichen entfernt und aus Ján Kováč wird Jan Kovac.

Sollte immer noch perfekt lesbar sein und sicherstellen, dass die Banksysteme es nicht vermasseln.

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

QR Tschechische Republik

Auch wenn sich die Tschechische Republik oder Tschechien bisher (2024) gegen den Euro gewehrt haben, gibt es auch dort ein QR-Code-System.

Und sie haben sogar einen lizenzfreien Codegenerator, den wir verwenden können.
Aus Sicherheitsgründen möchten Sie es jetzt vielleicht trotzdem selbst generieren.

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

const CzQrImage = (czQrLink: string) => {
    return <img style={{ width: "120px", height: "120px" }} src={czQrLink} />
}

International

Leider gibt es noch keinen internationalen oder europäischen QR-Standard.

Sie müssen also den richtigen QR-Code basierend auf dem Land Ihres Benutzers anzeigen.

Wenn Sie Zahlungen aus der Tschechischen Republik erwarten, beachten Sie, dass die tschechischen QR-Codes nur in tschechischen Kronen (tschechische Währung CZK) funktionieren.

Oder wenn Sie in der Tschechischen Republik ansässig sind und Zahlungen aus der Slowakei erwarten, funktioniert der QR nur in Euro.

The code below can help you calculate the right currency amount.

First we get the current reference exchange rate from the central bank.

Then we calculate the euro and czk prices, depending on the product price and currency.

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);

Get Paid

Trying to read badly printed IBANs from invoices or even typing in the horribly long IBANs is super annoying.

That you have to be very careful and check three times, because it is money, makes it even more so.

We make software to make our lives easier, and QR codes for payments fit this goal nicely.

I hope you found the information useful, and if you have some pointers about your national QR code schemes, please shoot them my way.

Happy hacking!

Das obige ist der detaillierte Inhalt vonLassen Sie sich in QR bezahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn