Ako pridať QR kód do e-mailu s potvrdením objednávky

Platba bankovým prevodom na účet nepatrí práve k najčastejším využívaným spôsobom platby za tovar na e-shopoch, avšak stále sa nájdu zákazníci, ktorí tento spôsob platby využívajú alebo je tento spôsob platby uprednostňovaný zo strany e-shopu. Aj napriek tomu, platba bankovým prevodom je už štandardom, ktorý by nemal chýbať v žiadnom e-shope. V princípe ide o jednoduchý spôsob úhrady, avšak pri manuálnom zadávaní platobného príkazu môže dôjsť ku chybnému vyplneniu dôležitých údajov, ako sú IBAN, suma alebo variabilný symbol. Mýliť sa je predsa ľudské. A tak je celkom na mieste, aby sme tento spôsob platby zákazníkom zjednodušili, napr. pridaním QR kódu PAY by square.

Vygenerovanie QR kódu

Pre generovanie QR kódu existuje hneď niekoľko spôsobov. My si ukážeme ten najjednoduchší, a to vyuzižitím šikovnej a bezplatnej služby QRgenerator.sk. Vytvorením jednoduchej funkcie s jediným parametrom options, ktoré predstavuje pole s parametrami, zabezpečíme jednoduché a rýchle vygenerovanie QR kódu.

				
					function px_render_qr_code($options)
{
    if (!isset($options["iban"]) || !isset($options["amount"])) {
        return false;
    }
    $url = "https://api.QRGenerator.sk/by-square/pay/qr.png?";
    $url .= http_build_query($options);
    echo '<img decoding="async" style="display:inline-block" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%200%200'%3E%3C/svg%3E" alt="QR kod" data-lazy-src="' . $url . '" /><noscript><img decoding="async" style="display:inline-block" src="' . $url . '" alt="QR kod" /></noscript>';
}
				
			

Parameter iban a amount (suma) sú povinné. Ďalšie parametre, ktoré nie sú povinné avšak je dobré ich použiť sú:

  • currencymena transakcie. default: EUR
  • due_date – dátum splatnosti transakcie, formát yyyy-MM-dd, napr. 2020-12-31
  • vs – variabilný symbol
  • ss – špecifický symbol
  • cs – konštantný symbol
  • payment_note – poznámka k platbe
  • mode – možnosti:
    • full – branding rám okolo QR kódu
    • bottom – branding logo pod QR kódom
    • none – bez brandingu
  • size – veľkost výsledného obrázka, možnosti:
    • 128 – veľkost 128px, default
    • 256 – veľkost 256px
    • 512 – veľkost 512px
  • transparent – priehľadnoť výsledného QR kódu. Možnosti
    • true – priehľadný
    • false – biele pozadie

Výstupom funkcie je QR kód vo formáte png.

Vloženie QR kódu do e-mailu

QR kód pridáme do emailu jednoducho pomocou ďalšej funkcie “px_add_qr_code_to_email”, ktorú spustíme počas action “woocommerce_email_order_details”.

				
					function px_add_qr_code_to_email($order, $sent_to_admin, $plain_text, $email)
{
    $payment_method = $order->get_payment_method();

    if ($email->id === 'customer_on_hold_order' && $payment_method === 'bacs') {

        $bacs_accounts_info = get_option('woocommerce_bacs_accounts');

        if (!empty($bacs_accounts_info)) {

            $iban = $bacs_accounts_info[0]['iban'];

            $optionsQR = [
                'iban' => $iban,
                'amount' => $order->get_total(),
                'currency' => $order->get_currency(),
                'vs' => $order->get_id(),
                'cs' => '0008',
                'ss' => '5',
                'due_date' => date("Y-m-d"),
                'size' => '128',
                'transparent' => 'false',
            ];

            px_render_qr_code($optionsQR);
        }

    }

}

add_action('woocommerce_email_order_details', 'px_add_qr_code_to_email', 10, 4);
				
			

Prvou podmienkou funkcie je, aby sa QR kód vygeneroval a zobrazil iba v emaily pre zákazníka s potvrdením objednávky (customer_on_hold_order) a so spôsobom platby bankový prevod (bacs). Ak je tento spôsob platby k dispozíciií, v administrácii Woocommerce by nemal chýbať minimálne jeden bankový účet. Pomocou option „woocommerce_bacs_accounts“ získame údaje o bankových účtoch. Overíme či tieto údaje nie sú prázdne a vyberieme z nich prvý účet. Z tohto účtu použijeme IBAN ako jeden z povinných parametrov našej funkcie. Sumu, menu a variabilný symbol získame z údajov objednávky. Splatnosť platby môžeme ponechať na deň vytvorenia objednávky.

A tu je výsledok:

Vloženie QR kódu do faktúry

Na záver by som chcel ešte dodať, že podobne jednoducho vieme pridať QR kód aj do faktúry pri použítí bezplatného pluginu WooCommerce PDF Invoices & Packing Slips.

				
					add_action( 'wpo_wcpdf_after_order_details', 'px_add_qr_code_to_invoice', 10, 2);

function px_add_qr_code_to_invoice($type, $order) {

    $bacs_accounts_info = get_option('woocommerce_bacs_accounts');

    if (!empty($bacs_accounts_info) && $type == "invoice") {

        $iban = $bacs_accounts_info[0]['iban'];

        $optionsQR = [
            'iban' => $iban,
            'amount' => $order->get_total(),
            'currency' => $order->get_currency(),
            'vs' => $order->get_id(),
            'cs' => '0008',
            'ss' => '5',
            'due_date' => date("Y-m-d"),
            'size' => '128',
            'transparent' => 'false',
        ];

        px_render_qr_code($optionsQR);
    }
}
				
			
Roman Kraiger

Roman Kraiger

Zakladateľ agentúry Pixeler, vášnivý cyklista, programátor a občasný bloger.

Páčil sa Vám tento článok?

Odmeňte ho páčikom.

alebo ho zdieľajte medzi priateľmi na:

2 Odpovede

  1. dobry den,

    pokusam sa implementovat QR kod do faktury, mam kupenu PRO verziu “WooCommerce PDF Invoices & Packing Slips.”. kod som zapisal do function.php ale QR kod sa negeneruje. co robim zle? bol by nejaky podrobnejsi postup implementacie?

    dakujem za odpoved 🙂

    1. Dobrý deň,

      skúste prosím overiť v nastaveniach WooCommerce, či máte pri spôsobe platby Bankový prevod zadaný aspoň jeden bankový účet, keďže to je podmienka pre vygenerovanie QR kódu.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *