Skip to content

Instantly share code, notes, and snippets.

View NiklasHogefjord's full-sized avatar

Niklas Högefjord NiklasHogefjord

View GitHub Profile
@NiklasHogefjord
NiklasHogefjord / wc-klarna-show-refunded-status.php
Created April 15, 2016 06:50
Display "Refunded" as an order status in the dropdown for KCO orders. This is removed by the Klarna extension by default.
<?php
/**
* Display "Refunded" as an order status in the dropdown for KCO orders.
* This is removed by the Klarna extension by default because Klarna wants
* the refunds to be handled in WooCommerce and Klarna at the same time.
**/
add_filter( 'klarna_checkout_hide_refunded_status', '__return_false' );
@NiklasHogefjord
NiklasHogefjord / wc-klarna-send-extra-merchant-data.php
Last active July 13, 2016 09:01
Makes it possible for merchants to sent specific information about products or customers, in Klarna checkout orders, that Klarna might require. Use this code in a separate plugin or via your themes functions.php
<?php
/**
* WooCommerce - Klarna payment gateway (Klarna Checkout)
* Filter Create order & Update order for adding EMD (Extra Merchant Data) sent to Klarna.
*
* Learn more about available attatchmenat types here: https://developers.klarna.com/en/no/kco-v2/checkout-api/attachments
**/
// New order ($create)
add_filter('kco_create_order', 'my_kco_create_order');
@NiklasHogefjord
NiklasHogefjord / wc-klarna-change-mandatory-fields-and-fetch-order-data-php
Last active January 8, 2018 13:26
Filter Create order & Update order sent to Klarna to change mandatory fields in the checkout iframe (Date of birth & Title). Also fetching order data returned from Klarna after a successful payment and updating the local WooCommerce order.
<?php
/**
* WooCommerce - Klarna payment gateway (Klarna Checkout)
* Filter Create order & Update order sent to Klarna to change mandatory fields in the checkout iframe (Date of birth & Title).
* Also fetching order data returned from Klarna after a successful payment and updating the local WooCommerce order.
*
* Learn more about available params in order object sent to Klarna here:
* V2 - https://developers.klarna.com/en/se/kco-v2/checkout-api
* V3 - https://developers.klarna.com/api/#checkout-api
*
<?php
/**
* Filter hook wc_specter_send_order_data
* Modify order data sent to Specter on new order submission.
*
**/
add_filter( 'wc_specter_send_order_data', 'my_wc_specter_send_order_data', 10, 2 );
function my_wc_specter_send_order_data( $params, $order ) {
@NiklasHogefjord
NiklasHogefjord / wc-specter-send-custom-product-data.php
Last active November 11, 2016 08:08
Modify the product data sent to Specter when saving a product in WooCommerce. Product sync WooCommerce to Specter must be activated in the Specter plugin settings.
<?php
add_filter( 'wc_specter_send_custom_product_data', 'my_custom_product_data', 10, 3 );
function my_custom_product_data( $params, $product, $is_variation = false ) {
/**
* $params is the product data stored as an array.
* $product is the product object. Product variation object if this is a product variation.
* $is_variation is true/false depending on if this is a product variation or not.
*/
@NiklasHogefjord
NiklasHogefjord / wc-trim-zeros-in-price-decimals.php
Created November 14, 2016 14:20
Add this code in your themes functions.php or as a separate plugin.
<?php
/**
* Trim zeros in price decimals in WooCommerce.
* For instance $200.00 is displayed as $200.
**/
add_filter( 'woocommerce_price_trim_zeros', '__return_true' );
add_filter( 'woocommerce_get_checkout_url', 'krokedil_change_checkout_url', 30 );
function krokedil_change_checkout_url( $url ) {
$allowed_countries = array( 'SE', 'NO', 'FI', 'DE', 'DK', 'AT', 'UK', 'US' );
$customer_country = WC()->customer->shipping_country;
if( !in_array( $customer_country , $allowed_countries ) ) {
$url = wc_get_page_permalink( 'checkout' );
}
return $url;
/**
* WooCommerce - Klarna payment gateway
* Filter Create order for making date of birth a mandatory field in Klarna Checkout iframe.
**/
// New order ($create)
add_filter('kco_create_order', 'my_kco_create_order');
function my_kco_create_order( $create ) {
$create['options']['national_identification_number_mandatory'] = true;
@NiklasHogefjord
NiklasHogefjord / wc-kco-validate-customer-age.php
Last active January 8, 2018 16:18
Code example on how to only accept purchases from people over 18 years of age with Klarna Checkout and WooCommerce
<?php
/**
* WooCommerce - Klarna payment gateway
* Only accept purchases from customer over 18 years of age.
**/
// Edit the order data sent to Klarna to make 'Date of birth' a mandatory field in the KCO iframe
add_filter('kco_create_order', 'my_kco_create_order');
function my_kco_create_order( $create ) {
$create['options']['national_identification_number_mandatory'] = true;
@NiklasHogefjord
NiklasHogefjord / wc-kco-change-klarna-country.php
Created July 24, 2017 10:07
Filter country sent to Klarna to modify which checkout iframe should be displayed for the customer. This could be useful when selling to multiple Euro-countries (Finland, Germany, Netherlands, Austria) and have a separate plugin for the customer so select their shipping country (or have Geo location enabled). In this case you don't have to use t…
<?php
/**
* WooCommerce - Klarna payment gateway
* Filter the country sent to Klarna.
**/
add_filter( 'klarna_country', 'my_klarna_country' );
function my_klarna_country( $country ) {
if( WC()->customer ) {
if ( 'EUR' == get_woocommerce_currency() ) {