Rumah  >  Artikel  >  hujung hadapan web  >  Dapatkan bayaran dalam QR

Dapatkan bayaran dalam QR

王林
王林asal
2024-07-26 16:58:44577semak imbas

Get paid in QR

Tidak, bukan dalam piksel, dalam euro.

Tidak, bukan dengan kad kredit.

Ya dengan telefon.

Motivasi

Jika anda menjual produk atau perkhidmatan mendapat bayaran adalah satu keperluan yang jelas.

Hari ini kad kredit adalah raja, dalam talian juga.

Anda mempunyai banyak gerbang pembayaran, yang akan mengendalikan kad kredit, google atau apple pay untuk anda.

Dengan bayaran, sudah tentu.

Di kedai fizikal, anda akan mendapat terminal kad kredit.

Sesetengah bank boleh menjual kepada anda apl Android yang jauh lebih murah yang menjadikan telefon anda sebagai terminal CC.

Perlu dipertimbangkan, terutamanya jika anda hanya memproses beberapa pembayaran sehari.

Pilihan ini merangkumi hampir semua situasi dalam senario pengguna biasa.

Di mana seseorang pergi ke dalam talian atau ke kedai batu bata & mortar dan membeli sekumpulan produk atau menggunting rambut.

Tetapi, masih banyak lagi.

  1. Bagaimana jika anda adalah organisasi bukan untung atau warganegara yang perlu memproses pembayaran kecil.
  2. Bagaimana jika anda syarikat B2B dan pelanggan anda mahu membayar dengan pemindahan terus.
  3. Atau bagaimana jika anda tidak mahu membayar ~2-3% overhed untuk pembayaran kad kredit.

Dalam semua kes ini jawapannya, di Kesatuan Eropah, ialah SEPA.

Lebih khusus Pemindahan Kredit SEPA.

Atau adik-beradik yang lebih muda, tetapi lebih cepat Pemindahan Kredit Segera SEPA.

Pemindahan Kredit SEPA

Jika anda tidak biasa dengan nama itu, jangan risau, ia adalah pemindahan wayar lama yang sama.

Cth. anda memberitahu bank anda untuk mengambil wang daripada akaun anda dan memasukkan wang kepada orang lain.

Apa yang dahulunya adalah borang kertas yang perlu diisi, pada masa kini, beberapa klik dalam apl perbankan mudah alih anda.

Tetapi, kami kini mempunyai nombor akaun bank antarabangsa piawai - IBAN.

Menjadikannya sangat mudah untuk menghantar wang ke mana-mana sahaja di EU atau di seluruh dunia.

Dan dengan segera SEPA, wang anda tiba dalam beberapa saat.

Tetapi, tetapi IBAN terlalu panjang, mereka hampir menakutkan.

Dan orang ramai terkenal teruk dalam memasukkan bahan, jadi anda boleh gembira jika anda mendapat jumlah yang betul, lupakan nota tambahan.

Semua masalah ini mudah diselesaikan dengan kod QR.

Pelanggan anda boleh mengimbas mereka dengan telefon mereka, menyemak jumlah dan klik bayar dalam apl perbankan mereka.

Dengan senarai bank yang semakin meningkat dalam skim Pemindahan Kredit Segera SEPA, kemungkinan besar, wang anda tiba dalam sekelip mata.

Dalam blog akan datang, kami akan melihat cara melihat pembayaran masuk pada akaun bank anda.

Untuk mengautomasikan penjanaan dan penghantaran invois sebagai contoh.

Biar saya tunjukkan cara menjana kod QR untuk Slovakia dan Republik Czech.

Saya ingin membuat senarai ini lebih panjang, jadi jika anda tahu tentang cara kod QR dibuat di negara anda, sila beritahu saya.

QR Slovakia

Bank Slovakia telah bersetuju dengan standard biasa yang dipanggil Pay by Square.

Malah terdapat skema url yang boleh digunakan dalam senario dalam talian.

Cth. pengguna mengklik pautan dan apl perbankan mereka dilancarkan dengan semua maklumat pembayaran telah diisi.

Malangnya, ini tidak boleh beroperasi (pada 2024).

Biar saya tunjukkan cara menjana kod QR dalam 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);
    }
});

Kaedah jana adalah daripada perpustakaan bysquare.

Anda boleh memasangnya dengan npm seperti biasa npm i bysquare

Untuk mendapatkan imej PNG yang boleh kami gunakan dalam penyemak imbas atau dalam dokumen invois, kami memanggil kaedah seperti ini.

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

Lazimnya sangat membantu untuk menambahkan mesej deskriptif pada pembayaran.

Berikut ialah beberapa kod ringkas yang akan menormalkan nama pelanggan.

Ini akan menghapuskan diakritik, menukar Ján Kováč menjadi Jan Kovac.

Seharusnya masih boleh dibaca dengan sempurna dan akan memastikan sistem bank tidak mengacaukannya.

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

QR Republik Czech

Walaupun Republik Czech atau Czechia setakat ini (2024) menentang euro, mereka juga mempunyai skim kod QR.

Dan mereka juga mempunyai penjana kod bebas royalti yang boleh kami gunakan.
Sekarang, atas sebab keselamatan, anda mungkin masih mahu menjananya sendiri.

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} />
}

antarabangsa

Malangnya, belum ada standard QR antarabangsa atau Eropah.

Jadi anda perlu menunjukkan kod QR yang betul berdasarkan negara pengguna anda.

Jika anda menjangkakan pembayaran daripada Republik Czech, perlu diingat kod QR Czech hanya berfungsi dalam mahkota Czech (mata wang Czech CZK).

Atau jika anda berpangkalan di Republik Czech dan anda menjangkakan pembayaran dari Slovakia, QR hanya berfungsi dalam 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!

Atas ialah kandungan terperinci Dapatkan bayaran dalam QR. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Menguasai Git: Panduan MendalamArtikel seterusnya:Menguasai Git: Panduan Mendalam