"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Recibe pagos en QR

Recibe pagos en QR

Publicado el 2024-08-01
Navegar:831

Get paid in QR

No, no en píxeles, en euros.

No, no con tarjeta de crédito.

Sí con teléfono.

Motivación

Si vendes productos o servicios, recibir un pago es un requisito obvio.

Hoy en día, la tarjeta de crédito es la reina, al menos online.

Tiene una gran cantidad de pasarelas de pago que manejarán tarjetas de crédito, Google o Apple Pay por usted.

Por una cuota, por supuesto.

En una tienda física, obtendrías un terminal de tarjeta de crédito.

Algunos bancos pueden venderte una aplicación para Android mucho más económica que convierte tu teléfono en una terminal CC.

Vale la pena considerarlo, especialmente si procesa solo unos pocos pagos al día.

Estas opciones cubren casi todas las situaciones en escenarios típicos de consumo.

Cuando una persona se conecta a Internet o entra a una tienda física y compra un montón de productos o se corta el pelo.

Pero hay mucho más.

  1. ¿Qué sucede si usted es una organización ciudadana o sin fines de lucro que necesita procesar pagos pequeños?
  2. ¿Qué pasa si eres una empresa B2B y tus clientes no quieren pagar con transferencias directas?
  3. ¿O qué pasa si simplemente no quieres pagar los gastos generales de ~2-3% por los pagos con tarjeta de crédito?

En todos estos casos la respuesta, en la Unión Europea, es SEPA.

Más específicamente, Transferencia de crédito SEPA.

O su hermana menor, pero mucho más rápida, Transferencia de crédito instantánea SEPA.

Transferencia de crédito SEPA

Si no estás familiarizado con el nombre, no te preocupes, es la misma transferencia bancaria de siempre.

P.ej. le dices a tu banco que saque dinero de tu cuenta y lo deposite en otra persona.

Lo que históricamente era un formulario en papel para completar, hoy en día son un par de clics en su aplicación de banca móvil.

Pero ahora tenemos números de cuentas bancarias internacionales estandarizados: IBAN.

Haciendo que sea muy fácil enviar dinero a cualquier parte de la UE o incluso a todo el mundo.

Y con SEPA instantáneo, tu dinero llega en segundos.

Pero, pero los IBAN son tan largos que casi dan miedo.

Y la gente es notoriamente mala ingresando cosas, por lo que puedes estar feliz si obtienes la cantidad correcta, olvídate de las notas adicionales.

Todos estos problemas se resuelven fácilmente con códigos QR.

Tus clientes pueden escanearlos con sus teléfonos, verificar el monto y hacer clic en pagar en su aplicación bancaria.

Con la creciente lista de bancos en el esquema de transferencia de crédito instantánea SEPA, hay muchas posibilidades de que su dinero llegue en un abrir y cerrar de ojos.

En un blog futuro, veremos cómo estar atento a los pagos entrantes en su cuenta bancaria.

Para automatizar la generación y envío de facturas, por ejemplo.

Déjame mostrarte cómo generar códigos QR para Eslovaquia y la República Checa.

Quiero hacer esta lista más larga, así que si sabes cómo se crean los códigos QR en tu país, házmelo saber.

QR Eslovaquia

Los bancos eslovacos han acordado un estándar común llamado Pay by Square.

Incluso existe un esquema de URL que se puede utilizar en escenarios en línea.

P.ej. el usuario hace clic en un enlace y se inicia su aplicación bancaria con toda la información de pago completada.

Lamentablemente, estos no son interoperables (en 2024).

Déjame mostrarte cómo generar el código QR en 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);
    }
});

El método de generación es de la biblioteca bysquare.

Puedes instalarlo con npm como de costumbre npm i bysquare

Para obtener una imagen PNG que podamos usar en el navegador o en un documento de factura, llamamos al método así.

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 Recibe pagos en QR
}

A menudo resulta muy útil agregar un mensaje descriptivo al pago.

Aquí hay un código simple que normalizará los nombres de los clientes.

Esto eliminará los signos diacríticos, convirtiendo a Ján Kováč en Jan Kovac.

Debería seguir siendo perfectamente legible y garantizará que los sistemas bancarios no lo estropeen.

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

QR República Checa

Aunque la República Checa o Chequia hasta ahora (2024) se han resistido al euro, también tienen un esquema de códigos QR.

E incluso tienen un generador de código libre de regalías que podemos usar.
Ahora, por razones de seguridad, es posible que quieras generarlo tú mismo.

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

const CzQrImage = (czQrLink: string) => {
    return Recibe pagos en QR
}

Internacional

Lamentablemente, todavía no existe un estándar QR internacional o europeo.

Por lo tanto, deberá mostrar el código QR correcto según el país de su usuario.

Si espera pagos desde la República Checa, tenga en cuenta que los códigos QR checos solo funcionan en coronas checas (moneda checa CZK).

O si reside en la República Checa y espera pagos desde Eslovaquia, el QR solo funciona en euros.

El siguiente código puede ayudarle a calcular la cantidad de moneda correcta.

Primero obtenemos el tipo de cambio de referencia actual del banco central.

Luego calculamos los precios en euros y coronas checas, según el precio del producto y la moneda.

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

Recibir el pago

Intentar leer los IBAN mal impresos de las facturas o incluso escribir los IBAN terriblemente largos es muy molesto.

Que hay que tener mucho cuidado y comprobar tres veces, porque es dinero, lo hace aún más.

Creamos software para hacernos la vida más fácil y los códigos QR para pagos se ajustan muy bien a este objetivo.

Espero que la información te haya resultado útil y, si tienes algunos consejos sobre tus esquemas nacionales de códigos QR, por favor envíamelos.

¡Feliz pirateo!

Declaración de liberación Este artículo se reproduce en: https://dev.to/chuliomartinez_ebd2d8009bdec/get-paid-in-qr-2dkp?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3