Skip to content

Instantly share code, notes, and snippets.

@david-strejc
Last active May 9, 2022 07:32
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save david-strejc/2b31accfdd1615bf1527c1cd8afd8eba to your computer and use it in GitHub Desktop.
Save david-strejc/2b31accfdd1615bf1527c1cd8afd8eba to your computer and use it in GitHub Desktop.
add_action('woocommerce_thankyou_bacs', 'wpd_qr_code', 10, 1 );
function wpd_qr_code( $order_id ) {
$order = wc_get_order( $order_id );
$bacs_info = get_option( 'woocommerce_bacs_accounts');
echo "<div style='display: grid; grid-template-columns: auto auto auto;'>";
foreach ($bacs_info as $info ) {
$account = explode( "/", $info['account_number']) ? explode( "/", $bacs_info[0]['account_number']) : null ;
if (! $account) {
return;
}
$currency = $info['account_name'];
$bank_name = $info['bank_name'];
$account_number = $account[0] ;
$bank_code = $account[1];
$amount = $order->get_total();
$variable_symbol = $order->get_id();
$message = get_bloginfo('name');
echo '<div style="margin-bottom: 30px;">';
echo '<h3>';
echo $currency;
echo '</h3>';
echo '<h4>';
echo $account_number;
echo '</h4>';
echo '<h5>';
echo $bank_name;
echo '</h5>';
echo '<img src="//api.paylibo.com/paylibo/generator/czech/image?accountNumber=' . $account_number
. '&bankCode=' . $bank_code
. '&amount=' . $amount
. '&currency=' . $currency
. '&vs=' . $variable_symbol
. '&message=' . $message . '" />';
echo '</div>';
}
echo '</div>';
}
add_action( 'woocommerce_email_after_order_table', 'wpd_qr_email', 15 );
function wpd_qr_email( $order ) {
if ($order->get_payment_method() != 'bacs') {
return;
}
$bacs_info = get_option( 'woocommerce_bacs_accounts');
$account = explode( "/", $bacs_info[0]['account_number']) ? explode( "/", $bacs_info[0]['account_number']) : null ;
if (! $account) {
return;
}
echo "<div style='display: grid; grid-template-columns: auto auto auto;'>";
foreach ($bacs_info as $info ) {
$account = explode( "/", $info['account_number']) ? explode( "/", $bacs_info[0]['account_number']) : null ;
if (! $account) {
return;
}
$currency = $info['account_name'];
$bank_name = $info['bank_name'];
$account_number = $account[0] ;
$bank_code = $account[1];
$amount = $order->get_total();
$variable_symbol = $order->get_id();
$message = get_bloginfo('name');
echo '<div style="margin-bottom: 30px;">';
echo '<h3>';
echo $currency;
echo '</h3>';
echo '<h4>';
echo $account_number;
echo '</h4>';
echo '<h5>';
echo $bank_name;
echo '</h5>';
echo '<img src="//api.paylibo.com/paylibo/generator/czech/image?accountNumber=' . $account_number
. '&bankCode=' . $bank_code
. '&amount=' . $amount
. '&currency=' . $currency
. '&vs=' . $variable_symbol
. '&message=' . $message . '" />';
echo '</div>';
}
echo '</div>';
}
@david-strejc
Copy link
Author

Je potřeba mít číslo účtu ve tvaru "049843908/0944" - číslo účtu / banka.

@zurivy-myval
Copy link

zurivy-myval commented Apr 11, 2020

$amount = $order->get_total();
Já vím,že to je hook, takže by jste měl dostávat relevantní data do toho filtru ale stejně bych dal nějakou kontrolu nebo alespoň try and catch toho,že order je objekt a že explody fungují jak mají. Vy tam ani nekontrolujete jestli array key existuje a mohlo by to házet undefined offset.

Jinak ale pěkná práce

@david-strejc
Copy link
Author

$amount = $order->get_total();
Já vím,že to je hook, takže by jste měl dostávat relevantní data do toho filtru ale stejně bych dal nějakou kontrolu nebo alespoň try and catch toho,že order je objekt a že explody fungují jak mají. Vy tam ani nekontrolujete jestli array key existuje a mohlo by to házet undefined offset.

Jinak ale pěkná práce

Ja jsem psal, ze je to "quick and dirty" - ve woo neni potreba psat ucet ve formatu "ucet"/"kod" - melo by to mit vlastni config popripade je treba obohacovat WooCommerce Bank Accounty o bank account info a tak dale - neni tam foreach pro vic bank accountu, nejsou tam meny. Je to PoC.

@david-strejc
Copy link
Author

$amount = $order->get_total();
Já vím,že to je hook, takže by jste měl dostávat relevantní data do toho filtru ale stejně bych dal nějakou kontrolu nebo alespoň try and catch toho,že order je objekt a že explody fungují jak mají. Vy tam ani nekontrolujete jestli array key existuje a mohlo by to házet undefined offset.

Jinak ale pěkná práce

Jinak tam toho samozrejme chybi mnohem vic - kontrola, ze je to pro BACS only a tak dale.

@david-strejc
Copy link
Author

acc
Settings (hack).

@jakubkasparek
Copy link

Komerční banky vyžaduje předčíslí (příklad. 107-9055200297/0100) tz. s timto hookem nefunguje :( škoda.

@uhlhosting
Copy link

Je to stale funkcni?

@uhlhosting
Copy link

Zatim vyzera ze ano, jedinej problem je ze na emailovy sablon tam se nedokaze ten QR pro platbu

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment