「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > QRで支払いを受ける

QRで支払いを受ける

2024 年 8 月 1 日に公開
ブラウズ:163

Get paid in QR

いいえ、ピクセルではなくユーロです。

いいえ、クレジット カードは使用できません。

はい、電話で。

モチベーション

製品やサービスを販売する場合、支払いを受けることは明らかな要件です。

最近では、オンラインでもクレジット カードが王様です。

クレジット カード、Google、Apple Pay を処理できる支払いゲートウェイが豊富にあります。

もちろん有料です。

実店舗では、クレジット カード端末を入手できます。

一部の銀行では、携帯電話を CC 端末に変える Android アプリをはるかに安価で販売できます。

特に 1 日に数回の支払いしか処理しない場合は、検討する価値があります。

これらのオプションは、一般的な消費者シナリオのほぼすべての状況をカバーします。

人がオンラインまたは実店舗にアクセスして、大量の商品を購入したり、散髪をしたりする場所。

しかし、それだけではありません。

  1. 少額の支払いを処理する必要がある非営利団体または市民団体の場合はどうでしょうか。
  2. あなたが B2B 企業で、顧客が直接送金での支払いを希望していない場合はどうしますか。
  3. クレジット カードでの支払いにかかる 2 ~ 3% の諸経費を支払いたくない場合はどうすればよいでしょうか。

これらすべてのケースにおいて、欧州連合における答えは SEPA です。

具体的には、SEPA クレジット転送。

または、より若いですが、はるかに高速な兄弟の SEPA Instant Credit Transfer です。

SEPA 単位転送

名前に詳しくなくても、心配しないでください。これは昔と同じ電信送金です。

例えば。あなたは銀行に、自分の口座からお金を引き出して他の人に入金するように言います。

これまでは紙のフォームに記入する必要がありましたが、最近ではモバイル バンキング アプリで数回クリックするだけで済みます。

しかし、現在では国際銀行口座番号である IBAN が標準化されています。

EU 内または世界中のどこにでも送金することが非常に簡単になります。

SEPA インスタントを使用すると、数秒でお金が届きます。

しかし、しかし、IBAN は非常に長いので、ほとんど恐ろしいものです。

そして、人々は何かを入力するのが苦手であることで有名なので、追加のメモのことは忘れて、適切な量を入力できれば満足できます。

これらの問題はすべて QR コードで簡単に解決できます。

顧客は携帯電話でスキャンして金額を確認し、バンキング アプリで [支払い] をクリックできます。

SEPA インスタント クレジット トランスファー スキームに参加する銀行のリストが増えているため、お金が瞬く間に到着する可能性が高くなります。

今後のブログでは、銀行口座への入金を監視する方法について説明します。

たとえば、請求書の生成と送信を自動化します。

スロバキアとチェコ共和国の QR コードを生成する方法を説明しましょう。

このリストをさらに長くしたいので、あなたの国で QR コードがどのように作られているかをご存知の場合は、お知らせください。

QR スロバキア

スロバキアの銀行は、Pay by Squareと呼ばれる共通基準に合意しました。

オンライン シナリオで使用できる URL スキーマもあります。

例えば。ユーザーがリンクをクリックすると、すべての支払い情報が入力された状態でバンキング アプリが起動します。

残念ながら、これらは相互運用可能ではありません (2024 年には)。

NodeJS で QR コードを生成する方法を説明します。

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で支払いを受ける
}

支払いに説明的なメッセージを追加すると、非常に役立つことがよくあります。

以下はクライアント名を正規化する簡単なコードです。

これにより、発音記号が削除され、Ján KováčJan Kovac になります。

まだ完全に読み取れるはずであり、銀行システムがそれを台無しにしないようにします。

    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 を入力したりするのは非常に面倒です。

お金ですから、細心の注意を払って3回確認しなければならないと考えると、なおさらです。

私たちは生活を楽にするソフトウェアを作っており、支払い用の QR コードはこの目標にぴったりです。

この情報がお役に立てば幸いです。各国の QR コード スキームに関するヒントをお持ちの場合は、ぜひ私なりの方法でお知らせください。

ハッキングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/chuliomartinez_ebd2d8009bdec/get-paid-in-qr-2dkp?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3